diff --git a/.changeset/wise-buttons-act.md b/.changeset/wise-buttons-act.md
new file mode 100644
index 0000000000..f318b9a370
--- /dev/null
+++ b/.changeset/wise-buttons-act.md
@@ -0,0 +1,19 @@
+---
+"@gradio/audio": patch
+"@gradio/build": patch
+"@gradio/button": patch
+"@gradio/chatbot": patch
+"@gradio/core": patch
+"@gradio/dataframe": patch
+"@gradio/lite": patch
+"@gradio/plot": patch
+"@gradio/spa": patch
+"@gradio/storybook": patch
+"@gradio/video": patch
+"@gradio/wasm": patch
+"app": patch
+"gradio": patch
+"website": patch
+---
+
+feat:Initial SSR refactor
diff --git a/.config/.prettierignore b/.config/.prettierignore
index 5d6bc02f33..aeb550d7b8 100644
--- a/.config/.prettierignore
+++ b/.config/.prettierignore
@@ -18,7 +18,7 @@
**/.mypy_cache/**
!test-strategy.md
**/js/_space-test/**
-../js/app/src/lite/theme.css
+../js/lite/src/theme.css
../js/storybook/theme.css
**/gradio_cached_examples/**
**/storybook-static/**
diff --git a/.config/.prettierrc.json b/.config/.prettierrc.json
index 0e8b0ad886..4e22682cf5 100644
--- a/.config/.prettierrc.json
+++ b/.config/.prettierrc.json
@@ -3,5 +3,6 @@
"singleQuote": false,
"trailingComma": "none",
"printWidth": 80,
- "plugins": ["prettier-plugin-svelte"]
+ "plugins": ["prettier-plugin-svelte"],
+ "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
}
diff --git a/.config/eslint.config.js b/.config/eslint.config.js
index 91f8b304a2..d641d4256a 100644
--- a/.config/eslint.config.js
+++ b/.config/eslint.config.js
@@ -70,7 +70,7 @@ export default [
"**/*.spec.ts",
"**/*.test.ts",
"**/*.node-test.ts",
- "js/app/test/**/*",
+ "js/spa/test/**/*",
"**/*vite.config.ts",
"**/_website/**/*",
"**/_spaces-test/**/*",
diff --git a/.config/playwright-setup.js b/.config/playwright-setup.js
index a3fffc09a4..8ec01138ed 100644
--- a/.config/playwright-setup.js
+++ b/.config/playwright-setup.js
@@ -8,7 +8,7 @@ import kl from "kleur";
const __dirname = fileURLToPath(new URL(".", import.meta.url));
const TEST_APP_PATH = join(__dirname, "./test.py");
-const TEST_FILES_PATH = join(__dirname, "..", "js", "app", "test");
+const TEST_FILES_PATH = join(__dirname, "..", "js", "spa", "test");
const ROOT = join(__dirname, "..");
const test_files = readdirSync(TEST_FILES_PATH)
diff --git a/.config/vitest.config.ts b/.config/vitest.config.ts
index 9de93ad0ec..be7741d0a2 100644
--- a/.config/vitest.config.ts
+++ b/.config/vitest.config.ts
@@ -1,3 +1,3 @@
-import config from "../js/app/vite.config";
+import config from "../js/spa/vite.config";
export default config;
diff --git a/.github/actions/install-frontend-deps/action.yml b/.github/actions/install-frontend-deps/action.yml
index f2d714033d..07f726b978 100644
--- a/.github/actions/install-frontend-deps/action.yml
+++ b/.github/actions/install-frontend-deps/action.yml
@@ -48,4 +48,4 @@ runs:
run: |
. venv/bin/activate
python -m pip install -U build hatch packaging>=23.2 # packaging>=23.2 is needed to build Lite due to https://github.com/pypa/hatch/issues/1381
- pnpm --filter @gradio/app build:lite
+ pnpm --filter @gradio/lite build
diff --git a/.github/workflows/test-functional-lite.yml b/.github/workflows/test-functional-lite.yml
index 2cefe198b1..f9b7d6d387 100644
--- a/.github/workflows/test-functional-lite.yml
+++ b/.github/workflows/test-functional-lite.yml
@@ -53,7 +53,7 @@ jobs:
- name: Run Lite E2E tests
run: |
. venv/bin/activate
- pnpm --filter @gradio/app test:browser:lite
+ pnpm --filter @gradio/lite test:browser
- name: Get the performance result
run: |
export LITE_APP_LOAD_TIME=$(jq -r '.app_load_time' .lite-perf.json)
diff --git a/.github/workflows/trigger-changeset.yml b/.github/workflows/trigger-changeset.yml
index ffad71ed42..7b6c201bda 100644
--- a/.github/workflows/trigger-changeset.yml
+++ b/.github/workflows/trigger-changeset.yml
@@ -4,6 +4,7 @@ on:
types: [opened, synchronize, reopened, edited, labeled, unlabeled]
branches:
- main
+ - 5.0-dev
issue_comment:
types: [edited]
diff --git a/.gitignore b/.gitignore
index 982d4ffc86..683223f124 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,12 +8,15 @@ __pycache__/
*.py[cod]
*$py.class
build/
+!js/build/
+!js/build/dist/
__tmp/*
*.pyi
!gradio/stubs/**/*.pyi
py.typed
.ipynb_checkpoints/
.python-version
+=23.2
# JS build
gradio/templates/*
@@ -38,6 +41,8 @@ coverage.xml
test.txt
**/snapshots/**/*.png
playwright-report/
+.hypothesis
+.lite-perf.json
# Demos
demo/tmp.zip
diff --git a/.vscode/settings.json b/.vscode/settings.json
index e6ea6a28fb..f0632753d2 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -21,6 +21,6 @@
},
"typescript.tsdk": "node_modules/typescript/lib",
"i18n-ally.localesPaths": [
- "js/app/src/lang"
+ "js/spa/src/lang"
]
}
diff --git a/=23.2 b/=23.2
deleted file mode 100644
index 4b0ecdffc0..0000000000
--- a/=23.2
+++ /dev/null
@@ -1,49 +0,0 @@
-Requirement already satisfied: build in ./venv/lib/python3.8/site-packages (1.2.1)
-Requirement already satisfied: hatch in ./venv/lib/python3.8/site-packages (1.12.0)
-Requirement already satisfied: packaging in ./venv/lib/python3.8/site-packages (24.1)
-Requirement already satisfied: pyproject_hooks in ./venv/lib/python3.8/site-packages (from build) (1.0.0)
-Requirement already satisfied: importlib-metadata>=4.6 in ./venv/lib/python3.8/site-packages (from build) (7.0.1)
-Requirement already satisfied: tomli>=1.1.0 in ./venv/lib/python3.8/site-packages (from build) (2.0.1)
-Requirement already satisfied: click>=8.0.6 in ./venv/lib/python3.8/site-packages (from hatch) (8.1.7)
-Requirement already satisfied: hatchling>=1.24.2 in ./venv/lib/python3.8/site-packages (from hatch) (1.24.2)
-Requirement already satisfied: httpx>=0.22.0 in ./venv/lib/python3.8/site-packages (from hatch) (0.27.0)
-Requirement already satisfied: hyperlink>=21.0.0 in ./venv/lib/python3.8/site-packages (from hatch) (21.0.0)
-Requirement already satisfied: keyring>=23.5.0 in ./venv/lib/python3.8/site-packages (from hatch) (25.2.0)
-Requirement already satisfied: pexpect~=4.8 in ./venv/lib/python3.8/site-packages (from hatch) (4.8.0)
-Requirement already satisfied: platformdirs>=2.5.0 in ./venv/lib/python3.8/site-packages (from hatch) (4.2.1)
-Requirement already satisfied: rich>=11.2.0 in ./venv/lib/python3.8/site-packages (from hatch) (13.7.0)
-Requirement already satisfied: shellingham>=1.4.0 in ./venv/lib/python3.8/site-packages (from hatch) (1.5.4)
-Requirement already satisfied: tomli-w>=1.0 in ./venv/lib/python3.8/site-packages (from hatch) (1.0.0)
-Requirement already satisfied: tomlkit>=0.11.1 in ./venv/lib/python3.8/site-packages (from hatch) (0.12.0)
-Requirement already satisfied: userpath~=1.7 in ./venv/lib/python3.8/site-packages (from hatch) (1.9.2)
-Requirement already satisfied: uv>=0.1.35 in ./venv/lib/python3.8/site-packages (from hatch) (0.1.42)
-Requirement already satisfied: virtualenv>=20.26.1 in ./venv/lib/python3.8/site-packages (from hatch) (20.26.1)
-Requirement already satisfied: zstandard<1 in ./venv/lib/python3.8/site-packages (from hatch) (0.22.0)
-Requirement already satisfied: pathspec>=0.10.1 in ./venv/lib/python3.8/site-packages (from hatchling>=1.24.2->hatch) (0.12.1)
-Requirement already satisfied: pluggy>=1.0.0 in ./venv/lib/python3.8/site-packages (from hatchling>=1.24.2->hatch) (1.0.0)
-Requirement already satisfied: trove-classifiers in ./venv/lib/python3.8/site-packages (from hatchling>=1.24.2->hatch) (2024.4.10)
-Requirement already satisfied: anyio in ./venv/lib/python3.8/site-packages (from httpx>=0.22.0->hatch) (3.6.1)
-Requirement already satisfied: certifi in ./venv/lib/python3.8/site-packages (from httpx>=0.22.0->hatch) (2022.6.15)
-Requirement already satisfied: httpcore==1.* in ./venv/lib/python3.8/site-packages (from httpx>=0.22.0->hatch) (1.0.5)
-Requirement already satisfied: idna in ./venv/lib/python3.8/site-packages (from httpx>=0.22.0->hatch) (3.3)
-Requirement already satisfied: sniffio in ./venv/lib/python3.8/site-packages (from httpx>=0.22.0->hatch) (1.2.0)
-Requirement already satisfied: h11<0.15,>=0.13 in ./venv/lib/python3.8/site-packages (from httpcore==1.*->httpx>=0.22.0->hatch) (0.14.0)
-Requirement already satisfied: zipp>=0.5 in ./venv/lib/python3.8/site-packages (from importlib-metadata>=4.6->build) (3.17.0)
-Requirement already satisfied: jaraco.classes in ./venv/lib/python3.8/site-packages (from keyring>=23.5.0->hatch) (3.4.0)
-Requirement already satisfied: jaraco.functools in ./venv/lib/python3.8/site-packages (from keyring>=23.5.0->hatch) (4.0.1)
-Requirement already satisfied: jaraco.context in ./venv/lib/python3.8/site-packages (from keyring>=23.5.0->hatch) (5.3.0)
-Requirement already satisfied: importlib-resources in ./venv/lib/python3.8/site-packages (from keyring>=23.5.0->hatch) (6.1.1)
-Requirement already satisfied: SecretStorage>=3.2 in ./venv/lib/python3.8/site-packages (from keyring>=23.5.0->hatch) (3.3.3)
-Requirement already satisfied: jeepney>=0.4.2 in ./venv/lib/python3.8/site-packages (from keyring>=23.5.0->hatch) (0.8.0)
-Requirement already satisfied: ptyprocess>=0.5 in ./venv/lib/python3.8/site-packages (from pexpect~=4.8->hatch) (0.7.0)
-Requirement already satisfied: markdown-it-py>=2.2.0 in ./venv/lib/python3.8/site-packages (from rich>=11.2.0->hatch) (3.0.0)
-Requirement already satisfied: pygments<3.0.0,>=2.13.0 in ./venv/lib/python3.8/site-packages (from rich>=11.2.0->hatch) (2.17.2)
-Requirement already satisfied: typing-extensions<5.0,>=4.0.0 in ./venv/lib/python3.8/site-packages (from rich>=11.2.0->hatch) (4.9.0)
-Requirement already satisfied: distlib<1,>=0.3.7 in ./venv/lib/python3.8/site-packages (from virtualenv>=20.26.1->hatch) (0.3.8)
-Requirement already satisfied: filelock<4,>=3.12.2 in ./venv/lib/python3.8/site-packages (from virtualenv>=20.26.1->hatch) (3.15.3)
-Requirement already satisfied: mdurl~=0.1 in ./venv/lib/python3.8/site-packages (from markdown-it-py>=2.2.0->rich>=11.2.0->hatch) (0.1.2)
-Requirement already satisfied: cryptography>=2.0 in ./venv/lib/python3.8/site-packages (from SecretStorage>=3.2->keyring>=23.5.0->hatch) (42.0.5)
-Requirement already satisfied: more-itertools in ./venv/lib/python3.8/site-packages (from jaraco.classes->keyring>=23.5.0->hatch) (10.2.0)
-Requirement already satisfied: backports.tarfile in ./venv/lib/python3.8/site-packages (from jaraco.context->keyring>=23.5.0->hatch) (1.1.1)
-Requirement already satisfied: cffi>=1.12 in ./venv/lib/python3.8/site-packages (from cryptography>=2.0->SecretStorage>=3.2->keyring>=23.5.0->hatch) (1.16.0)
-Requirement already satisfied: pycparser in ./venv/lib/python3.8/site-packages (from cffi>=1.12->cryptography>=2.0->SecretStorage>=3.2->keyring>=23.5.0->hatch) (2.22)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0db210a1ea..47d8976c17 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -133,7 +133,7 @@ bash scripts/run_all_tests.sh
pnpm test
```
-- Browser tests are located in `js/app/test` and are defined as `*spec.ts` files. To run browser tests:
+- Browser tests are located in `js/spa/test` and are defined as `*spec.ts` files. To run browser tests:
```
pnpm test:browser
@@ -257,7 +257,7 @@ bash scripts/run_lite.sh
If you make changes to the Python code during development, you will need to rebuild the Python packages loaded to Graio-Lite. To do this, run:
```
-pnpm --filter @gradio/app pybuild
+pnpm --filter @gradio/lite pybuild
```
To generate the release build, run:
@@ -309,7 +309,7 @@ Verify that you've used the correct filename of your gradio app, and that you're
---
-```ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL @gradio/app@1.0.0 build:local: vite build --mode production:local --emptyOutDir "--emptyOutDir"```
+```ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL @gradio/spa@1.0.0 build:local: vite build --mode production:local --emptyOutDir "--emptyOutDir"```
Delete `/node_modules` and `pnpm-lock.yaml`:
diff --git a/gradio/hash_seed.txt b/gradio/hash_seed.txt
deleted file mode 100644
index 705dc5d29f..0000000000
--- a/gradio/hash_seed.txt
+++ /dev/null
@@ -1 +0,0 @@
-f7311342c5e04ba58dd320ef66cfecd0
\ No newline at end of file
diff --git a/js/_website/vite.config.ts b/js/_website/vite.config.ts
index 70b30b3601..14762ec0f6 100644
--- a/js/_website/vite.config.ts
+++ b/js/_website/vite.config.ts
@@ -1,7 +1,8 @@
import { sveltekit } from "@sveltejs/kit/vite";
import { defineConfig } from "vite";
-import { inject_component_loader } from "../app/build_plugins";
+import { inject_component_loader } from "../build/dist/index.js";
+//@ts-ignore
export default defineConfig(({ mode }) => ({
plugins: [sveltekit(), inject_component_loader({ mode })]
}));
diff --git a/js/_website/vite.config.ts.timestamp-1721955124085-e178b44edfdf6.mjs b/js/_website/vite.config.ts.timestamp-1721955124085-e178b44edfdf6.mjs
deleted file mode 100644
index 983167bb58..0000000000
--- a/js/_website/vite.config.ts.timestamp-1721955124085-e178b44edfdf6.mjs
+++ /dev/null
@@ -1,159 +0,0 @@
-// vite.config.ts
-import { sveltekit } from "file:///Users/aliabdalla/Documents/dev/gradio/node_modules/.pnpm/@sveltejs+kit@2.5.7_@sveltejs+vite-plugin-svelte@3.1.0_svelte@4.2.15_vite@5.2.11_@types+node@_2u6hychzf2d76zlobih55fgrzy/node_modules/@sveltejs/kit/src/exports/vite/index.js";
-import { defineConfig } from "file:///Users/aliabdalla/Documents/dev/gradio/node_modules/.pnpm/vite@5.2.11_@types+node@20.12.8_lightningcss@1.24.1_sass@1.66.1_stylus@0.63.0_sugarss@4.0.1_postcss@8.4.38_/node_modules/vite/dist/node/index.js";
-
-// ../app/build_plugins.ts
-import { parse } from "file:///Users/aliabdalla/Documents/dev/gradio/node_modules/.pnpm/node-html-parser@6.1.13/node_modules/node-html-parser/dist/index.js";
-import { join } from "path";
-import * as url from "url";
-import { readdirSync, existsSync, readFileSync, statSync } from "fs";
-var __vite_injected_original_import_meta_url =
- "file:///Users/aliabdalla/Documents/dev/gradio/js/app/build_plugins.ts";
-var __filename = url.fileURLToPath(__vite_injected_original_import_meta_url);
-var __dirname = url.fileURLToPath(
- new URL(".", __vite_injected_original_import_meta_url)
-);
-function get_export_path(path, root, pkg_json) {
- if (!pkg_json.exports) return void 0;
- const _path = join(root, "..", `${pkg_json.exports[`${path}`]}`);
- return existsSync(_path) ? _path : void 0;
-}
-var ignore_list = [
- "tootils",
- "_cdn-test",
- "_spaces-test",
- "_website",
- "app",
- "atoms",
- "fallback",
- "icons",
- "lite",
- "preview",
- "simpledropdown",
- "simpleimage",
- "simpletextbox",
- "storybook",
- "theme",
- "timeseries",
- "tooltip",
- "upload",
- "utils",
- "wasm"
-];
-function generate_component_imports() {
- const exports = readdirSync(join(__dirname, ".."))
- .map((dir) => {
- if (ignore_list.includes(dir)) return void 0;
- if (!statSync(join(__dirname, "..", dir)).isDirectory()) return void 0;
- const package_json_path = join(__dirname, "..", dir, "package.json");
- if (existsSync(package_json_path)) {
- const package_json = JSON.parse(
- readFileSync(package_json_path, "utf8")
- );
- const component = get_export_path(".", package_json_path, package_json);
- const example = get_export_path(
- "./example",
- package_json_path,
- package_json
- );
- const base = get_export_path("./base", package_json_path, package_json);
- if (!component && !example) return void 0;
- return {
- name: package_json.name,
- component,
- example,
- base
- };
- }
- return void 0;
- })
- .filter((x) => x !== void 0);
- const imports = exports.reduce((acc, _export) => {
- if (!_export) return acc;
- const example = _export.example
- ? `example: () => import("${_export.name}/example"),
-`
- : "";
- const base = _export.base
- ? `base: () => import("${_export.name}/base"),
-`
- : "";
- return `${acc}"${_export.name.replace("@gradio/", "")}": {
- ${base}
- ${example}
- component: () => import("${_export.name}")
- },
-`;
- }, "");
- return imports;
-}
-function load_virtual_component_loader(mode) {
- const loader_path = join(__dirname, "component_loader.js");
- let component_map = "";
- if (mode === "test") {
- component_map = `
- const component_map = {
- "test-component-one": {
- component: () => import("@gradio-test/test-one"),
- example: () => import("@gradio-test/test-one/example")
- },
- "dataset": {
- component: () => import("@gradio-test/test-two"),
- example: () => import("@gradio-test/test-two/example")
- },
- "image": {
- component: () => import("@gradio/image"),
- example: () => import("@gradio/image/example"),
- base: () => import("@gradio/image/base")
- },
- "audio": {
- component: () => import("@gradio/audio"),
- example: () => import("@gradio/audio/example"),
- base: () => import("@gradio/audio/base")
- },
- "video": {
- component: () => import("@gradio/video"),
- example: () => import("@gradio/video/example"),
- base: () => import("@gradio/video/base")
- },
- // "test-component-one": {
- // component: () => import("@gradio-test/test-one"),
- // example: () => import("@gradio-test/test-one/example")
- // },
- };
- `;
- } else {
- component_map = `
- const component_map = {
- ${generate_component_imports()}
- };
- `;
- }
- return `${component_map}
-
-${readFileSync(loader_path, "utf8")}`;
-}
-function inject_component_loader({ mode }) {
- const v_id = "virtual:component-loader";
- const resolved_v_id = "\0" + v_id;
- return {
- name: "inject-component-loader",
- enforce: "pre",
- resolveId(id) {
- if (id === v_id) return resolved_v_id;
- },
- load(id) {
- this.addWatchFile(join(__dirname, "component_loader.js"));
- if (id === resolved_v_id) {
- return load_virtual_component_loader(mode);
- }
- }
- };
-}
-
-// vite.config.ts
-var vite_config_default = defineConfig(({ mode }) => ({
- plugins: [sveltekit(), inject_component_loader({ mode })]
-}));
-export { vite_config_default as default };
-//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAiLi4vYXBwL2J1aWxkX3BsdWdpbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvYWxpYWJkYWxsYS9Eb2N1bWVudHMvZGV2L2dyYWRpby9qcy9fd2Vic2l0ZVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL2FsaWFiZGFsbGEvRG9jdW1lbnRzL2Rldi9ncmFkaW8vanMvX3dlYnNpdGUvdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL2FsaWFiZGFsbGEvRG9jdW1lbnRzL2Rldi9ncmFkaW8vanMvX3dlYnNpdGUvdml0ZS5jb25maWcudHNcIjtpbXBvcnQgeyBzdmVsdGVraXQgfSBmcm9tIFwiQHN2ZWx0ZWpzL2tpdC92aXRlXCI7XG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwidml0ZVwiO1xuaW1wb3J0IHsgaW5qZWN0X2NvbXBvbmVudF9sb2FkZXIgfSBmcm9tIFwiLi4vYXBwL2J1aWxkX3BsdWdpbnNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKCh7IG1vZGUgfSkgPT4gKHtcblx0cGx1Z2luczogW3N2ZWx0ZWtpdCgpLCBpbmplY3RfY29tcG9uZW50X2xvYWRlcih7IG1vZGUgfSldXG59KSk7XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIi9Vc2Vycy9hbGlhYmRhbGxhL0RvY3VtZW50cy9kZXYvZ3JhZGlvL2pzL2FwcFwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL2FsaWFiZGFsbGEvRG9jdW1lbnRzL2Rldi9ncmFkaW8vanMvYXBwL2J1aWxkX3BsdWdpbnMudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL2FsaWFiZGFsbGEvRG9jdW1lbnRzL2Rldi9ncmFkaW8vanMvYXBwL2J1aWxkX3BsdWdpbnMudHNcIjtpbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgeyBwYXJzZSwgSFRNTEVsZW1lbnQgfSBmcm9tIFwibm9kZS1odG1sLXBhcnNlclwiO1xuXG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdF9lanMoKTogUGx1Z2luIHtcblx0cmV0dXJuIHtcblx0XHRuYW1lOiBcImluamVjdC1lanNcIixcblx0XHRlbmZvcmNlOiBcInBvc3RcIixcblx0XHR0cmFuc2Zvcm1JbmRleEh0bWw6IChodG1sKSA9PiB7XG5cdFx0XHRjb25zdCByZXBsYWNlX2dyYWRpb19pbmZvX2luZm9faHRtbCA9IGh0bWwucmVwbGFjZShcblx0XHRcdFx0LyVncmFkaW9fYXBpX2luZm8lLyxcblx0XHRcdFx0YDxzY3JpcHQ+d2luZG93LmdyYWRpb19hcGlfaW5mbyA9IHt7IGdyYWRpb19hcGlfaW5mbyB8IHRvb3Jqc29uIH19Ozwvc2NyaXB0PmBcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4gcmVwbGFjZV9ncmFkaW9faW5mb19pbmZvX2h0bWwucmVwbGFjZShcblx0XHRcdFx0LyVncmFkaW9fY29uZmlnJS8sXG5cdFx0XHRcdGA8c2NyaXB0PndpbmRvdy5ncmFkaW9fY29uZmlnID0ge3sgY29uZmlnIHwgdG9vcmpzb24gfX07PC9zY3JpcHQ+YFxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZV9jZG5fZW50cnkoe1xuXHR2ZXJzaW9uLFxuXHRjZG5fYmFzZVxufToge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGNkbl9iYXNlOiBzdHJpbmc7XG59KTogUGx1Z2luIHtcblx0cmV0dXJuIHtcblx0XHRuYW1lOiBcImdlbmVyYXRlLWNkbi1lbnRyeVwiLFxuXHRcdGVuZm9yY2U6IFwicG9zdFwiLFxuXHRcdHdyaXRlQnVuZGxlKGNvbmZpZywgYnVuZGxlKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFjb25maWcuZGlyIHx8XG5cdFx0XHRcdCFidW5kbGVbXCJpbmRleC5odG1sXCJdIHx8XG5cdFx0XHRcdGJ1bmRsZVtcImluZGV4Lmh0bWxcIl0udHlwZSAhPT0gXCJhc3NldFwiXG5cdFx0XHQpXG5cdFx0XHRcdHJldHVybjtcblxuXHRcdFx0Y29uc3Qgc291cmNlID0gYnVuZGxlW1wiaW5kZXguaHRtbFwiXS5zb3VyY2UgYXMgc3RyaW5nO1xuXHRcdFx0Y29uc3QgdHJlZSA9IHBhcnNlKHNvdXJjZSk7XG5cblx0XHRcdGNvbnN0IHNjcmlwdCA9IEFycmF5LmZyb20oXG5cdFx0XHRcdHRyZWUucXVlcnlTZWxlY3RvckFsbChcInNjcmlwdFt0eXBlPW1vZHVsZV1cIilcblx0XHRcdCkuZmluZCgobm9kZSkgPT4gbm9kZS5hdHRyaWJ1dGVzLnNyYz8uaW5jbHVkZXMoXCJhc3NldHNcIikpO1xuXG5cdFx0XHRjb25zdCBvdXRwdXRfbG9jYXRpb24gPSBqb2luKGNvbmZpZy5kaXIsIFwiZ3JhZGlvLmpzXCIpO1xuXG5cdFx0XHR3cml0ZUZpbGVTeW5jKG91dHB1dF9sb2NhdGlvbiwgbWFrZV9lbnRyeShzY3JpcHQ/LmF0dHJpYnV0ZXMuc3JjIHx8IFwiXCIpKTtcblxuXHRcdFx0aWYgKCFzY3JpcHQpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgdHJhbnNmb3JtZWRfaHRtbCA9XG5cdFx0XHRcdChidW5kbGVbXCJpbmRleC5odG1sXCJdLnNvdXJjZSBhcyBzdHJpbmcpLnN1YnN0cmluZygwLCBzY3JpcHQ/LnJhbmdlWzBdKSArXG5cdFx0XHRcdGA8c2NyaXB0IHR5cGU9XCJtb2R1bGVcIiBjcm9zc29yaWdpbiBzcmM9XCIke2Nkbl9iYXNlfS8ke3ZlcnNpb259L2dyYWRpby5qc1wiPjwvc2NyaXB0PmAgK1xuXHRcdFx0XHQoYnVuZGxlW1wiaW5kZXguaHRtbFwiXS5zb3VyY2UgYXMgc3RyaW5nKS5zdWJzdHJpbmcoXG5cdFx0XHRcdFx0c2NyaXB0Py5yYW5nZVsxXSxcblx0XHRcdFx0XHRzb3VyY2UubGVuZ3RoXG5cdFx0XHRcdCk7XG5cblx0XHRcdGNvbnN0IHNoYXJlX2h0bWxfbG9jYXRpb24gPSBqb2luKGNvbmZpZy5kaXIsIFwic2hhcmUuaHRtbFwiKTtcblx0XHRcdHdyaXRlRmlsZVN5bmMoc2hhcmVfaHRtbF9sb2NhdGlvbiwgdHJhbnNmb3JtZWRfaHRtbCk7XG5cdFx0fVxuXHR9O1xufVxuXG5jb25zdCBSRV9TVkVMVEVfSU1QT1JUID1cblx0L2ltcG9ydFxccysoW1xcdyp7fSxcXHNdKylcXHMrZnJvbVxccytbJ1wiXShzdmVsdGV8c3ZlbHRlXFwvaW50ZXJuYWwpWydcIl0vZztcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlX2Rldl9lbnRyeSh7IGVuYWJsZSB9OiB7IGVuYWJsZTogYm9vbGVhbiB9KTogUGx1Z2luIHtcblx0cmV0dXJuIHtcblx0XHRuYW1lOiBcImdlbmVyYXRlLWRldi1lbnRyeVwiLFxuXHRcdHRyYW5zZm9ybShjb2RlLCBpZCkge1xuXHRcdFx0aWYgKCFlbmFibGUpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgbmV3X2NvZGUgPSBjb2RlLnJlcGxhY2UoUkVfU1ZFTFRFX0lNUE9SVCwgKHN0ciwgJDEsICQyKSA9PiB7XG5cdFx0XHRcdHJldHVybiBgY29uc3QgJHskMVxuXHRcdFx0XHRcdC5yZXBsYWNlKC9cXCogYXMgLywgXCJcIilcblx0XHRcdFx0XHQucmVwbGFjZSgvIGFzIC9nLCBcIjogXCIpfSA9IHdpbmRvdy5fX2dyYWRpb19fc3ZlbHRlX19pbnRlcm5hbDtgO1xuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGNvZGU6IG5ld19jb2RlLFxuXHRcdFx0XHRtYXA6IG51bGxcblx0XHRcdH07XG5cdFx0fVxuXHR9O1xufVxuXG5mdW5jdGlvbiBtYWtlX2VudHJ5KHNjcmlwdDogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIGBpbXBvcnQoXCIke3NjcmlwdH1cIik7XG5gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlX2NlX2NzcygpOiBQbHVnaW4ge1xuXHRyZXR1cm4ge1xuXHRcdGVuZm9yY2U6IFwicG9zdFwiLFxuXHRcdG5hbWU6IFwiY3VzdG9tLWVsZW1lbnQtY3NzXCIsXG5cblx0XHR3cml0ZUJ1bmRsZShjb25maWcsIGJ1bmRsZSkge1xuXHRcdFx0bGV0IGZpbGVfdG9faW5zZXJ0ID0ge1xuXHRcdFx0XHRmaWxlbmFtZTogXCJcIixcblx0XHRcdFx0c291cmNlOiBcIlwiXG5cdFx0XHR9O1xuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFjb25maWcuZGlyIHx8XG5cdFx0XHRcdCFidW5kbGVbXCJpbmRleC5odG1sXCJdIHx8XG5cdFx0XHRcdGJ1bmRsZVtcImluZGV4Lmh0bWxcIl0udHlwZSAhPT0gXCJhc3NldFwiXG5cdFx0XHQpXG5cdFx0XHRcdHJldHVybjtcblxuXHRcdFx0Zm9yIChjb25zdCBrZXkgaW4gYnVuZGxlKSB7XG5cdFx0XHRcdGNvbnN0IGNodW5rID0gYnVuZGxlW2tleV07XG5cdFx0XHRcdGlmIChjaHVuay50eXBlID09PSBcImNodW5rXCIpIHtcblx0XHRcdFx0XHRjb25zdCBfY2h1bmsgPSBjaHVuaztcblxuXHRcdFx0XHRcdGNvbnN0IGZvdW5kID0gX2NodW5rLmNvZGU/LmluZGV4T2YoXCJFTlRSWV9DU1NcIik7XG5cblx0XHRcdFx0XHRpZiAoZm91bmQgPiAtMSlcblx0XHRcdFx0XHRcdGZpbGVfdG9faW5zZXJ0ID0ge1xuXHRcdFx0XHRcdFx0XHRmaWxlbmFtZTogam9pbihjb25maWcuZGlyLCBrZXkpLFxuXHRcdFx0XHRcdFx0XHRzb3VyY2U6IF9jaHVuay5jb2RlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHRyZWUgPSBwYXJzZShidW5kbGVbXCJpbmRleC5odG1sXCJdLnNvdXJjZSBhcyBzdHJpbmcpO1xuXG5cdFx0XHRjb25zdCB7IHN0eWxlLCBmb250cyB9ID0gQXJyYXkuZnJvbShcblx0XHRcdFx0dHJlZS5xdWVyeVNlbGVjdG9yQWxsKFwibGlua1tyZWw9c3R5bGVzaGVldF1cIilcblx0XHRcdCkucmVkdWNlKFxuXHRcdFx0XHQoYWNjLCBuZXh0KSA9PiB7XG5cdFx0XHRcdFx0aWYgKC8uKlxcL2luZGV4KC4qPylcXC5jc3MvLnRlc3QobmV4dC5hdHRyaWJ1dGVzLmhyZWYpKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4geyAuLi5hY2MsIHN0eWxlOiBuZXh0IH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB7IC4uLmFjYywgZm9udHM6IFsuLi5hY2MuZm9udHMsIG5leHQuYXR0cmlidXRlcy5ocmVmXSB9O1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR7IGZvbnRzOiBbXSwgc3R5bGU6IHVuZGVmaW5lZCB9IGFzIHtcblx0XHRcdFx0XHRmb250czogc3RyaW5nW107XG5cdFx0XHRcdFx0c3R5bGU6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXG5cdFx0XHR3cml0ZUZpbGVTeW5jKFxuXHRcdFx0XHRmaWxlX3RvX2luc2VydC5maWxlbmFtZSxcblx0XHRcdFx0ZmlsZV90b19pbnNlcnQuc291cmNlXG5cdFx0XHRcdFx0LnJlcGxhY2UoXCJfX0VOVFJZX0NTU19fXCIsIHN0eWxlIS5hdHRyaWJ1dGVzLmhyZWYpXG5cdFx0XHRcdFx0LnJlcGxhY2UoXG5cdFx0XHRcdFx0XHQnXCJfX0ZPTlRTX0NTU19fXCInLFxuXHRcdFx0XHRcdFx0YFske2ZvbnRzLm1hcCgoZikgPT4gYFwiJHtmfVwiYCkuam9pbihcIixcIil9XWBcblx0XHRcdFx0XHQpXG5cdFx0XHQpO1xuXG5cdFx0XHRjb25zdCBzaGFyZV9odG1sX2xvY2F0aW9uID0gam9pbihjb25maWcuZGlyLCBcInNoYXJlLmh0bWxcIik7XG5cdFx0XHRjb25zdCBzaGFyZV9odG1sID0gcmVhZEZpbGVTeW5jKHNoYXJlX2h0bWxfbG9jYXRpb24sIFwidXRmOFwiKTtcblx0XHRcdGNvbnN0IHNoYXJlX3RyZWUgPSBwYXJzZShzaGFyZV9odG1sKTtcblx0XHRcdGNvbnN0IG5vZGUgPSBBcnJheS5mcm9tKFxuXHRcdFx0XHRzaGFyZV90cmVlLnF1ZXJ5U2VsZWN0b3JBbGwoXCJsaW5rW3JlbD1zdHlsZXNoZWV0XVwiKVxuXHRcdFx0KS5maW5kKChub2RlKSA9PiAvLipcXC9pbmRleCguKj8pXFwuY3NzLy50ZXN0KG5vZGUuYXR0cmlidXRlcy5ocmVmKSk7XG5cblx0XHRcdGlmICghbm9kZSkgcmV0dXJuO1xuXHRcdFx0Y29uc3QgdHJhbnNmb3JtZWRfaHRtbCA9XG5cdFx0XHRcdHNoYXJlX2h0bWwuc3Vic3RyaW5nKDAsIG5vZGUucmFuZ2VbMF0pICtcblx0XHRcdFx0c2hhcmVfaHRtbC5zdWJzdHJpbmcobm9kZS5yYW5nZVsxXSwgc2hhcmVfaHRtbC5sZW5ndGgpO1xuXG5cdFx0XHR3cml0ZUZpbGVTeW5jKHNoYXJlX2h0bWxfbG9jYXRpb24sIHRyYW5zZm9ybWVkX2h0bWwpO1xuXHRcdH1cblx0fTtcbn1cblxuLy8gZ2VuZXJhdGUgY29tcG9uZW50IGltcG9ydHN5XG5cbmltcG9ydCAqIGFzIHVybCBmcm9tIFwidXJsXCI7XG5jb25zdCBfX2ZpbGVuYW1lID0gdXJsLmZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKTtcbmNvbnN0IF9fZGlybmFtZSA9IHVybC5maWxlVVJMVG9QYXRoKG5ldyBVUkwoXCIuXCIsIGltcG9ydC5tZXRhLnVybCkpO1xuXG5pbXBvcnQgeyByZWFkZGlyU3luYywgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCBzdGF0U3luYyB9IGZyb20gXCJmc1wiO1xuXG5mdW5jdGlvbiBnZXRfZXhwb3J0X3BhdGgoXG5cdHBhdGg6IHN0cmluZyxcblx0cm9vdDogc3RyaW5nLFxuXHRwa2dfanNvbjogUmVjb3JkPHN0cmluZywgYW55PlxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKCFwa2dfanNvbi5leHBvcnRzKSByZXR1cm4gdW5kZWZpbmVkO1xuXHRjb25zdCBfcGF0aCA9IGpvaW4ocm9vdCwgXCIuLlwiLCBgJHtwa2dfanNvbi5leHBvcnRzW2Ake3BhdGh9YF19YCk7XG5cblx0cmV0dXJuIGV4aXN0c1N5bmMoX3BhdGgpID8gX3BhdGggOiB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IGlnbm9yZV9saXN0ID0gW1xuXHRcInRvb3RpbHNcIixcblx0XCJfY2RuLXRlc3RcIixcblx0XCJfc3BhY2VzLXRlc3RcIixcblx0XCJfd2Vic2l0ZVwiLFxuXHRcImFwcFwiLFxuXHRcImF0b21zXCIsXG5cdFwiZmFsbGJhY2tcIixcblx0XCJpY29uc1wiLFxuXHRcImxpdGVcIixcblx0XCJwcmV2aWV3XCIsXG5cdFwic2ltcGxlZHJvcGRvd25cIixcblx0XCJzaW1wbGVpbWFnZVwiLFxuXHRcInNpbXBsZXRleHRib3hcIixcblx0XCJzdG9yeWJvb2tcIixcblx0XCJ0aGVtZVwiLFxuXHRcInRpbWVzZXJpZXNcIixcblx0XCJ0b29sdGlwXCIsXG5cdFwidXBsb2FkXCIsXG5cdFwidXRpbHNcIixcblx0XCJ3YXNtXCJcbl07XG5mdW5jdGlvbiBnZW5lcmF0ZV9jb21wb25lbnRfaW1wb3J0cygpOiBzdHJpbmcge1xuXHRjb25zdCBleHBvcnRzID0gcmVhZGRpclN5bmMoam9pbihfX2Rpcm5hbWUsIFwiLi5cIikpXG5cdFx0Lm1hcCgoZGlyKSA9PiB7XG5cdFx0XHRpZiAoaWdub3JlX2xpc3QuaW5jbHVkZXMoZGlyKSkgcmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdGlmICghc3RhdFN5bmMoam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgZGlyKSkuaXNEaXJlY3RvcnkoKSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuXHRcdFx0Y29uc3QgcGFja2FnZV9qc29uX3BhdGggPSBqb2luKF9fZGlybmFtZSwgXCIuLlwiLCBkaXIsIFwicGFja2FnZS5qc29uXCIpO1xuXHRcdFx0aWYgKGV4aXN0c1N5bmMocGFja2FnZV9qc29uX3BhdGgpKSB7XG5cdFx0XHRcdGNvbnN0IHBhY2thZ2VfanNvbiA9IEpTT04ucGFyc2UoXG5cdFx0XHRcdFx0cmVhZEZpbGVTeW5jKHBhY2thZ2VfanNvbl9wYXRoLCBcInV0ZjhcIilcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zdCBjb21wb25lbnQgPSBnZXRfZXhwb3J0X3BhdGgoXCIuXCIsIHBhY2thZ2VfanNvbl9wYXRoLCBwYWNrYWdlX2pzb24pO1xuXHRcdFx0XHRjb25zdCBleGFtcGxlID0gZ2V0X2V4cG9ydF9wYXRoKFxuXHRcdFx0XHRcdFwiLi9leGFtcGxlXCIsXG5cdFx0XHRcdFx0cGFja2FnZV9qc29uX3BhdGgsXG5cdFx0XHRcdFx0cGFja2FnZV9qc29uXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Y29uc3QgYmFzZSA9IGdldF9leHBvcnRfcGF0aChcIi4vYmFzZVwiLCBwYWNrYWdlX2pzb25fcGF0aCwgcGFja2FnZV9qc29uKTtcblxuXHRcdFx0XHRpZiAoIWNvbXBvbmVudCAmJiAhZXhhbXBsZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdG5hbWU6IHBhY2thZ2VfanNvbi5uYW1lLFxuXHRcdFx0XHRcdGNvbXBvbmVudCxcblx0XHRcdFx0XHRleGFtcGxlLFxuXHRcdFx0XHRcdGJhc2Vcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fSlcblx0XHQuZmlsdGVyKCh4KSA9PiB4ICE9PSB1bmRlZmluZWQpO1xuXG5cdGNvbnN0IGltcG9ydHMgPSBleHBvcnRzLnJlZHVjZSgoYWNjLCBfZXhwb3J0KSA9PiB7XG5cdFx0aWYgKCFfZXhwb3J0KSByZXR1cm4gYWNjO1xuXG5cdFx0Y29uc3QgZXhhbXBsZSA9IF9leHBvcnQuZXhhbXBsZVxuXHRcdFx0PyBgZXhhbXBsZTogKCkgPT4gaW1wb3J0KFwiJHtfZXhwb3J0Lm5hbWV9L2V4YW1wbGVcIiksXFxuYFxuXHRcdFx0OiBcIlwiO1xuXHRcdGNvbnN0IGJhc2UgPSBfZXhwb3J0LmJhc2Vcblx0XHRcdD8gYGJhc2U6ICgpID0+IGltcG9ydChcIiR7X2V4cG9ydC5uYW1lfS9iYXNlXCIpLFxcbmBcblx0XHRcdDogXCJcIjtcblx0XHRyZXR1cm4gYCR7YWNjfVwiJHtfZXhwb3J0Lm5hbWUucmVwbGFjZShcIkBncmFkaW8vXCIsIFwiXCIpfVwiOiB7XG5cdFx0XHQke2Jhc2V9XG5cdFx0XHQke2V4YW1wbGV9XG5cdFx0XHRjb21wb25lbnQ6ICgpID0+IGltcG9ydChcIiR7X2V4cG9ydC5uYW1lfVwiKVxuXHRcdFx0fSxcXG5gO1xuXHR9LCBcIlwiKTtcblxuXHRyZXR1cm4gaW1wb3J0cztcbn1cblxuZnVuY3Rpb24gbG9hZF92aXJ0dWFsX2NvbXBvbmVudF9sb2FkZXIobW9kZTogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgbG9hZGVyX3BhdGggPSBqb2luKF9fZGlybmFtZSwgXCJjb21wb25lbnRfbG9hZGVyLmpzXCIpO1xuXHRsZXQgY29tcG9uZW50X21hcCA9IFwiXCI7XG5cblx0aWYgKG1vZGUgPT09IFwidGVzdFwiKSB7XG5cdFx0Y29tcG9uZW50X21hcCA9IGBcblx0XHRjb25zdCBjb21wb25lbnRfbWFwID0ge1xuXHRcdFx0XCJ0ZXN0LWNvbXBvbmVudC1vbmVcIjoge1xuXHRcdFx0XHRjb21wb25lbnQ6ICgpID0+IGltcG9ydChcIkBncmFkaW8tdGVzdC90ZXN0LW9uZVwiKSxcblx0XHRcdFx0ZXhhbXBsZTogKCkgPT4gaW1wb3J0KFwiQGdyYWRpby10ZXN0L3Rlc3Qtb25lL2V4YW1wbGVcIilcblx0XHRcdH0sXG5cdFx0XHRcImRhdGFzZXRcIjoge1xuXHRcdFx0XHRjb21wb25lbnQ6ICgpID0+IGltcG9ydChcIkBncmFkaW8tdGVzdC90ZXN0LXR3b1wiKSxcblx0XHRcdFx0ZXhhbXBsZTogKCkgPT4gaW1wb3J0KFwiQGdyYWRpby10ZXN0L3Rlc3QtdHdvL2V4YW1wbGVcIilcblx0XHRcdH0sXG5cdFx0XHRcImltYWdlXCI6IHtcblx0XHRcdFx0Y29tcG9uZW50OiAoKSA9PiBpbXBvcnQoXCJAZ3JhZGlvL2ltYWdlXCIpLFxuXHRcdFx0XHRleGFtcGxlOiAoKSA9PiBpbXBvcnQoXCJAZ3JhZGlvL2ltYWdlL2V4YW1wbGVcIiksXG5cdFx0XHRcdGJhc2U6ICgpID0+IGltcG9ydChcIkBncmFkaW8vaW1hZ2UvYmFzZVwiKVxuXHRcdFx0fSxcblx0XHRcdFwiYXVkaW9cIjoge1xuXHRcdFx0XHRjb21wb25lbnQ6ICgpID0+IGltcG9ydChcIkBncmFkaW8vYXVkaW9cIiksXG5cdFx0XHRcdGV4YW1wbGU6ICgpID0+IGltcG9ydChcIkBncmFkaW8vYXVkaW8vZXhhbXBsZVwiKSxcblx0XHRcdFx0YmFzZTogKCkgPT4gaW1wb3J0KFwiQGdyYWRpby9hdWRpby9iYXNlXCIpXG5cdFx0XHR9LFxuXHRcdFx0XCJ2aWRlb1wiOiB7XG5cdFx0XHRcdGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KFwiQGdyYWRpby92aWRlb1wiKSxcblx0XHRcdFx0ZXhhbXBsZTogKCkgPT4gaW1wb3J0KFwiQGdyYWRpby92aWRlby9leGFtcGxlXCIpLFxuXHRcdFx0XHRiYXNlOiAoKSA9PiBpbXBvcnQoXCJAZ3JhZGlvL3ZpZGVvL2Jhc2VcIilcblx0XHRcdH0sXG5cdFx0XHQvLyBcInRlc3QtY29tcG9uZW50LW9uZVwiOiB7XG5cdFx0XHQvLyBcdGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KFwiQGdyYWRpby10ZXN0L3Rlc3Qtb25lXCIpLFxuXHRcdFx0Ly8gXHRleGFtcGxlOiAoKSA9PiBpbXBvcnQoXCJAZ3JhZGlvLXRlc3QvdGVzdC1vbmUvZXhhbXBsZVwiKVxuXHRcdFx0Ly8gfSxcblx0XHR9O1xuXHRcdGA7XG5cdH0gZWxzZSB7XG5cdFx0Y29tcG9uZW50X21hcCA9IGBcblx0XHRjb25zdCBjb21wb25lbnRfbWFwID0ge1xuXHRcdFx0JHtnZW5lcmF0ZV9jb21wb25lbnRfaW1wb3J0cygpfVxuXHRcdH07XG5cdFx0YDtcblx0fVxuXG5cdHJldHVybiBgJHtjb21wb25lbnRfbWFwfVxcblxcbiR7cmVhZEZpbGVTeW5jKGxvYWRlcl9wYXRoLCBcInV0ZjhcIil9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdF9jb21wb25lbnRfbG9hZGVyKHsgbW9kZSB9OiB7IG1vZGU6IHN0cmluZyB9KTogUGx1Z2luIHtcblx0Y29uc3Qgdl9pZCA9IFwidmlydHVhbDpjb21wb25lbnQtbG9hZGVyXCI7XG5cdGNvbnN0IHJlc29sdmVkX3ZfaWQgPSBcIlxcMFwiICsgdl9pZDtcblxuXHRyZXR1cm4ge1xuXHRcdG5hbWU6IFwiaW5qZWN0LWNvbXBvbmVudC1sb2FkZXJcIixcblx0XHRlbmZvcmNlOiBcInByZVwiLFxuXHRcdHJlc29sdmVJZChpZDogc3RyaW5nKSB7XG5cdFx0XHRpZiAoaWQgPT09IHZfaWQpIHJldHVybiByZXNvbHZlZF92X2lkO1xuXHRcdH0sXG5cdFx0bG9hZChpZDogc3RyaW5nKSB7XG5cdFx0XHR0aGlzLmFkZFdhdGNoRmlsZShqb2luKF9fZGlybmFtZSwgXCJjb21wb25lbnRfbG9hZGVyLmpzXCIpKTtcblx0XHRcdGlmIChpZCA9PT0gcmVzb2x2ZWRfdl9pZCkge1xuXHRcdFx0XHRyZXR1cm4gbG9hZF92aXJ0dWFsX2NvbXBvbmVudF9sb2FkZXIobW9kZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZV9zdmVsdGUoZW5hYmxlOiBib29sZWFuKTogUGx1Z2luIHtcblx0cmV0dXJuIHtcblx0XHRlbmZvcmNlOiBcInByZVwiLFxuXHRcdG5hbWU6IFwicmVzb2x2ZS1zdmVsdGVcIixcblx0XHRhc3luYyByZXNvbHZlSWQoaWQ6IHN0cmluZykge1xuXHRcdFx0aWYgKCFlbmFibGUpIHJldHVybjtcblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRpZCA9PT0gXCIuL3N2ZWx0ZS9zdmVsdGUuanNcIiB8fFxuXHRcdFx0XHRpZCA9PT0gXCJzdmVsdGVcIiB8fFxuXHRcdFx0XHRpZCA9PT0gXCJzdmVsdGUvaW50ZXJuYWxcIlxuXHRcdFx0KSB7XG5cdFx0XHRcdGNvbnN0IG1vZCA9IGpvaW4oXG5cdFx0XHRcdFx0X19kaXJuYW1lLFxuXHRcdFx0XHRcdFwiLi5cIixcblx0XHRcdFx0XHRcIi4uXCIsXG5cdFx0XHRcdFx0XCJncmFkaW9cIixcblx0XHRcdFx0XHRcInRlbXBsYXRlc1wiLFxuXHRcdFx0XHRcdFwiZnJvbnRlbmRcIixcblx0XHRcdFx0XHRcImFzc2V0c1wiLFxuXHRcdFx0XHRcdFwic3ZlbHRlXCIsXG5cdFx0XHRcdFx0XCJzdmVsdGUuanNcIlxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4geyBpZDogbW9kLCBleHRlcm5hbDogXCJhYnNvbHV0ZVwiIH07XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja19tb2R1bGVzKCk6IFBsdWdpbiB7XG5cdGNvbnN0IHZfaWRfMSA9IFwiQGdyYWRpby10ZXN0L3Rlc3Qtb25lXCI7XG5cdGNvbnN0IHZfaWRfMiA9IFwiQGdyYWRpby10ZXN0L3Rlc3QtdHdvXCI7XG5cdGNvbnN0IHZfaWRfMV9leGFtcGxlID0gXCJAZ3JhZGlvLXRlc3QvdGVzdC1vbmUvZXhhbXBsZVwiO1xuXHRjb25zdCB2X2lkXzJfZXhhbXBsZSA9IFwiQGdyYWRpby10ZXN0L3Rlc3QtdHdvL2V4YW1wbGVcIjtcblx0Y29uc3QgcmVzb2x2ZWRfdl9pZCA9IFwiXFwwXCIgKyB2X2lkXzE7XG5cdGNvbnN0IHJlc29sdmVkX3ZfaWRfMiA9IFwiXFwwXCIgKyB2X2lkXzI7XG5cdGNvbnN0IHJlc29sdmVkX3ZfaWRfMV9leGFtcGxlID0gXCJcXDBcIiArIHZfaWRfMV9leGFtcGxlO1xuXHRjb25zdCByZXNvbHZlZF92X2lkXzJfZXhhbXBsZSA9IFwiXFwwXCIgKyB2X2lkXzJfZXhhbXBsZTtcblx0Y29uc3QgZmFsbGJhY2tfZXhhbXBsZSA9IFwiQGdyYWRpby9mYWxsYmFjay9leGFtcGxlXCI7XG5cdGNvbnN0IHJlc29sdmVkX2ZhbGxiYWNrX2V4YW1wbGUgPSBcIlxcMFwiICsgZmFsbGJhY2tfZXhhbXBsZTtcblxuXHRyZXR1cm4ge1xuXHRcdG5hbWU6IFwibW9jay1tb2R1bGVzXCIsXG5cdFx0ZW5mb3JjZTogXCJwcmVcIixcblx0XHRyZXNvbHZlSWQoaWQ6IHN0cmluZykge1xuXHRcdFx0aWYgKGlkID09PSB2X2lkXzEpIHJldHVybiByZXNvbHZlZF92X2lkO1xuXHRcdFx0aWYgKGlkID09PSB2X2lkXzIpIHJldHVybiByZXNvbHZlZF92X2lkXzI7XG5cdFx0XHRpZiAoaWQgPT09IHZfaWRfMV9leGFtcGxlKSByZXR1cm4gcmVzb2x2ZWRfdl9pZF8xX2V4YW1wbGU7XG5cdFx0XHRpZiAoaWQgPT09IHZfaWRfMl9leGFtcGxlKSByZXR1cm4gcmVzb2x2ZWRfdl9pZF8yX2V4YW1wbGU7XG5cdFx0XHRpZiAoaWQgPT09IGZhbGxiYWNrX2V4YW1wbGUpIHJldHVybiByZXNvbHZlZF9mYWxsYmFja19leGFtcGxlO1xuXHRcdH0sXG5cdFx0bG9hZChpZDogc3RyaW5nKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGlkID09PSByZXNvbHZlZF92X2lkIHx8XG5cdFx0XHRcdGlkID09PSByZXNvbHZlZF92X2lkXzIgfHxcblx0XHRcdFx0aWQgPT09IHJlc29sdmVkX3ZfaWRfMV9leGFtcGxlIHx8XG5cdFx0XHRcdGlkID09PSByZXNvbHZlZF92X2lkXzJfZXhhbXBsZSB8fFxuXHRcdFx0XHRpZCA9PT0gcmVzb2x2ZWRfZmFsbGJhY2tfZXhhbXBsZVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiBgZXhwb3J0IGRlZmF1bHQge31gO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBd1UsU0FBUyxpQkFBaUI7QUFDbFcsU0FBUyxvQkFBb0I7OztBQ0E3QixTQUFTLGFBQTBCO0FBRW5DLFNBQVMsWUFBWTtBQTRLckIsWUFBWSxTQUFTO0FBSXJCLFNBQVMsYUFBYSxZQUFZLGNBQWMsZ0JBQWdCO0FBbkxvSSxJQUFNLDJDQUEyQztBQWdMclAsSUFBTSxhQUFpQixrQkFBYyx3Q0FBZTtBQUNwRCxJQUFNLFlBQWdCLGtCQUFjLElBQUksSUFBSSxLQUFLLHdDQUFlLENBQUM7QUFJakUsU0FBUyxnQkFDUixNQUNBLE1BQ0EsVUFDcUI7QUFDckIsTUFBSSxDQUFDLFNBQVM7QUFBUyxXQUFPO0FBQzlCLFFBQU0sUUFBUSxLQUFLLE1BQU0sTUFBTSxHQUFHLFNBQVMsUUFBUSxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUU7QUFFL0QsU0FBTyxXQUFXLEtBQUssSUFBSSxRQUFRO0FBQ3BDO0FBRUEsSUFBTSxjQUFjO0FBQUEsRUFDbkI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0Q7QUFDQSxTQUFTLDZCQUFxQztBQUM3QyxRQUFNLFVBQVUsWUFBWSxLQUFLLFdBQVcsSUFBSSxDQUFDLEVBQy9DLElBQUksQ0FBQyxRQUFRO0FBQ2IsUUFBSSxZQUFZLFNBQVMsR0FBRztBQUFHLGFBQU87QUFDdEMsUUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXLE1BQU0sR0FBRyxDQUFDLEVBQUUsWUFBWTtBQUFHLGFBQU87QUFFaEUsVUFBTSxvQkFBb0IsS0FBSyxXQUFXLE1BQU0sS0FBSyxjQUFjO0FBQ25FLFFBQUksV0FBVyxpQkFBaUIsR0FBRztBQUNsQyxZQUFNLGVBQWUsS0FBSztBQUFBLFFBQ3pCLGFBQWEsbUJBQW1CLE1BQU07QUFBQSxNQUN2QztBQUVBLFlBQU0sWUFBWSxnQkFBZ0IsS0FBSyxtQkFBbUIsWUFBWTtBQUN0RSxZQUFNLFVBQVU7QUFBQSxRQUNmO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNEO0FBRUEsWUFBTSxPQUFPLGdCQUFnQixVQUFVLG1CQUFtQixZQUFZO0FBRXRFLFVBQUksQ0FBQyxhQUFhLENBQUM7QUFBUyxlQUFPO0FBRW5DLGFBQU87QUFBQSxRQUNOLE1BQU0sYUFBYTtBQUFBLFFBQ25CO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNEO0FBQUEsSUFDRDtBQUNBLFdBQU87QUFBQSxFQUNSLENBQUMsRUFDQSxPQUFPLENBQUMsTUFBTSxNQUFNLE1BQVM7QUFFL0IsUUFBTSxVQUFVLFFBQVEsT0FBTyxDQUFDLEtBQUssWUFBWTtBQUNoRCxRQUFJLENBQUM7QUFBUyxhQUFPO0FBRXJCLFVBQU0sVUFBVSxRQUFRLFVBQ3JCLDBCQUEwQixRQUFRLElBQUk7QUFBQSxJQUN0QztBQUNILFVBQU0sT0FBTyxRQUFRLE9BQ2xCLHVCQUF1QixRQUFRLElBQUk7QUFBQSxJQUNuQztBQUNILFdBQU8sR0FBRyxHQUFHLElBQUksUUFBUSxLQUFLLFFBQVEsWUFBWSxFQUFFLENBQUM7QUFBQSxLQUNsRCxJQUFJO0FBQUEsS0FDSixPQUFPO0FBQUEsOEJBQ2tCLFFBQVEsSUFBSTtBQUFBO0FBQUE7QUFBQSxFQUV6QyxHQUFHLEVBQUU7QUFFTCxTQUFPO0FBQ1I7QUFFQSxTQUFTLDhCQUE4QixNQUFzQjtBQUM1RCxRQUFNLGNBQWMsS0FBSyxXQUFXLHFCQUFxQjtBQUN6RCxNQUFJLGdCQUFnQjtBQUVwQixNQUFJLFNBQVMsUUFBUTtBQUNwQixvQkFBZ0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQStCakIsT0FBTztBQUNOLG9CQUFnQjtBQUFBO0FBQUEsS0FFYiwyQkFBMkIsQ0FBQztBQUFBO0FBQUE7QUFBQSxFQUdoQztBQUVBLFNBQU8sR0FBRyxhQUFhO0FBQUE7QUFBQSxFQUFPLGFBQWEsYUFBYSxNQUFNLENBQUM7QUFDaEU7QUFFTyxTQUFTLHdCQUF3QixFQUFFLEtBQUssR0FBNkI7QUFDM0UsUUFBTSxPQUFPO0FBQ2IsUUFBTSxnQkFBZ0IsT0FBTztBQUU3QixTQUFPO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsSUFDVCxVQUFVLElBQVk7QUFDckIsVUFBSSxPQUFPO0FBQU0sZUFBTztBQUFBLElBQ3pCO0FBQUEsSUFDQSxLQUFLLElBQVk7QUFDaEIsV0FBSyxhQUFhLEtBQUssV0FBVyxxQkFBcUIsQ0FBQztBQUN4RCxVQUFJLE9BQU8sZUFBZTtBQUN6QixlQUFPLDhCQUE4QixJQUFJO0FBQUEsTUFDMUM7QUFBQSxJQUNEO0FBQUEsRUFDRDtBQUNEOzs7QUR2VUEsSUFBTyxzQkFBUSxhQUFhLENBQUMsRUFBRSxLQUFLLE9BQU87QUFBQSxFQUMxQyxTQUFTLENBQUMsVUFBVSxHQUFHLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pELEVBQUU7IiwKICAibmFtZXMiOiBbXQp9Cg==
diff --git a/js/app/.gitignore b/js/app/.gitignore
index 6f8fe001ac..79518f7164 100644
--- a/js/app/.gitignore
+++ b/js/app/.gitignore
@@ -1 +1,21 @@
-/src/lite/theme.css
+node_modules
+
+# Output
+.output
+.vercel
+/.svelte-kit
+/build
+
+# OS
+.DS_Store
+Thumbs.db
+
+# Env
+.env
+.env.*
+!.env.example
+!.env.test
+
+# Vite
+vite.config.js.timestamp-*
+vite.config.ts.timestamp-*
diff --git a/js/app/README.md b/js/app/README.md
new file mode 100644
index 0000000000..5ce676612e
--- /dev/null
+++ b/js/app/README.md
@@ -0,0 +1,38 @@
+# create-svelte
+
+Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte).
+
+## Creating a project
+
+If you're seeing this, you've probably already done this step. Congrats!
+
+```bash
+# create a new project in the current directory
+npm create svelte@latest
+
+# create a new project in my-app
+npm create svelte@latest my-app
+```
+
+## Developing
+
+Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
+
+```bash
+npm run dev
+
+# or start the server and open the app in a new browser tab
+npm run dev -- --open
+```
+
+## Building
+
+To create a production version of your app:
+
+```bash
+npm run build
+```
+
+You can preview the production build with `npm run preview`.
+
+> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
diff --git a/js/app/package.json b/js/app/package.json
index ec43488f55..a793983d4f 100644
--- a/js/app/package.json
+++ b/js/app/package.json
@@ -1,96 +1,26 @@
{
- "name": "@gradio/app",
- "version": "1.39.2",
+ "name": "app",
+ "version": "0.0.1",
"private": true,
- "type": "module",
"scripts": {
- "dev": "vite --port 9876",
- "dev:lite": "run-p dev:lite:*",
- "dev:lite:self": "vite --port 9876 --mode development:lite",
- "dev:lite:worker": "pnpm --filter @gradio/wasm dev",
- "build": "vite build --mode production --emptyOutDir",
- "cssbuild": "python ../../scripts/generate_theme.py --outfile ./src/lite/theme.css",
- "pybuild:gradio": "cd ../../ && hatch build -t lite",
- "pybuild:gradio-client": "cd ../../client/python && python -m build",
- "pybuild": "run-p pybuild:*",
- "build:lite": "pnpm pybuild && pnpm cssbuild && pnpm --filter @gradio/client build && pnpm --filter @gradio/wasm build && vite build --mode production:lite",
+ "dev": "vite dev",
+ "build": "vite build",
"preview": "vite preview",
- "test:snapshot": "pnpm exec playwright test snapshots/ --config=../../.config/playwright.config.js",
- "test:browser": "pnpm exec playwright test test/ --grep-invert 'reload.spec.ts' --config=../../.config/playwright.config.js",
- "test:browser:dev": "pnpm exec playwright test test/ --ui --config=../../.config/playwright.config.js",
- "test:browser:reload": "CI=1 pnpm exec playwright test test/ --grep 'reload.spec.ts' --config=../../.config/playwright.config.js",
- "test:browser:lite": "GRADIO_E2E_TEST_LITE=1 pnpm test:browser",
- "test:browser:lite:dev": "GRADIO_E2E_TEST_LITE=1 pnpm test:browser:dev",
- "build:css": "pollen -c pollen.config.cjs -o src/pollen-dev.css"
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
+ "lint": "prettier --check .",
+ "format": "prettier --write ."
},
- "dependencies": {
- "@gradio/accordion": "workspace:^",
- "@gradio/annotatedimage": "workspace:^",
- "@gradio/atoms": "workspace:^",
- "@gradio/audio": "workspace:^",
- "@gradio/box": "workspace:^",
- "@gradio/button": "workspace:^",
- "@gradio/chatbot": "workspace:^",
- "@gradio/checkbox": "workspace:^",
- "@gradio/checkboxgroup": "workspace:^",
- "@gradio/client": "workspace:^",
- "@gradio/code": "workspace:^",
- "@gradio/colorpicker": "workspace:^",
- "@gradio/column": "workspace:^",
- "@gradio/dataframe": "workspace:^",
- "@gradio/dataset": "workspace:^",
- "@gradio/datetime": "workspace:^",
- "@gradio/downloadbutton": "workspace:^",
- "@gradio/dropdown": "workspace:^",
- "@gradio/fallback": "workspace:^",
- "@gradio/file": "workspace:^",
- "@gradio/fileexplorer": "workspace:^",
- "@gradio/form": "workspace:^",
- "@gradio/gallery": "workspace:^",
- "@gradio/group": "workspace:^",
- "@gradio/highlightedtext": "workspace:^",
- "@gradio/html": "workspace:^",
- "@gradio/icons": "workspace:^",
- "@gradio/image": "workspace:^",
- "@gradio/imageeditor": "workspace:^",
- "@gradio/json": "workspace:^",
- "@gradio/label": "workspace:^",
- "@gradio/markdown": "workspace:^",
- "@gradio/model3d": "workspace:^",
- "@gradio/multimodaltextbox": "workspace:^",
- "@gradio/nativeplot": "workspace:^",
- "@gradio/number": "workspace:^",
- "@gradio/paramviewer": "workspace:^",
- "@gradio/plot": "workspace:^",
- "@gradio/radio": "workspace:^",
- "@gradio/row": "workspace:^",
- "@gradio/simpledropdown": "workspace:^",
- "@gradio/simpleimage": "workspace:^",
- "@gradio/simpletextbox": "workspace:^",
- "@gradio/slider": "workspace:^",
- "@gradio/state": "workspace:^",
- "@gradio/statustracker": "workspace:^",
- "@gradio/tabitem": "workspace:^",
- "@gradio/tabs": "workspace:^",
- "@gradio/textbox": "workspace:^",
- "@gradio/theme": "workspace:^",
- "@gradio/timer": "workspace:^",
- "@gradio/upload": "workspace:^",
- "@gradio/uploadbutton": "workspace:^",
- "@gradio/utils": "workspace:^",
- "@gradio/video": "workspace:^",
- "@gradio/wasm": "workspace:^",
- "@huggingface/space-header": "^1.0.3",
- "@types/eventsource": "^1.1.15",
- "cross-env": "^7.0.3",
- "d3-dsv": "^3.0.1",
- "eventsource": "^2.0.2",
- "mime-types": "^2.1.34",
- "postcss": "^8.4.21",
- "postcss-prefix-selector": "^1.16.0"
+ "devDependencies": {
+ "@sveltejs/adapter-auto": "^3.0.0",
+ "@sveltejs/kit": "^2.0.0",
+ "@sveltejs/vite-plugin-svelte": "^3.0.0",
+ "prettier": "^3.1.1",
+ "prettier-plugin-svelte": "^3.1.2",
+ "svelte": "^4.2.7",
+ "svelte-check": "^3.6.0",
+ "typescript": "^5.0.0",
+ "vite": "^5.0.3"
},
- "msw": {
- "workerDirectory": "public"
- },
- "main_changeset": true
+ "type": "module"
}
diff --git a/js/app/src/app.d.ts b/js/app/src/app.d.ts
new file mode 100644
index 0000000000..743f07b2e5
--- /dev/null
+++ b/js/app/src/app.d.ts
@@ -0,0 +1,13 @@
+// See https://kit.svelte.dev/docs/types#app
+// for information about these interfaces
+declare global {
+ namespace App {
+ // interface Error {}
+ // interface Locals {}
+ // interface PageData {}
+ // interface PageState {}
+ // interface Platform {}
+ }
+}
+
+export {};
diff --git a/js/app/src/app.html b/js/app/src/app.html
new file mode 100644
index 0000000000..77a5ff52c9
--- /dev/null
+++ b/js/app/src/app.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ %sveltekit.head%
+
+
+ %sveltekit.body%
+
+
diff --git a/js/app/src/lib/index.ts b/js/app/src/lib/index.ts
new file mode 100644
index 0000000000..856f2b6c38
--- /dev/null
+++ b/js/app/src/lib/index.ts
@@ -0,0 +1 @@
+// place files you want to import through the `$lib` alias in this folder.
diff --git a/js/app/src/routes/+page.svelte b/js/app/src/routes/+page.svelte
new file mode 100644
index 0000000000..33d0736b34
--- /dev/null
+++ b/js/app/src/routes/+page.svelte
@@ -0,0 +1,4 @@
+Welcome to SvelteKit
+
+ Visit kit.svelte.dev to read the documentation
+
diff --git a/js/app/static/favicon.png b/js/app/static/favicon.png
new file mode 100644
index 0000000000..825b9e65af
Binary files /dev/null and b/js/app/static/favicon.png differ
diff --git a/js/app/svelte.config.js b/js/app/svelte.config.js
new file mode 100644
index 0000000000..578e765f43
--- /dev/null
+++ b/js/app/svelte.config.js
@@ -0,0 +1,18 @@
+import adapter from "@sveltejs/adapter-auto";
+import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
+
+/** @type {import('@sveltejs/kit').Config} */
+const config = {
+ // Consult https://kit.svelte.dev/docs/integrations#preprocessors
+ // for more information about preprocessors
+ preprocess: vitePreprocess(),
+
+ kit: {
+ // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
+ // If your environment is not supported, or you settled on a specific environment, switch out the adapter.
+ // See https://kit.svelte.dev/docs/adapters for more information about adapters.
+ adapter: adapter()
+ }
+};
+
+export default config;
diff --git a/js/app/tsconfig.json b/js/app/tsconfig.json
new file mode 100644
index 0000000000..c996e7b7cc
--- /dev/null
+++ b/js/app/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "extends": "./.svelte-kit/tsconfig.json",
+ "compilerOptions": {
+ "allowJs": true,
+ "checkJs": true,
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "sourceMap": true,
+ "strict": true,
+ "moduleResolution": "bundler",
+ "module": "esnext"
+ }
+ // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
+ // except $lib which is handled by https://kit.svelte.dev/docs/configuration#files
+ //
+ // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
+ // from the referenced tsconfig.json - TypeScript does not merge them in
+}
diff --git a/js/app/vite.config.ts b/js/app/vite.config.ts
index dd9bec5497..328b1f5f9a 100644
--- a/js/app/vite.config.ts
+++ b/js/app/vite.config.ts
@@ -1,217 +1,6 @@
+import { sveltekit } from "@sveltejs/kit/vite";
import { defineConfig } from "vite";
-import { svelte } from "@sveltejs/vite-plugin-svelte";
-import sveltePreprocess from "svelte-preprocess";
-// @ts-ignore
-import custom_media from "postcss-custom-media";
-import global_data from "@csstools/postcss-global-data";
-// @ts-ignore
-import prefixer from "postcss-prefix-selector";
-import { readFileSync } from "fs";
-import { resolve } from "path";
-const version_path = resolve(__dirname, "../../gradio/package.json");
-const theme_token_path = resolve(__dirname, "../theme/src/tokens.css");
-const version_raw = JSON.parse(
- readFileSync(version_path, { encoding: "utf-8" })
-).version.trim();
-const version = version_raw.replace(/\./g, "-");
-
-function convert_to_pypi_prerelease(version: string) {
- return version.replace(
- /(\d+\.\d+\.\d+)-([-a-z]+)\.(\d+)/,
- (match, v, tag, tag_version) => {
- if (tag === "beta") {
- return `${v}b${tag_version}`;
- } else if (tag === "alpha") {
- return `${v}a${tag_version}`;
- } else {
- return version;
- }
- }
- );
-}
-
-const python_version = convert_to_pypi_prerelease(version_raw);
-
-const client_version_path = resolve(
- __dirname,
- "../../client/python/gradio_client/package.json"
-);
-const client_version_raw = JSON.parse(
- readFileSync(client_version_path, {
- encoding: "utf-8"
- })
-).version.trim();
-
-const client_python_version = convert_to_pypi_prerelease(client_version_raw);
-
-import {
- inject_ejs,
- generate_cdn_entry,
- generate_dev_entry,
- handle_ce_css,
- inject_component_loader,
- resolve_svelte,
- mock_modules
-} from "./build_plugins";
-
-const GRADIO_VERSION = version_raw || "asd_stub_asd";
-const CDN_BASE = "https://gradio.s3-us-west-2.amazonaws.com";
-const TEST_MODE = process.env.TEST_MODE || "happy-dom";
-
-//@ts-ignore
-export default defineConfig(({ mode }) => {
- const targets = {
- production: "../../gradio/templates/frontend",
- "dev:custom": "../../gradio/templates/frontend"
- };
- const production = mode === "production" || mode === "production:lite";
- const development = mode === "development" || mode === "development:lite";
- const is_lite = mode.endsWith(":lite");
-
- return {
- base: "./",
-
- server: {
- port: 9876,
- open: is_lite ? "/lite.html" : "/"
- },
-
- build: {
- sourcemap: true,
- target: "esnext",
- minify: production,
- outDir: is_lite ? resolve(__dirname, "../lite/dist") : targets[mode],
- // To build Gradio-lite as a library, we can't use the library mode
- // like `lib: is_lite && {}`
- // because it inevitably enables inlining of all the static file assets,
- // while we need to disable inlining for the wheel files to pass their URLs to `micropip.install()`.
- // So we build it as an app and only use the bundled JS and CSS files as library assets, ignoring the HTML file.
- // See also `lite.ts` about it.
- rollupOptions: is_lite
- ? {
- input: "./lite.html",
- output: {
- // To use it as a library, we don't add the hash to the file name.
- entryFileNames: "lite.js",
- assetFileNames: (file) => {
- if (file.name?.endsWith(".whl")) {
- // Python wheel files must follow the naming rules to be installed, so adding a hash to the name is not allowed.
- return `assets/[name].[ext]`;
- }
- if (file.name === "lite.css") {
- // To use it as a library, we don't add the hash to the file name.
- return `[name].[ext]`;
- } else {
- return `assets/[name]-[hash].[ext]`;
- }
- }
- }
- }
- : {
- external: ["./svelte/svelte.js"],
- makeAbsoluteExternalsRelative: false
- }
- },
-
- define: {
- BUILD_MODE: production ? JSON.stringify("prod") : JSON.stringify("dev"),
- BACKEND_URL: production
- ? JSON.stringify("")
- : JSON.stringify("http://localhost:7860/"),
- GRADIO_VERSION: JSON.stringify(version)
- },
- css: {
- postcss: {
- plugins: [
- prefixer({
- prefix: `.gradio-container-${version}`,
- // @ts-ignore
- transform(prefix, selector, prefixedSelector, fileName) {
- if (selector.indexOf("gradio-container") > -1) {
- return prefix;
- } else if (
- selector.indexOf(":root") > -1 ||
- selector.indexOf("dark") > -1 ||
- selector.indexOf("body") > -1 ||
- fileName.indexOf(".svelte") > -1
- ) {
- return selector;
- } else if (
- // For the custom element . See theme/src/global.css for the details.
- /^gradio-lite(\:[^\:]+)?/.test(selector)
- ) {
- return selector;
- }
- return prefixedSelector;
- }
- }),
- custom_media()
- ]
- }
- },
- plugins: [
- resolve_svelte(development && !is_lite),
-
- svelte({
- inspector: false,
- compilerOptions: {
- dev: true,
- discloseVersion: false,
- accessors: true
- },
- hot: !process.env.VITEST && !production,
- preprocess: sveltePreprocess({
- postcss: {
- plugins: [
- global_data({ files: [theme_token_path] }),
- custom_media()
- ]
- }
- })
- }),
- generate_dev_entry({
- enable:
- !development &&
- !is_lite && // At the moment of https://github.com/gradio-app/gradio/pull/6398, I skipped to make Gradio-lite work custom component. Will do it, and remove this condition.
- mode !== "test"
- }),
- inject_ejs(),
- generate_cdn_entry({ version: GRADIO_VERSION, cdn_base: CDN_BASE }),
- handle_ce_css(),
- inject_component_loader({ mode }),
- mode === "test" && mock_modules()
- ],
- optimizeDeps: {
- exclude: ["@ffmpeg/ffmpeg", "@ffmpeg/util"]
- },
- test: {
- setupFiles: [resolve(__dirname, "../../.config/setup_vite_tests.ts")],
- environment: TEST_MODE,
- include:
- TEST_MODE === "node"
- ? ["**/*.node-test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"]
- : ["**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
- exclude: ["**/node_modules/**", "**/gradio/gradio/**"],
- globals: true,
- onConsoleLog(log, type) {
- if (log.includes("was created with unknown prop")) return false;
- }
- },
-
- resolve: {
- alias: {
- // For the Wasm app to import the wheel file URLs.
- "gradio.whl": resolve(
- __dirname,
- `../../dist-lite/gradio-${python_version}-py3-none-any.whl`
- ),
- "gradio_client.whl": resolve(
- __dirname,
- `../../client/python/dist/gradio_client-${client_python_version}-py3-none-any.whl`
- )
- }
- },
- assetsInclude: ["**/*.whl"] // To pass URLs of built wheel files to the Wasm worker.
- };
+export default defineConfig({
+ plugins: [sveltekit()]
});
diff --git a/js/audio/audio.test.ts b/js/audio/audio.test.ts
index 4b99ecb065..810e837ca7 100644
--- a/js/audio/audio.test.ts
+++ b/js/audio/audio.test.ts
@@ -1,8 +1,8 @@
-import { test, describe, assert, afterEach, vi } from "vitest";
+import { test, describe, assert, afterEach } from "vitest";
import { cleanup, render } from "@gradio/tootils";
import Audio from "./";
import type { LoadingStatus } from "@gradio/statustracker";
-import { setupi18n } from "../app/src/i18n";
+import { setupi18n } from "../core/src/i18n";
import ResizeObserver from "resize-observer-polyfill";
global.ResizeObserver = ResizeObserver;
diff --git a/js/audio/interactive/InteractiveAudio.svelte b/js/audio/interactive/InteractiveAudio.svelte
index 7876e67449..68c5344c41 100644
--- a/js/audio/interactive/InteractiveAudio.svelte
+++ b/js/audio/interactive/InteractiveAudio.svelte
@@ -7,7 +7,7 @@
import AudioPlayer from "../player/AudioPlayer.svelte";
import type { IBlobEvent, IMediaRecorder } from "extendable-media-recorder";
- import type { I18nFormatter } from "js/app/src/gradio_helper";
+ import type { I18nFormatter } from "js/core/src/gradio_helper";
import AudioRecorder from "../recorder/AudioRecorder.svelte";
import StreamAudio from "../streaming/StreamAudio.svelte";
import { SelectSource } from "@gradio/atoms";
diff --git a/js/build/README.md b/js/build/README.md
new file mode 100644
index 0000000000..9a8109d646
--- /dev/null
+++ b/js/build/README.md
@@ -0,0 +1,3 @@
+# `@gradio/build`
+
+Build utilities for the gradio frontend + lite.
diff --git a/js/app/component_loader.js b/js/build/dist/component_loader.js
similarity index 100%
rename from js/app/component_loader.js
rename to js/build/dist/component_loader.js
diff --git a/js/build/dist/index.js b/js/build/dist/index.js
new file mode 100644
index 0000000000..7dc3d60543
--- /dev/null
+++ b/js/build/dist/index.js
@@ -0,0 +1,316 @@
+// src/index.ts
+import { parse } from "node-html-parser";
+import { join } from "path";
+import { writeFileSync } from "fs";
+import * as url from "url";
+import { readdirSync, existsSync, readFileSync, statSync } from "fs";
+function inject_ejs() {
+ return {
+ name: "inject-ejs",
+ enforce: "post",
+ transformIndexHtml: (html) => {
+ const replace_gradio_info_info_html = html.replace(
+ /%gradio_api_info%/,
+ ``
+ );
+ return replace_gradio_info_info_html.replace(
+ /%gradio_config%/,
+ ``
+ );
+ }
+ };
+}
+function generate_cdn_entry({
+ version,
+ cdn_base
+}) {
+ return {
+ name: "generate-cdn-entry",
+ enforce: "post",
+ writeBundle(config, bundle) {
+ if (!config.dir || !bundle["index.html"] || bundle["index.html"].type !== "asset")
+ return;
+ const source = bundle["index.html"].source;
+ const tree = parse(source);
+ const script = Array.from(
+ tree.querySelectorAll("script[type=module]")
+ ).find((node) => node.attributes.src?.includes("assets"));
+ const output_location = join(config.dir, "gradio.js");
+ writeFileSync(output_location, make_entry(script?.attributes.src || ""));
+ if (!script) return;
+ const transformed_html = bundle["index.html"].source.substring(0, script?.range[0]) + `` + bundle["index.html"].source.substring(
+ script?.range[1],
+ source.length
+ );
+ const share_html_location = join(config.dir, "share.html");
+ writeFileSync(share_html_location, transformed_html);
+ }
+ };
+}
+var RE_SVELTE_IMPORT = /import\s+([\w*{},\s]+)\s+from\s+['"](svelte|svelte\/internal)['"]/g;
+function generate_dev_entry({ enable }) {
+ return {
+ name: "generate-dev-entry",
+ transform(code, id) {
+ if (!enable) return;
+ const new_code = code.replace(RE_SVELTE_IMPORT, (str, $1, $2) => {
+ return `const ${$1.replace(/\* as /, "").replace(/ as /g, ": ")} = window.__gradio__svelte__internal;`;
+ });
+ return {
+ code: new_code,
+ map: null
+ };
+ }
+ };
+}
+function make_entry(script) {
+ return `import("${script}");
+`;
+}
+function handle_ce_css() {
+ return {
+ enforce: "post",
+ name: "custom-element-css",
+ writeBundle(config, bundle) {
+ let file_to_insert = {
+ filename: "",
+ source: ""
+ };
+ if (!config.dir || !bundle["index.html"] || bundle["index.html"].type !== "asset")
+ return;
+ for (const key in bundle) {
+ const chunk = bundle[key];
+ if (chunk.type === "chunk") {
+ const _chunk = chunk;
+ const found = _chunk.code?.indexOf("ENTRY_CSS");
+ if (found > -1)
+ file_to_insert = {
+ filename: join(config.dir, key),
+ source: _chunk.code
+ };
+ }
+ }
+ const tree = parse(bundle["index.html"].source);
+ const { style, fonts } = Array.from(
+ tree.querySelectorAll("link[rel=stylesheet]")
+ ).reduce(
+ (acc, next) => {
+ if (/.*\/index(.*?)\.css/.test(next.attributes.href)) {
+ return { ...acc, style: next };
+ }
+ return { ...acc, fonts: [...acc.fonts, next.attributes.href] };
+ },
+ { fonts: [], style: void 0 }
+ );
+ writeFileSync(
+ file_to_insert.filename,
+ file_to_insert.source.replace("__ENTRY_CSS__", style.attributes.href).replace(
+ '"__FONTS_CSS__"',
+ `[${fonts.map((f) => `"${f}"`).join(",")}]`
+ )
+ );
+ const share_html_location = join(config.dir, "share.html");
+ const share_html = readFileSync(share_html_location, "utf8");
+ const share_tree = parse(share_html);
+ const node = Array.from(
+ share_tree.querySelectorAll("link[rel=stylesheet]")
+ ).find((node2) => /.*\/index(.*?)\.css/.test(node2.attributes.href));
+ if (!node) return;
+ const transformed_html = share_html.substring(0, node.range[0]) + share_html.substring(node.range[1], share_html.length);
+ writeFileSync(share_html_location, transformed_html);
+ }
+ };
+}
+var __filename = url.fileURLToPath(import.meta.url);
+var __dirname = url.fileURLToPath(new URL(".", import.meta.url));
+function get_export_path(path, root, pkg_json) {
+ if (!pkg_json.exports) return void 0;
+ const _path = join(root, "..", `${pkg_json.exports[`${path}`]}`);
+ return existsSync(_path) ? _path : void 0;
+}
+var ignore_list = [
+ "tootils",
+ "_cdn-test",
+ "_spaces-test",
+ "_website",
+ "app",
+ "atoms",
+ "fallback",
+ "icons",
+ "lite",
+ "preview",
+ "simpledropdown",
+ "simpleimage",
+ "simpletextbox",
+ "storybook",
+ "theme",
+ "timeseries",
+ "tooltip",
+ "upload",
+ "utils",
+ "wasm"
+];
+function generate_component_imports() {
+ const exports = readdirSync(join(__dirname, "..", "..")).map((dir) => {
+ if (ignore_list.includes(dir)) return void 0;
+ if (!statSync(join(__dirname, "..", "..", dir)).isDirectory()) return void 0;
+ const package_json_path = join(__dirname, "..", "..", dir, "package.json");
+ if (existsSync(package_json_path)) {
+ const package_json = JSON.parse(
+ readFileSync(package_json_path, "utf8")
+ );
+ const component = get_export_path(".", package_json_path, package_json);
+ const example = get_export_path(
+ "./example",
+ package_json_path,
+ package_json
+ );
+ const base = get_export_path("./base", package_json_path, package_json);
+ if (!component && !example) return void 0;
+ return {
+ name: package_json.name,
+ component,
+ example,
+ base
+ };
+ }
+ return void 0;
+ }).filter((x) => x !== void 0);
+ const imports = exports.reduce((acc, _export) => {
+ if (!_export) return acc;
+ const example = _export.example ? `example: () => import("${_export.name}/example"),
+` : "";
+ const base = _export.base ? `base: () => import("${_export.name}/base"),
+` : "";
+ return `${acc}"${_export.name.replace("@gradio/", "")}": {
+ ${base}
+ ${example}
+ component: () => import("${_export.name}")
+ },
+`;
+ }, "");
+ return imports;
+}
+function load_virtual_component_loader(mode) {
+ const loader_path = join(__dirname, "component_loader.js");
+ let component_map = "";
+ if (mode === "test") {
+ component_map = `
+ const component_map = {
+ "test-component-one": {
+ component: () => import("@gradio-test/test-one"),
+ example: () => import("@gradio-test/test-one/example")
+ },
+ "dataset": {
+ component: () => import("@gradio-test/test-two"),
+ example: () => import("@gradio-test/test-two/example")
+ },
+ "image": {
+ component: () => import("@gradio/image"),
+ example: () => import("@gradio/image/example"),
+ base: () => import("@gradio/image/base")
+ },
+ "audio": {
+ component: () => import("@gradio/audio"),
+ example: () => import("@gradio/audio/example"),
+ base: () => import("@gradio/audio/base")
+ },
+ "video": {
+ component: () => import("@gradio/video"),
+ example: () => import("@gradio/video/example"),
+ base: () => import("@gradio/video/base")
+ },
+ // "test-component-one": {
+ // component: () => import("@gradio-test/test-one"),
+ // example: () => import("@gradio-test/test-one/example")
+ // },
+ };
+ `;
+ } else {
+ component_map = `
+ const component_map = {
+ ${generate_component_imports()}
+ };
+ `;
+ }
+ return `${component_map}
+
+${readFileSync(loader_path, "utf8")}`;
+}
+function inject_component_loader({ mode }) {
+ const v_id = "virtual:component-loader";
+ const resolved_v_id = "\0" + v_id;
+ return {
+ name: "inject-component-loader",
+ enforce: "pre",
+ resolveId(id) {
+ if (id === v_id) return resolved_v_id;
+ },
+ load(id) {
+ this.addWatchFile(join(__dirname, "component_loader.js"));
+ if (id === resolved_v_id) {
+ return load_virtual_component_loader(mode);
+ }
+ }
+ };
+}
+function resolve_svelte(enable) {
+ return {
+ enforce: "pre",
+ name: "resolve-svelte",
+ async resolveId(id) {
+ if (!enable) return;
+ if (id === "./svelte/svelte.js" || id === "svelte" || id === "svelte/internal") {
+ const mod = join(
+ __dirname,
+ "..",
+ "..",
+ "gradio",
+ "templates",
+ "frontend",
+ "assets",
+ "svelte",
+ "svelte.js"
+ );
+ return { id: mod, external: "absolute" };
+ }
+ }
+ };
+}
+function mock_modules() {
+ const v_id_1 = "@gradio-test/test-one";
+ const v_id_2 = "@gradio-test/test-two";
+ const v_id_1_example = "@gradio-test/test-one/example";
+ const v_id_2_example = "@gradio-test/test-two/example";
+ const resolved_v_id = "\0" + v_id_1;
+ const resolved_v_id_2 = "\0" + v_id_2;
+ const resolved_v_id_1_example = "\0" + v_id_1_example;
+ const resolved_v_id_2_example = "\0" + v_id_2_example;
+ const fallback_example = "@gradio/fallback/example";
+ const resolved_fallback_example = "\0" + fallback_example;
+ return {
+ name: "mock-modules",
+ enforce: "pre",
+ resolveId(id) {
+ if (id === v_id_1) return resolved_v_id;
+ if (id === v_id_2) return resolved_v_id_2;
+ if (id === v_id_1_example) return resolved_v_id_1_example;
+ if (id === v_id_2_example) return resolved_v_id_2_example;
+ if (id === fallback_example) return resolved_fallback_example;
+ },
+ load(id) {
+ if (id === resolved_v_id || id === resolved_v_id_2 || id === resolved_v_id_1_example || id === resolved_v_id_2_example || id === resolved_fallback_example) {
+ return `export default {}`;
+ }
+ }
+ };
+}
+export {
+ generate_cdn_entry,
+ generate_dev_entry,
+ handle_ce_css,
+ inject_component_loader,
+ inject_ejs,
+ mock_modules,
+ resolve_svelte
+};
diff --git a/js/build/package.json b/js/build/package.json
new file mode 100644
index 0000000000..a13c152291
--- /dev/null
+++ b/js/build/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "@gradio/build",
+ "version": "0.0.1",
+ "description": "Gradio UI packages",
+ "type": "module",
+ "main": "dist/index.js",
+ "private": "true",
+ "author": "",
+ "license": "ISC",
+ "scripts": {
+ "build": "esbuild src/index.ts --platform=node --format=esm --target=node18 --bundle --packages=external --outfile=dist/index.js"
+ },
+ "dependencies": {
+ "@gradio/theme": "workspace:^",
+ "esbuild": "^0.21.0",
+ "svelte-i18n": "^3.6.0"
+ },
+ "main_changeset": true
+}
diff --git a/js/build/src/component_loader.js b/js/build/src/component_loader.js
new file mode 100644
index 0000000000..5b4362f8ac
--- /dev/null
+++ b/js/build/src/component_loader.js
@@ -0,0 +1,81 @@
+// @ts-nocheck
+
+const request_map = {};
+
+export function load_component({ api_url, name, id, variant }) {
+ const comps = window.__GRADIO__CC__;
+
+ const _component_map = {
+ // eslint-disable-next-line no-undef
+ ...component_map,
+ ...(!comps ? {} : comps)
+ };
+
+ let _id = id || name;
+
+ if (request_map[`${_id}-${variant}`]) {
+ return { component: request_map[`${_id}-${variant}`], name };
+ }
+ try {
+ if (!_component_map?.[_id]?.[variant] && !_component_map?.[name]?.[variant])
+ throw new Error();
+
+ request_map[`${_id}-${variant}`] = (
+ _component_map?.[_id]?.[variant] || // for dev mode custom components
+ _component_map?.[name]?.[variant]
+ )();
+
+ return {
+ name,
+ component: request_map[`${_id}-${variant}`]
+ };
+ } catch (e) {
+ if (!_id) throw new Error(`Component not found: ${name}`);
+ try {
+ request_map[`${_id}-${variant}`] = get_component_with_css(
+ api_url,
+ _id,
+ variant
+ );
+
+ return {
+ name,
+ component: request_map[`${_id}-${variant}`]
+ };
+ } catch (e) {
+ if (variant === "example") {
+ request_map[`${_id}-${variant}`] = import("@gradio/fallback/example");
+
+ return {
+ name,
+ component: request_map[`${_id}-${variant}`]
+ };
+ }
+ console.error(`failed to load: ${name}`);
+ console.error(e);
+ throw e;
+ }
+ }
+}
+
+function load_css(url) {
+ return new Promise((resolve, reject) => {
+ const link = document.createElement("link");
+ link.rel = "stylesheet";
+ link.href = url;
+ document.head.appendChild(link);
+ link.onload = () => resolve();
+ link.onerror = () => reject();
+ });
+}
+
+function get_component_with_css(api_url, id, variant) {
+ return Promise.all([
+ load_css(`${api_url}/custom_component/${id}/${variant}/style.css`),
+ import(
+ /* @vite-ignore */ `${api_url}/custom_component/${id}/${variant}/index.js`
+ )
+ ]).then(([_, module]) => {
+ return module;
+ });
+}
diff --git a/js/app/build_plugins.ts b/js/build/src/index.ts
similarity index 97%
rename from js/app/build_plugins.ts
rename to js/build/src/index.ts
index e8b054a27b..2c5fd8891e 100644
--- a/js/app/build_plugins.ts
+++ b/js/build/src/index.ts
@@ -213,12 +213,12 @@ const ignore_list = [
"wasm"
];
function generate_component_imports(): string {
- const exports = readdirSync(join(__dirname, ".."))
+ const exports = readdirSync(join(__dirname, "..", ".."))
.map((dir) => {
if (ignore_list.includes(dir)) return undefined;
- if (!statSync(join(__dirname, "..", dir)).isDirectory()) return undefined;
+ if (!statSync(join(__dirname, "..","..", dir)).isDirectory()) return undefined;
- const package_json_path = join(__dirname, "..", dir, "package.json");
+ const package_json_path = join(__dirname, "..","..", dir, "package.json");
if (existsSync(package_json_path)) {
const package_json = JSON.parse(
readFileSync(package_json_path, "utf8")
@@ -246,6 +246,7 @@ function generate_component_imports(): string {
})
.filter((x) => x !== undefined);
+
const imports = exports.reduce((acc, _export) => {
if (!_export) return acc;
diff --git a/js/button/main.ts b/js/button/main.ts
new file mode 100644
index 0000000000..c517399bd8
--- /dev/null
+++ b/js/button/main.ts
@@ -0,0 +1,2 @@
+export { default as default } from "./Index.svelte";
+export { default as BaseButton } from "./shared/Button.svelte";
diff --git a/js/chatbot/shared/ChatBot.svelte b/js/chatbot/shared/ChatBot.svelte
index 7de0341828..a84a6caa48 100644
--- a/js/chatbot/shared/ChatBot.svelte
+++ b/js/chatbot/shared/ChatBot.svelte
@@ -20,7 +20,7 @@
import type { MessageRole } from "../types";
import { MarkdownCode as Markdown } from "@gradio/markdown";
import type { FileData, Client } from "@gradio/client";
- import type { I18nFormatter } from "js/app/src/gradio_helper";
+ import type { I18nFormatter } from "js/core/src/gradio_helper";
import Pending from "./Pending.svelte";
import MessageBox from "./MessageBox.svelte";
@@ -29,7 +29,8 @@
import Component from "./Component.svelte";
import LikeButtons from "./ButtonPanel.svelte";
- import type { LoadedComponent } from "../../app/src/types";
+ import type { LoadedComponent } from "../../core/src/types";
+
import CopyAll from "./CopyAll.svelte";
export let _fetch: typeof fetch;
diff --git a/js/checkboxgroup/checkboxgroup.test.ts b/js/checkboxgroup/checkboxgroup.test.ts
index 1d7ce82bf9..98932629ce 100644
--- a/js/checkboxgroup/checkboxgroup.test.ts
+++ b/js/checkboxgroup/checkboxgroup.test.ts
@@ -1,7 +1,7 @@
import { test, describe, assert, afterEach, vi } from "vitest";
import { cleanup, render } from "@gradio/tootils";
import event from "@testing-library/user-event";
-import { setupi18n } from "../app/src/i18n";
+import { setupi18n } from "../core/src/i18n";
import CheckboxGroup from "./Index.svelte";
import type { LoadingStatus } from "@gradio/statustracker";
diff --git a/js/core/.gitignore b/js/core/.gitignore
new file mode 100644
index 0000000000..6f8fe001ac
--- /dev/null
+++ b/js/core/.gitignore
@@ -0,0 +1 @@
+/src/lite/theme.css
diff --git a/js/core/blocks.ts b/js/core/blocks.ts
new file mode 100644
index 0000000000..9e1db2fe86
--- /dev/null
+++ b/js/core/blocks.ts
@@ -0,0 +1 @@
+export { default as default } from "./src/Blocks.svelte";
diff --git a/js/core/index.ts b/js/core/index.ts
new file mode 100644
index 0000000000..5f808cfb5d
--- /dev/null
+++ b/js/core/index.ts
@@ -0,0 +1,4 @@
+export { default as Embed } from "./src/Embed.svelte";
+export { prefix_css, mount_css } from "./src/css";
+export * from "./src/i18n";
+export * from "./src/types";
diff --git a/js/core/login.ts b/js/core/login.ts
new file mode 100644
index 0000000000..cfb757b1b7
--- /dev/null
+++ b/js/core/login.ts
@@ -0,0 +1 @@
+export { default as default } from "./src/Login.svelte";
diff --git a/js/core/package.json b/js/core/package.json
new file mode 100644
index 0000000000..323f68b26b
--- /dev/null
+++ b/js/core/package.json
@@ -0,0 +1,78 @@
+{
+ "name": "@gradio/core",
+ "version": "0.0.1",
+ "type": "module",
+ "devDependencies": {
+ "@gradio/accordion": "workspace:^",
+ "@gradio/annotatedimage": "workspace:^",
+ "@gradio/atoms": "workspace:^",
+ "@gradio/audio": "workspace:^",
+ "@gradio/box": "workspace:^",
+ "@gradio/button": "workspace:^",
+ "@gradio/chatbot": "workspace:^",
+ "@gradio/checkbox": "workspace:^",
+ "@gradio/checkboxgroup": "workspace:^",
+ "@gradio/client": "workspace:^",
+ "@gradio/code": "workspace:^",
+ "@gradio/colorpicker": "workspace:^",
+ "@gradio/column": "workspace:^",
+ "@gradio/dataframe": "workspace:^",
+ "@gradio/dataset": "workspace:^",
+ "@gradio/datetime": "workspace:^",
+ "@gradio/downloadbutton": "workspace:^",
+ "@gradio/dropdown": "workspace:^",
+ "@gradio/fallback": "workspace:^",
+ "@gradio/file": "workspace:^",
+ "@gradio/fileexplorer": "workspace:^",
+ "@gradio/form": "workspace:^",
+ "@gradio/gallery": "workspace:^",
+ "@gradio/group": "workspace:^",
+ "@gradio/highlightedtext": "workspace:^",
+ "@gradio/html": "workspace:^",
+ "@gradio/icons": "workspace:^",
+ "@gradio/image": "workspace:^",
+ "@gradio/imageeditor": "workspace:^",
+ "@gradio/json": "workspace:^",
+ "@gradio/label": "workspace:^",
+ "@gradio/markdown": "workspace:^",
+ "@gradio/model3d": "workspace:^",
+ "@gradio/multimodaltextbox": "workspace:^",
+ "@gradio/nativeplot": "workspace:^",
+ "@gradio/number": "workspace:^",
+ "@gradio/paramviewer": "workspace:^",
+ "@gradio/plot": "workspace:^",
+ "@gradio/radio": "workspace:^",
+ "@gradio/row": "workspace:^",
+ "@gradio/simpledropdown": "workspace:^",
+ "@gradio/simpleimage": "workspace:^",
+ "@gradio/simpletextbox": "workspace:^",
+ "@gradio/slider": "workspace:^",
+ "@gradio/state": "workspace:^",
+ "@gradio/statustracker": "workspace:^",
+ "@gradio/tabitem": "workspace:^",
+ "@gradio/tabs": "workspace:^",
+ "@gradio/textbox": "workspace:^",
+ "@gradio/theme": "workspace:^",
+ "@gradio/timer": "workspace:^",
+ "@gradio/upload": "workspace:^",
+ "@gradio/uploadbutton": "workspace:^",
+ "@gradio/utils": "workspace:^",
+ "@gradio/video": "workspace:^",
+ "@gradio/wasm": "workspace:^"
+ },
+ "msw": {
+ "workerDirectory": "public"
+ },
+ "main_changeset": true,
+ "exports": {
+ "./blocks": {
+ "svelte": "./src/Blocks.svelte"
+ },
+ "./login": {
+ "svelte": "./src/Login.svelte"
+ },
+ "./package.json": "./package.json",
+ ".": "./index.ts"
+ },
+ "main": "./index.ts"
+}
diff --git a/js/app/public/favicon.png b/js/core/public/favicon.png
similarity index 100%
rename from js/app/public/favicon.png
rename to js/core/public/favicon.png
diff --git a/js/app/public/static/img/Bunny.obj b/js/core/public/static/img/Bunny.obj
similarity index 100%
rename from js/app/public/static/img/Bunny.obj
rename to js/core/public/static/img/Bunny.obj
diff --git a/js/app/public/static/img/Duck.glb b/js/core/public/static/img/Duck.glb
similarity index 100%
rename from js/app/public/static/img/Duck.glb
rename to js/core/public/static/img/Duck.glb
diff --git a/js/app/public/static/img/api-logo.svg b/js/core/public/static/img/api-logo.svg
similarity index 100%
rename from js/app/public/static/img/api-logo.svg
rename to js/core/public/static/img/api-logo.svg
diff --git a/js/app/public/static/img/camera.svg b/js/core/public/static/img/camera.svg
similarity index 100%
rename from js/app/public/static/img/camera.svg
rename to js/core/public/static/img/camera.svg
diff --git a/js/app/public/static/img/clear.svg b/js/core/public/static/img/clear.svg
similarity index 100%
rename from js/app/public/static/img/clear.svg
rename to js/core/public/static/img/clear.svg
diff --git a/js/app/public/static/img/edit.svg b/js/core/public/static/img/edit.svg
similarity index 100%
rename from js/app/public/static/img/edit.svg
rename to js/core/public/static/img/edit.svg
diff --git a/js/app/public/static/img/javascript.svg b/js/core/public/static/img/javascript.svg
similarity index 100%
rename from js/app/public/static/img/javascript.svg
rename to js/core/public/static/img/javascript.svg
diff --git a/js/app/public/static/img/logo.svg b/js/core/public/static/img/logo.svg
similarity index 100%
rename from js/app/public/static/img/logo.svg
rename to js/core/public/static/img/logo.svg
diff --git a/js/app/public/static/img/logo_error.svg b/js/core/public/static/img/logo_error.svg
similarity index 100%
rename from js/app/public/static/img/logo_error.svg
rename to js/core/public/static/img/logo_error.svg
diff --git a/js/app/public/static/img/python.svg b/js/core/public/static/img/python.svg
similarity index 100%
rename from js/app/public/static/img/python.svg
rename to js/core/public/static/img/python.svg
diff --git a/js/app/public/static/img/undo-solid.svg b/js/core/public/static/img/undo-solid.svg
similarity index 100%
rename from js/app/public/static/img/undo-solid.svg
rename to js/core/public/static/img/undo-solid.svg
diff --git a/js/app/src/Blocks.svelte b/js/core/src/Blocks.svelte
similarity index 100%
rename from js/app/src/Blocks.svelte
rename to js/core/src/Blocks.svelte
diff --git a/js/app/src/Embed.svelte b/js/core/src/Embed.svelte
similarity index 100%
rename from js/app/src/Embed.svelte
rename to js/core/src/Embed.svelte
diff --git a/js/app/src/Login.stories.svelte b/js/core/src/Login.stories.svelte
similarity index 100%
rename from js/app/src/Login.stories.svelte
rename to js/core/src/Login.stories.svelte
diff --git a/js/app/src/Login.svelte b/js/core/src/Login.svelte
similarity index 100%
rename from js/app/src/Login.svelte
rename to js/core/src/Login.svelte
diff --git a/js/app/src/MountComponents.svelte b/js/core/src/MountComponents.svelte
similarity index 100%
rename from js/app/src/MountComponents.svelte
rename to js/core/src/MountComponents.svelte
diff --git a/js/app/src/Render.svelte b/js/core/src/Render.svelte
similarity index 100%
rename from js/app/src/Render.svelte
rename to js/core/src/Render.svelte
diff --git a/js/app/src/RenderComponent.svelte b/js/core/src/RenderComponent.svelte
similarity index 100%
rename from js/app/src/RenderComponent.svelte
rename to js/core/src/RenderComponent.svelte
diff --git a/js/app/src/api_docs/ApiBanner.svelte b/js/core/src/api_docs/ApiBanner.svelte
similarity index 96%
rename from js/app/src/api_docs/ApiBanner.svelte
rename to js/core/src/api_docs/ApiBanner.svelte
index bd2946fae0..f764434246 100644
--- a/js/app/src/api_docs/ApiBanner.svelte
+++ b/js/core/src/api_docs/ApiBanner.svelte
@@ -2,7 +2,7 @@
import { createEventDispatcher } from "svelte";
import api_logo from "./img/api-logo.svg";
import Clear from "./img/clear.svelte";
- import Button from "../../../button/shared/Button.svelte";
+ import { BaseButton } from "@gradio/button";
export let root: string;
export let api_count: number;
@@ -19,7 +19,7 @@
-
API Recorder
-
+
{api_count} API endpoint{#if api_count > 1}s{/if}
diff --git a/js/app/src/api_docs/ApiDocs.svelte b/js/core/src/api_docs/ApiDocs.svelte
similarity index 100%
rename from js/app/src/api_docs/ApiDocs.svelte
rename to js/core/src/api_docs/ApiDocs.svelte
diff --git a/js/app/src/api_docs/ApiRecorder.svelte b/js/core/src/api_docs/ApiRecorder.svelte
similarity index 100%
rename from js/app/src/api_docs/ApiRecorder.svelte
rename to js/core/src/api_docs/ApiRecorder.svelte
diff --git a/js/app/src/api_docs/CodeSnippet.svelte b/js/core/src/api_docs/CodeSnippet.svelte
similarity index 95%
rename from js/app/src/api_docs/CodeSnippet.svelte
rename to js/core/src/api_docs/CodeSnippet.svelte
index 4069f48080..6b05a8a309 100644
--- a/js/app/src/api_docs/CodeSnippet.svelte
+++ b/js/core/src/api_docs/CodeSnippet.svelte
@@ -54,7 +54,8 @@
class="highlight">import
Client{#if has_file_path}, handle_file{/if}
-client = Client("{space_id || root}" {#if username !== null}, auth=("{username}", **password**){/if})
+client = Client("{space_id || root}" {#if username !== null}, auth=("{username}", **password**){/if})
result = client.predict ({#each endpoint_parameters as { python_type, example_input, parameter_name, parameter_has_default, parameter_default }, i} {:else}{represent_value(example_input, python_type.type, "bash")}{#if i < endpoint_parameters.length - 1},
+ {represent_value(
+ example_input,
+ python_type.type,
+ "bash"
+ )}{#if i < endpoint_parameters.length - 1},
{/if}
{/each}
]{"}"}' \
diff --git a/js/app/src/api_docs/CopyButton.svelte b/js/core/src/api_docs/CopyButton.svelte
similarity index 100%
rename from js/app/src/api_docs/CopyButton.svelte
rename to js/core/src/api_docs/CopyButton.svelte
diff --git a/js/app/src/api_docs/EndpointDetail.svelte b/js/core/src/api_docs/EndpointDetail.svelte
similarity index 100%
rename from js/app/src/api_docs/EndpointDetail.svelte
rename to js/core/src/api_docs/EndpointDetail.svelte
diff --git a/js/app/src/api_docs/InputPayload.svelte b/js/core/src/api_docs/InputPayload.svelte
similarity index 100%
rename from js/app/src/api_docs/InputPayload.svelte
rename to js/core/src/api_docs/InputPayload.svelte
diff --git a/js/app/src/api_docs/InstallSnippet.svelte b/js/core/src/api_docs/InstallSnippet.svelte
similarity index 100%
rename from js/app/src/api_docs/InstallSnippet.svelte
rename to js/core/src/api_docs/InstallSnippet.svelte
diff --git a/js/app/src/api_docs/NoApi.svelte b/js/core/src/api_docs/NoApi.svelte
similarity index 100%
rename from js/app/src/api_docs/NoApi.svelte
rename to js/core/src/api_docs/NoApi.svelte
diff --git a/js/app/src/api_docs/ParametersSnippet.svelte b/js/core/src/api_docs/ParametersSnippet.svelte
similarity index 100%
rename from js/app/src/api_docs/ParametersSnippet.svelte
rename to js/core/src/api_docs/ParametersSnippet.svelte
diff --git a/js/app/src/api_docs/RecordingSnippet.svelte b/js/core/src/api_docs/RecordingSnippet.svelte
similarity index 96%
rename from js/app/src/api_docs/RecordingSnippet.svelte
rename to js/core/src/api_docs/RecordingSnippet.svelte
index 6f85e8444e..ce05d948db 100644
--- a/js/app/src/api_docs/RecordingSnippet.svelte
+++ b/js/core/src/api_docs/RecordingSnippet.svelte
@@ -134,7 +134,8 @@
class="highlight">import Client, file
-client = Client("{short_root}" {#if username !== null}, auth=("{username}", **password**){/if})
+client = Client("{short_root}" {#if username !== null}, auth=("{username}", **password**){/if})
{#each py_zipped as { call, api_name }}
client."{short_root}" {#if username !== null}, {auth: ["{username}", **password**]}{/if});
{#each js_zipped as { call, api_name }}
-await client.predict(
+await client.predict(
"/{api_name}" {#if call}, {/if}{call});
+ >{#if call},
+ {/if}{call});
{/each}
diff --git a/js/app/src/api_docs/ResponseSnippet.svelte b/js/core/src/api_docs/ResponseSnippet.svelte
similarity index 100%
rename from js/app/src/api_docs/ResponseSnippet.svelte
rename to js/core/src/api_docs/ResponseSnippet.svelte
diff --git a/js/app/src/api_docs/TryButton.svelte b/js/core/src/api_docs/TryButton.svelte
similarity index 100%
rename from js/app/src/api_docs/TryButton.svelte
rename to js/core/src/api_docs/TryButton.svelte
diff --git a/js/app/src/api_docs/img/api-logo.svg b/js/core/src/api_docs/img/api-logo.svg
similarity index 100%
rename from js/app/src/api_docs/img/api-logo.svg
rename to js/core/src/api_docs/img/api-logo.svg
diff --git a/js/app/src/api_docs/img/bash.svg b/js/core/src/api_docs/img/bash.svg
similarity index 100%
rename from js/app/src/api_docs/img/bash.svg
rename to js/core/src/api_docs/img/bash.svg
diff --git a/js/app/src/api_docs/img/clear.svelte b/js/core/src/api_docs/img/clear.svelte
similarity index 100%
rename from js/app/src/api_docs/img/clear.svelte
rename to js/core/src/api_docs/img/clear.svelte
diff --git a/js/app/src/api_docs/img/javascript.svg b/js/core/src/api_docs/img/javascript.svg
similarity index 100%
rename from js/app/src/api_docs/img/javascript.svg
rename to js/core/src/api_docs/img/javascript.svg
diff --git a/js/app/src/api_docs/img/python.svg b/js/core/src/api_docs/img/python.svg
similarity index 100%
rename from js/app/src/api_docs/img/python.svg
rename to js/core/src/api_docs/img/python.svg
diff --git a/js/app/src/api_docs/index.ts b/js/core/src/api_docs/index.ts
similarity index 100%
rename from js/app/src/api_docs/index.ts
rename to js/core/src/api_docs/index.ts
diff --git a/js/app/src/api_docs/utils.ts b/js/core/src/api_docs/utils.ts
similarity index 100%
rename from js/app/src/api_docs/utils.ts
rename to js/core/src/api_docs/utils.ts
diff --git a/js/app/src/css.ts b/js/core/src/css.ts
similarity index 100%
rename from js/app/src/css.ts
rename to js/core/src/css.ts
diff --git a/js/app/src/gradio_helper.ts b/js/core/src/gradio_helper.ts
similarity index 100%
rename from js/app/src/gradio_helper.ts
rename to js/core/src/gradio_helper.ts
diff --git a/js/app/src/i18n.test.ts b/js/core/src/i18n.test.ts
similarity index 100%
rename from js/app/src/i18n.test.ts
rename to js/core/src/i18n.test.ts
diff --git a/js/app/src/i18n.ts b/js/core/src/i18n.ts
similarity index 100%
rename from js/app/src/i18n.ts
rename to js/core/src/i18n.ts
diff --git a/js/app/src/images/lightning.svg b/js/core/src/images/lightning.svg
similarity index 100%
rename from js/app/src/images/lightning.svg
rename to js/core/src/images/lightning.svg
diff --git a/js/app/src/images/logo.svg b/js/core/src/images/logo.svg
similarity index 100%
rename from js/app/src/images/logo.svg
rename to js/core/src/images/logo.svg
diff --git a/js/app/src/images/play.svg b/js/core/src/images/play.svg
similarity index 100%
rename from js/app/src/images/play.svg
rename to js/core/src/images/play.svg
diff --git a/js/app/src/images/spaces.svg b/js/core/src/images/spaces.svg
similarity index 100%
rename from js/app/src/images/spaces.svg
rename to js/core/src/images/spaces.svg
diff --git a/js/app/src/init.test.ts b/js/core/src/init.test.ts
similarity index 100%
rename from js/app/src/init.test.ts
rename to js/core/src/init.test.ts
diff --git a/js/app/src/init.ts b/js/core/src/init.ts
similarity index 100%
rename from js/app/src/init.ts
rename to js/core/src/init.ts
diff --git a/js/app/src/lang/BCP47_codes.js b/js/core/src/lang/BCP47_codes.js
similarity index 100%
rename from js/app/src/lang/BCP47_codes.js
rename to js/core/src/lang/BCP47_codes.js
diff --git a/js/app/src/lang/README.md b/js/core/src/lang/README.md
similarity index 85%
rename from js/app/src/lang/README.md
rename to js/core/src/lang/README.md
index db53473385..024b60f9f4 100644
--- a/js/app/src/lang/README.md
+++ b/js/core/src/lang/README.md
@@ -6,6 +6,6 @@ To add your language, do the following steps:
1. Create a new json file in this directory
2. Name the file after the language code (Here's a list: http://4umi.com/web/html/languagecodes.php)
-3. Please provide clear and complete translations. Take a look at the [`en.json`](https://github.com/gradio-app/gradio/blob/master/js/app/public/lang/en.json) file for the corresponding English text.
+3. Please provide clear and complete translations. Take a look at the [`en.json`](https://github.com/gradio-app/gradio/blob/master/js/core/public/lang/en.json) file for the corresponding English text.
That's it!
diff --git a/js/app/src/lang/ar.json b/js/core/src/lang/ar.json
similarity index 100%
rename from js/app/src/lang/ar.json
rename to js/core/src/lang/ar.json
diff --git a/js/app/src/lang/ca.json b/js/core/src/lang/ca.json
similarity index 100%
rename from js/app/src/lang/ca.json
rename to js/core/src/lang/ca.json
diff --git a/js/app/src/lang/ckb.json b/js/core/src/lang/ckb.json
similarity index 100%
rename from js/app/src/lang/ckb.json
rename to js/core/src/lang/ckb.json
diff --git a/js/app/src/lang/de.json b/js/core/src/lang/de.json
similarity index 100%
rename from js/app/src/lang/de.json
rename to js/core/src/lang/de.json
diff --git a/js/app/src/lang/en.json b/js/core/src/lang/en.json
similarity index 100%
rename from js/app/src/lang/en.json
rename to js/core/src/lang/en.json
diff --git a/js/app/src/lang/es.json b/js/core/src/lang/es.json
similarity index 100%
rename from js/app/src/lang/es.json
rename to js/core/src/lang/es.json
diff --git a/js/app/src/lang/eu.json b/js/core/src/lang/eu.json
similarity index 100%
rename from js/app/src/lang/eu.json
rename to js/core/src/lang/eu.json
diff --git a/js/app/src/lang/fa.json b/js/core/src/lang/fa.json
similarity index 100%
rename from js/app/src/lang/fa.json
rename to js/core/src/lang/fa.json
diff --git a/js/app/src/lang/fr.json b/js/core/src/lang/fr.json
similarity index 100%
rename from js/app/src/lang/fr.json
rename to js/core/src/lang/fr.json
diff --git a/js/app/src/lang/he.json b/js/core/src/lang/he.json
similarity index 100%
rename from js/app/src/lang/he.json
rename to js/core/src/lang/he.json
diff --git a/js/app/src/lang/hi.json b/js/core/src/lang/hi.json
similarity index 100%
rename from js/app/src/lang/hi.json
rename to js/core/src/lang/hi.json
diff --git a/js/app/src/lang/ja.json b/js/core/src/lang/ja.json
similarity index 100%
rename from js/app/src/lang/ja.json
rename to js/core/src/lang/ja.json
diff --git a/js/app/src/lang/ko.json b/js/core/src/lang/ko.json
similarity index 100%
rename from js/app/src/lang/ko.json
rename to js/core/src/lang/ko.json
diff --git a/js/app/src/lang/lt.json b/js/core/src/lang/lt.json
similarity index 100%
rename from js/app/src/lang/lt.json
rename to js/core/src/lang/lt.json
diff --git a/js/app/src/lang/nl.json b/js/core/src/lang/nl.json
similarity index 100%
rename from js/app/src/lang/nl.json
rename to js/core/src/lang/nl.json
diff --git a/js/app/src/lang/pl.json b/js/core/src/lang/pl.json
similarity index 100%
rename from js/app/src/lang/pl.json
rename to js/core/src/lang/pl.json
diff --git a/js/app/src/lang/pt-BR.json b/js/core/src/lang/pt-BR.json
similarity index 100%
rename from js/app/src/lang/pt-BR.json
rename to js/core/src/lang/pt-BR.json
diff --git a/js/app/src/lang/ru.json b/js/core/src/lang/ru.json
similarity index 100%
rename from js/app/src/lang/ru.json
rename to js/core/src/lang/ru.json
diff --git a/js/app/src/lang/ta.json b/js/core/src/lang/ta.json
similarity index 100%
rename from js/app/src/lang/ta.json
rename to js/core/src/lang/ta.json
diff --git a/js/app/src/lang/tr.json b/js/core/src/lang/tr.json
similarity index 100%
rename from js/app/src/lang/tr.json
rename to js/core/src/lang/tr.json
diff --git a/js/app/src/lang/uk.json b/js/core/src/lang/uk.json
similarity index 100%
rename from js/app/src/lang/uk.json
rename to js/core/src/lang/uk.json
diff --git a/js/app/src/lang/ur.json b/js/core/src/lang/ur.json
similarity index 100%
rename from js/app/src/lang/ur.json
rename to js/core/src/lang/ur.json
diff --git a/js/app/src/lang/uz.json b/js/core/src/lang/uz.json
similarity index 100%
rename from js/app/src/lang/uz.json
rename to js/core/src/lang/uz.json
diff --git a/js/app/src/lang/zh-CN.json b/js/core/src/lang/zh-CN.json
similarity index 100%
rename from js/app/src/lang/zh-CN.json
rename to js/core/src/lang/zh-CN.json
diff --git a/js/app/src/lang/zh-TW.json b/js/core/src/lang/zh-TW.json
similarity index 100%
rename from js/app/src/lang/zh-TW.json
rename to js/core/src/lang/zh-TW.json
diff --git a/js/core/src/s-blocks.ts b/js/core/src/s-blocks.ts
new file mode 100644
index 0000000000..18a7039466
--- /dev/null
+++ b/js/core/src/s-blocks.ts
@@ -0,0 +1 @@
+export { default as default } from "./Blocks.svelte";
diff --git a/js/core/src/s-login.ts b/js/core/src/s-login.ts
new file mode 100644
index 0000000000..623e994172
--- /dev/null
+++ b/js/core/src/s-login.ts
@@ -0,0 +1 @@
+export { default as default } from "./Login.svelte";
diff --git a/js/app/src/stores.ts b/js/core/src/stores.ts
similarity index 100%
rename from js/app/src/stores.ts
rename to js/core/src/stores.ts
diff --git a/js/app/src/types.ts b/js/core/src/types.ts
similarity index 100%
rename from js/app/src/types.ts
rename to js/core/src/types.ts
diff --git a/js/app/src/vite-env-override.d.ts b/js/core/src/vite-env-override.d.ts
similarity index 100%
rename from js/app/src/vite-env-override.d.ts
rename to js/core/src/vite-env-override.d.ts
diff --git a/js/dataframe/Dataframe.stories.svelte b/js/dataframe/Dataframe.stories.svelte
index 6085b78303..818a3094dc 100644
--- a/js/dataframe/Dataframe.stories.svelte
+++ b/js/dataframe/Dataframe.stories.svelte
@@ -1,6 +1,5 @@
diff --git a/js/dataframe/shared/Table.svelte b/js/dataframe/shared/Table.svelte
index 8a6c4d4fba..368f4fcd02 100644
--- a/js/dataframe/shared/Table.svelte
+++ b/js/dataframe/shared/Table.svelte
@@ -7,7 +7,7 @@
import { BaseButton } from "@gradio/button";
import EditableCell from "./EditableCell.svelte";
import type { SelectData } from "@gradio/utils";
- import type { I18nFormatter } from "js/app/src/gradio_helper";
+ import type { I18nFormatter } from "js/core/src/gradio_helper";
import { type Client } from "@gradio/client";
import VirtualTable from "./VirtualTable.svelte";
import type {
diff --git a/js/dropdown/dropdown.test.ts b/js/dropdown/dropdown.test.ts
index 0b16da38de..8262f2cfdf 100644
--- a/js/dropdown/dropdown.test.ts
+++ b/js/dropdown/dropdown.test.ts
@@ -1,7 +1,7 @@
import { test, describe, assert, afterEach, vi } from "vitest";
import { cleanup, render } from "@gradio/tootils";
import event from "@testing-library/user-event";
-import { setupi18n } from "../app/src/i18n";
+import { setupi18n } from "../core/src/i18n";
import Dropdown from "./Index.svelte";
import type { LoadingStatus } from "@gradio/statustracker";
diff --git a/js/gallery/Gallery.test.ts b/js/gallery/Gallery.test.ts
index b6a731344c..e94eaf2d1c 100644
--- a/js/gallery/Gallery.test.ts
+++ b/js/gallery/Gallery.test.ts
@@ -1,6 +1,6 @@
import { test, describe, assert, afterEach, vi } from "vitest";
import { cleanup, render } from "@gradio/tootils";
-import { setupi18n } from "../app/src/i18n";
+import { setupi18n } from "../core/src/i18n";
import Gallery from "./Index.svelte";
import type { LoadingStatus } from "@gradio/statustracker";
diff --git a/js/highlightedtext/highlightedtext.test.ts b/js/highlightedtext/highlightedtext.test.ts
index f6d8e195a2..56d4e08bbc 100644
--- a/js/highlightedtext/highlightedtext.test.ts
+++ b/js/highlightedtext/highlightedtext.test.ts
@@ -1,6 +1,6 @@
import { test, describe, assert, afterEach } from "vitest";
import { cleanup, fireEvent, render } from "@gradio/tootils";
-import { setupi18n } from "../app/src/i18n";
+import { setupi18n } from "../core/src/i18n";
import HighlightedText from "./Index.svelte";
import type { LoadingStatus } from "@gradio/statustracker";
diff --git a/js/image/Image.test.ts b/js/image/Image.test.ts
index 26dd23c8c2..2920f5d172 100644
--- a/js/image/Image.test.ts
+++ b/js/image/Image.test.ts
@@ -7,9 +7,8 @@ import {
beforeAll,
beforeEach
} from "vitest";
-import { spy } from "tinyspy";
import { cleanup, render } from "@gradio/tootils";
-import { setupi18n } from "../app/src/i18n";
+import { setupi18n } from "../core/src/i18n";
import Image from "./Index.svelte";
import type { LoadingStatus } from "@gradio/statustracker";
diff --git a/js/app/lite.html b/js/lite/lite.html
similarity index 92%
rename from js/app/lite.html
rename to js/lite/lite.html
index 00e812b6e5..843ed059ea 100644
--- a/js/app/lite.html
+++ b/js/lite/lite.html
@@ -15,7 +15,7 @@
crossorigin="anonymous"
/>
-
+
- import type { ThemeMode } from "../types";
+ import type { ThemeMode } from "@gradio/core";
import type { WorkerProxy } from "@gradio/wasm";
import { createEventDispatcher, onMount } from "svelte";
import { Block } from "@gradio/atoms";
import { BaseCode as Code } from "@gradio/code";
- import lightning from "../images/lightning.svg";
+ import lightning from "./images/lightning.svg";
export let is_embed: boolean;
export let theme_mode: ThemeMode | null = "system";
diff --git a/js/app/src/lite/css.ts b/js/lite/src/css.ts
similarity index 97%
rename from js/app/src/lite/css.ts
rename to js/lite/src/css.ts
index f61ebb6198..a38d9f6379 100644
--- a/js/app/src/lite/css.ts
+++ b/js/lite/src/css.ts
@@ -1,6 +1,6 @@
import type { WorkerProxy } from "@gradio/wasm";
import { is_self_host } from "@gradio/wasm/network";
-import { mount_css as default_mount_css } from "../css";
+import { mount_css as default_mount_css } from "@gradio/core";
// In the Wasm mode, we use a prebuilt CSS file `/static/css/theme.css` to apply the styles in the initialization phase,
// because it will take a long time for `theme.css` to be available after opening the app and loading the Pyodide and the server code.
diff --git a/js/app/src/lite/custom-element/indent.ts b/js/lite/src/custom-element/indent.ts
similarity index 100%
rename from js/app/src/lite/custom-element/indent.ts
rename to js/lite/src/custom-element/indent.ts
diff --git a/js/app/src/lite/custom-element/index.test.ts b/js/lite/src/custom-element/index.test.ts
similarity index 100%
rename from js/app/src/lite/custom-element/index.test.ts
rename to js/lite/src/custom-element/index.test.ts
diff --git a/js/app/src/lite/custom-element/index.ts b/js/lite/src/custom-element/index.ts
similarity index 99%
rename from js/app/src/lite/custom-element/index.ts
rename to js/lite/src/custom-element/index.ts
index 4d0c5babec..276b7fa94e 100644
--- a/js/app/src/lite/custom-element/index.ts
+++ b/js/lite/src/custom-element/index.ts
@@ -58,7 +58,7 @@ export function bootstrap_custom_element(
this.innerHTML = "";
this.controller = create({
- target: this, // Same as `js/app/src/main.ts`
+ target: this, // Same as `js/spa/src/main.ts`
code: gradioLiteAppOptions.code,
requirements: gradioLiteAppOptions.requirements,
files: gradioLiteAppOptions.files,
diff --git a/js/app/src/lite/dev/App.svelte b/js/lite/src/dev/App.svelte
similarity index 100%
rename from js/app/src/lite/dev/App.svelte
rename to js/lite/src/dev/App.svelte
diff --git a/js/app/src/lite/fetch.ts b/js/lite/src/fetch.ts
similarity index 100%
rename from js/app/src/lite/fetch.ts
rename to js/lite/src/fetch.ts
diff --git a/js/lite/src/images/lightning.svg b/js/lite/src/images/lightning.svg
new file mode 100644
index 0000000000..5ba9407ef6
--- /dev/null
+++ b/js/lite/src/images/lightning.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/js/lite/src/images/logo.svg b/js/lite/src/images/logo.svg
new file mode 100644
index 0000000000..9bfb39e2a1
--- /dev/null
+++ b/js/lite/src/images/logo.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/lite/src/images/play.svg b/js/lite/src/images/play.svg
new file mode 100644
index 0000000000..0501c58425
--- /dev/null
+++ b/js/lite/src/images/play.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/js/lite/src/images/spaces.svg b/js/lite/src/images/spaces.svg
new file mode 100644
index 0000000000..c6eb2143cb
--- /dev/null
+++ b/js/lite/src/images/spaces.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/app/src/lite/index.ts b/js/lite/src/index.ts
similarity index 98%
rename from js/app/src/lite/index.ts
rename to js/lite/src/index.ts
index a556293194..4b039745fd 100644
--- a/js/app/src/lite/index.ts
+++ b/js/lite/src/index.ts
@@ -1,5 +1,5 @@
import { type WorkerProxyOptions } from "@gradio/wasm";
-import type { ThemeMode } from "../types";
+import type { ThemeMode } from "@gradio/core";
import { bootstrap_custom_element } from "./custom-element";
declare let GRADIO_VERSION: string;
diff --git a/js/app/src/lite/sse.ts b/js/lite/src/sse.ts
similarity index 100%
rename from js/app/src/lite/sse.ts
rename to js/lite/src/sse.ts
diff --git a/js/lite/src/theme.css b/js/lite/src/theme.css
new file mode 100644
index 0000000000..19e647060c
--- /dev/null
+++ b/js/lite/src/theme.css
@@ -0,0 +1,424 @@
+:root {
+ --name: default;
+ --primary-50: #fff7ed;
+ --primary-100: #ffedd5;
+ --primary-200: #fed7aa;
+ --primary-300: #fdba74;
+ --primary-400: #fb923c;
+ --primary-500: #f97316;
+ --primary-600: #ea580c;
+ --primary-700: #c2410c;
+ --primary-800: #9a3412;
+ --primary-900: #7c2d12;
+ --primary-950: #6c2e12;
+ --secondary-50: #eff6ff;
+ --secondary-100: #dbeafe;
+ --secondary-200: #bfdbfe;
+ --secondary-300: #93c5fd;
+ --secondary-400: #60a5fa;
+ --secondary-500: #3b82f6;
+ --secondary-600: #2563eb;
+ --secondary-700: #1d4ed8;
+ --secondary-800: #1e40af;
+ --secondary-900: #1e3a8a;
+ --secondary-950: #1d3660;
+ --neutral-50: #f9fafb;
+ --neutral-100: #f3f4f6;
+ --neutral-200: #e5e7eb;
+ --neutral-300: #d1d5db;
+ --neutral-400: #9ca3af;
+ --neutral-500: #6b7280;
+ --neutral-600: #4b5563;
+ --neutral-700: #374151;
+ --neutral-800: #1f2937;
+ --neutral-900: #111827;
+ --neutral-950: #0b0f19;
+ --spacing-xxs: 1px;
+ --spacing-xs: 2px;
+ --spacing-sm: 4px;
+ --spacing-md: 6px;
+ --spacing-lg: 8px;
+ --spacing-xl: 10px;
+ --spacing-xxl: 16px;
+ --radius-xxs: 1px;
+ --radius-xs: 2px;
+ --radius-sm: 4px;
+ --radius-md: 6px;
+ --radius-lg: 8px;
+ --radius-xl: 12px;
+ --radius-xxl: 22px;
+ --text-xxs: 9px;
+ --text-xs: 10px;
+ --text-sm: 12px;
+ --text-md: 14px;
+ --text-lg: 16px;
+ --text-xl: 22px;
+ --text-xxl: 26px;
+ --font: 'Source Sans Pro', 'ui-sans-serif', 'system-ui', sans-serif;
+ --font-mono: 'IBM Plex Mono', 'ui-monospace', 'Consolas', monospace;
+ --body-background-fill: var(--background-fill-primary);
+ --body-text-color: var(--neutral-800);
+ --body-text-size: var(--text-md);
+ --body-text-weight: 400;
+ --embed-radius: var(--radius-lg);
+ --color-accent: var(--primary-500);
+ --color-accent-soft: var(--primary-50);
+ --background-fill-primary: white;
+ --background-fill-secondary: var(--neutral-50);
+ --border-color-accent: var(--primary-300);
+ --border-color-primary: var(--neutral-200);
+ --link-text-color: var(--secondary-600);
+ --link-text-color-active: var(--secondary-600);
+ --link-text-color-hover: var(--secondary-700);
+ --link-text-color-visited: var(--secondary-500);
+ --body-text-color-subdued: var(--neutral-400);
+ --accordion-text-color: var(--body-text-color);
+ --table-text-color: var(--body-text-color);
+ --shadow-drop: rgba(0,0,0,0.05) 0px 1px 2px 0px;
+ --shadow-drop-lg: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
+ --shadow-inset: rgba(0,0,0,0.05) 0px 2px 4px 0px inset;
+ --shadow-spread: 3px;
+ --block-background-fill: var(--background-fill-primary);
+ --block-border-color: var(--border-color-primary);
+ --block-border-width: 1px;
+ --block-info-text-color: var(--body-text-color-subdued);
+ --block-info-text-size: var(--text-sm);
+ --block-info-text-weight: 400;
+ --block-label-background-fill: var(--background-fill-primary);
+ --block-label-border-color: var(--border-color-primary);
+ --block-label-border-width: 1px;
+ --block-label-shadow: var(--block-shadow);
+ --block-label-text-color: var(--neutral-500);
+ --block-label-margin: 0;
+ --block-label-padding: var(--spacing-sm) var(--spacing-lg);
+ --block-label-radius: calc(var(--radius-lg) - 1px) 0 calc(var(--radius-lg) - 1px) 0;
+ --block-label-right-radius: 0 calc(var(--radius-lg) - 1px) 0 calc(var(--radius-lg) - 1px);
+ --block-label-text-size: var(--text-sm);
+ --block-label-text-weight: 400;
+ --block-padding: var(--spacing-xl) calc(var(--spacing-xl) + 2px);
+ --block-radius: var(--radius-lg);
+ --block-shadow: var(--shadow-drop);
+ --block-title-background-fill: none;
+ --block-title-border-color: none;
+ --block-title-border-width: 0px;
+ --block-title-text-color: var(--neutral-500);
+ --block-title-padding: 0;
+ --block-title-radius: none;
+ --block-title-text-size: var(--text-md);
+ --block-title-text-weight: 400;
+ --container-radius: var(--radius-lg);
+ --form-gap-width: 1px;
+ --layout-gap: var(--spacing-xxl);
+ --panel-background-fill: var(--background-fill-secondary);
+ --panel-border-color: var(--border-color-primary);
+ --panel-border-width: 0;
+ --section-header-text-size: var(--text-md);
+ --section-header-text-weight: 400;
+ --border-color-accent-subdued: var(--primary-200);
+ --code-background-fill: var(--neutral-100);
+ --checkbox-background-color: var(--background-fill-primary);
+ --checkbox-background-color-focus: var(--checkbox-background-color);
+ --checkbox-background-color-hover: var(--checkbox-background-color);
+ --checkbox-background-color-selected: var(--secondary-600);
+ --checkbox-border-color: var(--neutral-300);
+ --checkbox-border-color-focus: var(--secondary-500);
+ --checkbox-border-color-hover: var(--neutral-300);
+ --checkbox-border-color-selected: var(--secondary-600);
+ --checkbox-border-radius: var(--radius-sm);
+ --checkbox-border-width: var(--input-border-width);
+ --checkbox-label-background-fill: linear-gradient(to top, var(--neutral-50), white);
+ --checkbox-label-background-fill-hover: linear-gradient(to top, var(--neutral-100), white);
+ --checkbox-label-background-fill-selected: var(--checkbox-label-background-fill);
+ --checkbox-label-border-color: var(--border-color-primary);
+ --checkbox-label-border-color-hover: var(--checkbox-label-border-color);
+ --checkbox-label-border-width: var(--input-border-width);
+ --checkbox-label-gap: var(--spacing-lg);
+ --checkbox-label-padding: var(--spacing-md) calc(2 * var(--spacing-md));
+ --checkbox-label-shadow: var(--shadow-drop);
+ --checkbox-label-text-size: var(--text-md);
+ --checkbox-label-text-weight: 400;
+ --checkbox-check: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");
+ --radio-circle: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e");
+ --checkbox-shadow: var(--input-shadow);
+ --checkbox-label-text-color: var(--body-text-color);
+ --checkbox-label-text-color-selected: var(--checkbox-label-text-color);
+ --error-background-fill: #fef2f2;
+ --error-border-color: #b91c1c;
+ --error-border-width: 1px;
+ --error-text-color: #b91c1c;
+ --error-icon-color: #b91c1c;
+ --input-background-fill: white;
+ --input-background-fill-focus: var(--secondary-500);
+ --input-background-fill-hover: var(--input-background-fill);
+ --input-border-color: var(--border-color-primary);
+ --input-border-color-focus: var(--secondary-300);
+ --input-border-color-hover: var(--input-border-color);
+ --input-border-width: 1px;
+ --input-padding: var(--spacing-xl);
+ --input-placeholder-color: var(--neutral-400);
+ --input-radius: var(--radius-lg);
+ --input-shadow: 0 0 0 var(--shadow-spread) transparent, var(--shadow-inset);
+ --input-shadow-focus: 0 0 0 var(--shadow-spread) var(--secondary-50), var(--shadow-inset);
+ --input-text-size: var(--text-md);
+ --input-text-weight: 400;
+ --loader-color: var(--color-accent);
+ --prose-text-size: var(--text-md);
+ --prose-text-weight: 400;
+ --prose-header-text-weight: 600;
+ --slider-color: #2563eb;
+ --stat-background-fill: linear-gradient(to right, var(--primary-400), var(--primary-200));
+ --table-border-color: var(--neutral-300);
+ --table-even-background-fill: white;
+ --table-odd-background-fill: var(--neutral-50);
+ --table-radius: var(--radius-lg);
+ --table-row-focus: var(--color-accent-soft);
+ --button-border-width: var(--input-border-width);
+ --button-cancel-background-fill: linear-gradient(to bottom right, #fee2e2, #fecaca);
+ --button-cancel-background-fill-hover: linear-gradient(to bottom right, #fee2e2, #fee2e2);
+ --button-cancel-border-color: #fecaca;
+ --button-cancel-border-color-hover: var(--button-cancel-border-color);
+ --button-cancel-text-color: #dc2626;
+ --button-cancel-text-color-hover: var(--button-cancel-text-color);
+ --button-large-padding: var(--spacing-lg) calc(2 * var(--spacing-lg));
+ --button-large-radius: var(--radius-lg);
+ --button-large-text-size: var(--text-lg);
+ --button-large-text-weight: 600;
+ --button-primary-background-fill: linear-gradient(to bottom right, var(--primary-100), var(--primary-300));
+ --button-primary-background-fill-hover: linear-gradient(to bottom right, var(--primary-100), var(--primary-200));
+ --button-primary-border-color: var(--primary-200);
+ --button-primary-border-color-hover: var(--button-primary-border-color);
+ --button-primary-text-color: var(--primary-600);
+ --button-primary-text-color-hover: var(--button-primary-text-color);
+ --button-secondary-background-fill: linear-gradient(to bottom right, var(--neutral-100), var(--neutral-200));
+ --button-secondary-background-fill-hover: linear-gradient(to bottom right, var(--neutral-100), var(--neutral-100));
+ --button-secondary-border-color: var(--neutral-200);
+ --button-secondary-border-color-hover: var(--button-secondary-border-color);
+ --button-secondary-text-color: var(--neutral-700);
+ --button-secondary-text-color-hover: var(--button-secondary-text-color);
+ --button-shadow: var(--shadow-drop);
+ --button-shadow-active: var(--shadow-inset);
+ --button-shadow-hover: var(--shadow-drop-lg);
+ --button-small-padding: var(--spacing-sm) calc(2 * var(--spacing-sm));
+ --button-small-radius: var(--radius-lg);
+ --button-small-text-size: var(--text-md);
+ --button-small-text-weight: 400;
+ --button-transition: none;
+}
+.dark {
+ --body-background-fill: var(--background-fill-primary);
+ --body-text-color: var(--neutral-100);
+ --color-accent-soft: var(--neutral-700);
+ --background-fill-primary: var(--neutral-950);
+ --background-fill-secondary: var(--neutral-900);
+ --border-color-accent: var(--neutral-600);
+ --border-color-primary: var(--neutral-700);
+ --link-text-color-active: var(--secondary-500);
+ --link-text-color: var(--secondary-500);
+ --link-text-color-hover: var(--secondary-400);
+ --link-text-color-visited: var(--secondary-600);
+ --body-text-color-subdued: var(--neutral-400);
+ --accordion-text-color: var(--body-text-color);
+ --table-text-color: var(--body-text-color);
+ --shadow-spread: 1px;
+ --block-background-fill: var(--neutral-800);
+ --block-border-color: var(--border-color-primary);
+ --block_border_width: None;
+ --block-info-text-color: var(--body-text-color-subdued);
+ --block-label-background-fill: var(--background-fill-secondary);
+ --block-label-border-color: var(--border-color-primary);
+ --block_label_border_width: None;
+ --block-label-text-color: var(--neutral-200);
+ --block_shadow: None;
+ --block_title_background_fill: None;
+ --block_title_border_color: None;
+ --block_title_border_width: None;
+ --block-title-text-color: var(--neutral-200);
+ --panel-background-fill: var(--background-fill-secondary);
+ --panel-border-color: var(--border-color-primary);
+ --panel_border_width: None;
+ --border-color-accent-subdued: var(--border-color-accent);
+ --code-background-fill: var(--neutral-800);
+ --checkbox-background-color: var(--neutral-800);
+ --checkbox-background-color-focus: var(--checkbox-background-color);
+ --checkbox-background-color-hover: var(--checkbox-background-color);
+ --checkbox-background-color-selected: var(--secondary-600);
+ --checkbox-border-color: var(--neutral-700);
+ --checkbox-border-color-focus: var(--secondary-500);
+ --checkbox-border-color-hover: var(--neutral-600);
+ --checkbox-border-color-selected: var(--secondary-600);
+ --checkbox-border-width: var(--input-border-width);
+ --checkbox-label-background-fill: linear-gradient(to top, var(--neutral-900), var(--neutral-800));
+ --checkbox-label-background-fill-hover: linear-gradient(to top, var(--neutral-900), var(--neutral-800));
+ --checkbox-label-background-fill-selected: var(--checkbox-label-background-fill);
+ --checkbox-label-border-color: var(--border-color-primary);
+ --checkbox-label-border-color-hover: var(--checkbox-label-border-color);
+ --checkbox-label-border-width: var(--input-border-width);
+ --checkbox-label-text-color: var(--body-text-color);
+ --checkbox-label-text-color-selected: var(--checkbox-label-text-color);
+ --error-background-fill: var(--neutral-900);
+ --error-border-color: #ef4444;
+ --error_border_width: None;
+ --error-text-color: #fef2f2;
+ --error-icon-color: #ef4444;
+ --input-background-fill: var(--neutral-800);
+ --input-background-fill-focus: var(--secondary-600);
+ --input-background-fill-hover: var(--input-background-fill);
+ --input-border-color: var(--border-color-primary);
+ --input-border-color-focus: var(--neutral-700);
+ --input-border-color-hover: var(--input-border-color);
+ --input_border_width: None;
+ --input-placeholder-color: var(--neutral-500);
+ --input_shadow: None;
+ --input-shadow-focus: 0 0 0 var(--shadow-spread) var(--neutral-700), var(--shadow-inset);
+ --loader_color: None;
+ --slider_color: None;
+ --stat-background-fill: linear-gradient(to right, var(--primary-400), var(--primary-600));
+ --table-border-color: var(--neutral-700);
+ --table-even-background-fill: var(--neutral-950);
+ --table-odd-background-fill: var(--neutral-900);
+ --table-row-focus: var(--color-accent-soft);
+ --button-border-width: var(--input-border-width);
+ --button-cancel-background-fill: linear-gradient(to bottom right, #dc2626, #b91c1c);
+ --button-cancel-background-fill-hover: linear-gradient(to bottom right, #dc2626, #dc2626);
+ --button-cancel-border-color: #dc2626;
+ --button-cancel-border-color-hover: var(--button-cancel-border-color);
+ --button-cancel-text-color: white;
+ --button-cancel-text-color-hover: var(--button-cancel-text-color);
+ --button-primary-background-fill: linear-gradient(to bottom right, var(--primary-500), var(--primary-600));
+ --button-primary-background-fill-hover: linear-gradient(to bottom right, var(--primary-500), var(--primary-500));
+ --button-primary-border-color: var(--primary-500);
+ --button-primary-border-color-hover: var(--button-primary-border-color);
+ --button-primary-text-color: white;
+ --button-primary-text-color-hover: var(--button-primary-text-color);
+ --button-secondary-background-fill: linear-gradient(to bottom right, var(--neutral-600), var(--neutral-700));
+ --button-secondary-background-fill-hover: linear-gradient(to bottom right, var(--neutral-600), var(--neutral-600));
+ --button-secondary-border-color: var(--neutral-600);
+ --button-secondary-border-color-hover: var(--button-secondary-border-color);
+ --button-secondary-text-color: white;
+ --button-secondary-text-color-hover: var(--button-secondary-text-color);
+ --name: default;
+ --primary-50: #fff7ed;
+ --primary-100: #ffedd5;
+ --primary-200: #fed7aa;
+ --primary-300: #fdba74;
+ --primary-400: #fb923c;
+ --primary-500: #f97316;
+ --primary-600: #ea580c;
+ --primary-700: #c2410c;
+ --primary-800: #9a3412;
+ --primary-900: #7c2d12;
+ --primary-950: #6c2e12;
+ --secondary-50: #eff6ff;
+ --secondary-100: #dbeafe;
+ --secondary-200: #bfdbfe;
+ --secondary-300: #93c5fd;
+ --secondary-400: #60a5fa;
+ --secondary-500: #3b82f6;
+ --secondary-600: #2563eb;
+ --secondary-700: #1d4ed8;
+ --secondary-800: #1e40af;
+ --secondary-900: #1e3a8a;
+ --secondary-950: #1d3660;
+ --neutral-50: #f9fafb;
+ --neutral-100: #f3f4f6;
+ --neutral-200: #e5e7eb;
+ --neutral-300: #d1d5db;
+ --neutral-400: #9ca3af;
+ --neutral-500: #6b7280;
+ --neutral-600: #4b5563;
+ --neutral-700: #374151;
+ --neutral-800: #1f2937;
+ --neutral-900: #111827;
+ --neutral-950: #0b0f19;
+ --spacing-xxs: 1px;
+ --spacing-xs: 2px;
+ --spacing-sm: 4px;
+ --spacing-md: 6px;
+ --spacing-lg: 8px;
+ --spacing-xl: 10px;
+ --spacing-xxl: 16px;
+ --radius-xxs: 1px;
+ --radius-xs: 2px;
+ --radius-sm: 4px;
+ --radius-md: 6px;
+ --radius-lg: 8px;
+ --radius-xl: 12px;
+ --radius-xxl: 22px;
+ --text-xxs: 9px;
+ --text-xs: 10px;
+ --text-sm: 12px;
+ --text-md: 14px;
+ --text-lg: 16px;
+ --text-xl: 22px;
+ --text-xxl: 26px;
+ --font: 'Source Sans Pro', 'ui-sans-serif', 'system-ui', sans-serif;
+ --font-mono: 'IBM Plex Mono', 'ui-monospace', 'Consolas', monospace;
+ --body-text-size: var(--text-md);
+ --body-text-weight: 400;
+ --embed-radius: var(--radius-lg);
+ --color-accent: var(--primary-500);
+ --shadow-drop: rgba(0,0,0,0.05) 0px 1px 2px 0px;
+ --shadow-drop-lg: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
+ --shadow-inset: rgba(0,0,0,0.05) 0px 2px 4px 0px inset;
+ --block-border-width: 1px;
+ --block-info-text-size: var(--text-sm);
+ --block-info-text-weight: 400;
+ --block-label-border-width: 1px;
+ --block-label-shadow: var(--block-shadow);
+ --block-label-margin: 0;
+ --block-label-padding: var(--spacing-sm) var(--spacing-lg);
+ --block-label-radius: calc(var(--radius-lg) - 1px) 0 calc(var(--radius-lg) - 1px) 0;
+ --block-label-right-radius: 0 calc(var(--radius-lg) - 1px) 0 calc(var(--radius-lg) - 1px);
+ --block-label-text-size: var(--text-sm);
+ --block-label-text-weight: 400;
+ --block-padding: var(--spacing-xl) calc(var(--spacing-xl) + 2px);
+ --block-radius: var(--radius-lg);
+ --block-shadow: var(--shadow-drop);
+ --block-title-background-fill: none;
+ --block-title-border-color: none;
+ --block-title-border-width: 0px;
+ --block-title-padding: 0;
+ --block-title-radius: none;
+ --block-title-text-size: var(--text-md);
+ --block-title-text-weight: 400;
+ --container-radius: var(--radius-lg);
+ --form-gap-width: 1px;
+ --layout-gap: var(--spacing-xxl);
+ --panel-border-width: 0;
+ --section-header-text-size: var(--text-md);
+ --section-header-text-weight: 400;
+ --checkbox-border-radius: var(--radius-sm);
+ --checkbox-label-gap: var(--spacing-lg);
+ --checkbox-label-padding: var(--spacing-md) calc(2 * var(--spacing-md));
+ --checkbox-label-shadow: var(--shadow-drop);
+ --checkbox-label-text-size: var(--text-md);
+ --checkbox-label-text-weight: 400;
+ --checkbox-check: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");
+ --radio-circle: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e");
+ --checkbox-shadow: var(--input-shadow);
+ --error-border-width: 1px;
+ --input-border-width: 1px;
+ --input-padding: var(--spacing-xl);
+ --input-radius: var(--radius-lg);
+ --input-shadow: 0 0 0 var(--shadow-spread) transparent, var(--shadow-inset);
+ --input-text-size: var(--text-md);
+ --input-text-weight: 400;
+ --loader-color: var(--color-accent);
+ --prose-text-size: var(--text-md);
+ --prose-text-weight: 400;
+ --prose-header-text-weight: 600;
+ --slider-color: #2563eb;
+ --table-radius: var(--radius-lg);
+ --button-large-padding: var(--spacing-lg) calc(2 * var(--spacing-lg));
+ --button-large-radius: var(--radius-lg);
+ --button-large-text-size: var(--text-lg);
+ --button-large-text-weight: 600;
+ --button-shadow: var(--shadow-drop);
+ --button-shadow-active: var(--shadow-inset);
+ --button-shadow-hover: var(--shadow-drop-lg);
+ --button-small-padding: var(--spacing-sm) calc(2 * var(--spacing-sm));
+ --button-small-radius: var(--radius-lg);
+ --button-small-text-size: var(--text-md);
+ --button-small-text-weight: 400;
+ --button-transition: none;
+}
\ No newline at end of file
diff --git a/js/lite/vite.config.ts b/js/lite/vite.config.ts
new file mode 100644
index 0000000000..7ee9c2a3b2
--- /dev/null
+++ b/js/lite/vite.config.ts
@@ -0,0 +1,197 @@
+import { defineConfig } from "vite";
+import { svelte } from "@sveltejs/vite-plugin-svelte";
+import sveltePreprocess from "svelte-preprocess";
+// @ts-ignore
+import custom_media from "postcss-custom-media";
+import global_data from "@csstools/postcss-global-data";
+// @ts-ignore
+import prefixer from "postcss-prefix-selector";
+import { readFileSync } from "fs";
+import { resolve } from "path";
+
+const version_path = resolve(__dirname, "../../gradio/package.json");
+const theme_token_path = resolve(__dirname, "../theme/src/tokens.css");
+const version_raw = JSON.parse(
+ readFileSync(version_path, { encoding: "utf-8" })
+).version.trim();
+const version = version_raw.replace(/\./g, "-");
+
+function convert_to_pypi_prerelease(version: string) {
+ return version.replace(
+ /(\d+\.\d+\.\d+)-([-a-z]+)\.(\d+)/,
+ (match, v, tag, tag_version) => {
+ if (tag === "beta") {
+ return `${v}b${tag_version}`;
+ } else if (tag === "alpha") {
+ return `${v}a${tag_version}`;
+ } else {
+ return version;
+ }
+ }
+ );
+}
+
+const python_version = convert_to_pypi_prerelease(version_raw);
+
+const client_version_path = resolve(
+ __dirname,
+ "../../client/python/gradio_client/package.json"
+);
+const client_version_raw = JSON.parse(
+ readFileSync(client_version_path, {
+ encoding: "utf-8"
+ })
+).version.trim();
+
+const client_python_version = convert_to_pypi_prerelease(client_version_raw);
+
+import {
+ inject_ejs,
+ generate_cdn_entry,
+ handle_ce_css,
+ inject_component_loader,
+ mock_modules
+} from "@gradio/build";
+
+const GRADIO_VERSION = version_raw || "asd_stub_asd";
+const CDN_BASE = "https://gradio.s3-us-west-2.amazonaws.com";
+const TEST_MODE = process.env.TEST_MODE || "happy-dom";
+
+//@ts-ignore
+export default defineConfig(({ mode }) => {
+ const production = mode === "production";
+
+ return {
+ base: "./",
+
+ server: {
+ port: 9876,
+ open: "/lite.html"
+ },
+
+ build: {
+ sourcemap: true,
+ target: "esnext",
+ minify: production,
+ outDir: resolve(__dirname, "../lite/dist"),
+ // To build Gradio-lite as a library, we can't use the library mode
+ // like `lib: is_lite && {}`
+ // because it inevitably enables inlining of all the static file assets,
+ // while we need to disable inlining for the wheel files to pass their URLs to `micropip.install()`.
+ // So we build it as an app and only use the bundled JS and CSS files as library assets, ignoring the HTML file.
+ // See also `lite.ts` about it.
+ rollupOptions: {
+ input: "./lite.html",
+ output: {
+ // To use it as a library, we don't add the hash to the file name.
+ entryFileNames: "lite.js",
+ assetFileNames: (file) => {
+ if (file.name?.endsWith(".whl")) {
+ // Python wheel files must follow the naming rules to be installed, so adding a hash to the name is not allowed.
+ return `assets/[name].[ext]`;
+ }
+ if (file.name === "lite.css") {
+ // To use it as a library, we don't add the hash to the file name.
+ return `[name].[ext]`;
+ } else {
+ return `assets/[name]-[hash].[ext]`;
+ }
+ }
+ }
+ }
+ },
+
+ define: {
+ BUILD_MODE: production ? JSON.stringify("prod") : JSON.stringify("dev"),
+ BACKEND_URL: production
+ ? JSON.stringify("")
+ : JSON.stringify("http://localhost:7860/"),
+ GRADIO_VERSION: JSON.stringify(version)
+ },
+ css: {
+ postcss: {
+ plugins: [
+ prefixer({
+ prefix: `.gradio-container-${version}`,
+ // @ts-ignore
+ transform(prefix, selector, prefixedSelector, fileName) {
+ if (selector.indexOf("gradio-container") > -1) {
+ return prefix;
+ } else if (
+ selector.indexOf(":root") > -1 ||
+ selector.indexOf("dark") > -1 ||
+ selector.indexOf("body") > -1 ||
+ fileName.indexOf(".svelte") > -1
+ ) {
+ return selector;
+ } else if (
+ // For the custom element . See theme/src/global.css for the details.
+ /^gradio-lite(\:[^\:]+)?/.test(selector)
+ ) {
+ return selector;
+ }
+ return prefixedSelector;
+ }
+ }),
+ custom_media()
+ ]
+ }
+ },
+ plugins: [
+ svelte({
+ inspector: false,
+ compilerOptions: {
+ dev: true,
+ discloseVersion: false,
+ accessors: true
+ },
+ hot: !process.env.VITEST && !production,
+ preprocess: sveltePreprocess({
+ postcss: {
+ plugins: [
+ global_data({ files: [theme_token_path] }),
+ custom_media()
+ ]
+ }
+ })
+ }),
+
+ inject_ejs(),
+ generate_cdn_entry({ version: GRADIO_VERSION, cdn_base: CDN_BASE }),
+ handle_ce_css(),
+ inject_component_loader({ mode }),
+ mode === "test" && mock_modules()
+ ],
+ optimizeDeps: {
+ exclude: ["@ffmpeg/ffmpeg", "@ffmpeg/util"]
+ },
+ test: {
+ setupFiles: [resolve(__dirname, "../../.config/setup_vite_tests.ts")],
+ environment: TEST_MODE,
+ include:
+ TEST_MODE === "node"
+ ? ["**/*.node-test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"]
+ : ["**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
+ exclude: ["**/node_modules/**", "**/gradio/gradio/**"],
+ globals: true,
+ onConsoleLog(log, type) {
+ if (log.includes("was created with unknown prop")) return false;
+ }
+ },
+
+ resolve: {
+ alias: {
+ // For the Wasm app to import the wheel file URLs.
+ "gradio.whl": resolve(
+ __dirname,
+ `../../dist-lite/gradio-${python_version}-py3-none-any.whl`
+ ),
+ "gradio_client.whl": resolve(
+ __dirname,
+ `../../client/python/dist/gradio_client-${client_python_version}-py3-none-any.whl`
+ )
+ }
+ },
+ assetsInclude: ["**/*.whl"] // To pass URLs of built wheel files to the Wasm worker.
+ };
+});
diff --git a/js/plot/shared/Plot.svelte b/js/plot/shared/Plot.svelte
index 05450cfad7..c9befc3d8e 100644
--- a/js/plot/shared/Plot.svelte
+++ b/js/plot/shared/Plot.svelte
@@ -2,7 +2,7 @@
//@ts-nocheck
import { Plot as PlotIcon } from "@gradio/icons";
import { Empty } from "@gradio/atoms";
- import type { ThemeMode } from "js/app/src/components/types";
+ import type { ThemeMode } from "js/core/src/components/types";
import type { Gradio, SelectData } from "@gradio/utils";
export let value;
diff --git a/js/spa/.gitignore b/js/spa/.gitignore
new file mode 100644
index 0000000000..6f8fe001ac
--- /dev/null
+++ b/js/spa/.gitignore
@@ -0,0 +1 @@
+/src/lite/theme.css
diff --git a/js/spa/component_loader.js b/js/spa/component_loader.js
new file mode 100644
index 0000000000..5b4362f8ac
--- /dev/null
+++ b/js/spa/component_loader.js
@@ -0,0 +1,81 @@
+// @ts-nocheck
+
+const request_map = {};
+
+export function load_component({ api_url, name, id, variant }) {
+ const comps = window.__GRADIO__CC__;
+
+ const _component_map = {
+ // eslint-disable-next-line no-undef
+ ...component_map,
+ ...(!comps ? {} : comps)
+ };
+
+ let _id = id || name;
+
+ if (request_map[`${_id}-${variant}`]) {
+ return { component: request_map[`${_id}-${variant}`], name };
+ }
+ try {
+ if (!_component_map?.[_id]?.[variant] && !_component_map?.[name]?.[variant])
+ throw new Error();
+
+ request_map[`${_id}-${variant}`] = (
+ _component_map?.[_id]?.[variant] || // for dev mode custom components
+ _component_map?.[name]?.[variant]
+ )();
+
+ return {
+ name,
+ component: request_map[`${_id}-${variant}`]
+ };
+ } catch (e) {
+ if (!_id) throw new Error(`Component not found: ${name}`);
+ try {
+ request_map[`${_id}-${variant}`] = get_component_with_css(
+ api_url,
+ _id,
+ variant
+ );
+
+ return {
+ name,
+ component: request_map[`${_id}-${variant}`]
+ };
+ } catch (e) {
+ if (variant === "example") {
+ request_map[`${_id}-${variant}`] = import("@gradio/fallback/example");
+
+ return {
+ name,
+ component: request_map[`${_id}-${variant}`]
+ };
+ }
+ console.error(`failed to load: ${name}`);
+ console.error(e);
+ throw e;
+ }
+ }
+}
+
+function load_css(url) {
+ return new Promise((resolve, reject) => {
+ const link = document.createElement("link");
+ link.rel = "stylesheet";
+ link.href = url;
+ document.head.appendChild(link);
+ link.onload = () => resolve();
+ link.onerror = () => reject();
+ });
+}
+
+function get_component_with_css(api_url, id, variant) {
+ return Promise.all([
+ load_css(`${api_url}/custom_component/${id}/${variant}/style.css`),
+ import(
+ /* @vite-ignore */ `${api_url}/custom_component/${id}/${variant}/index.js`
+ )
+ ]).then(([_, module]) => {
+ return module;
+ });
+}
diff --git a/js/app/index.html b/js/spa/index.html
similarity index 100%
rename from js/app/index.html
rename to js/spa/index.html
diff --git a/js/spa/package.json b/js/spa/package.json
new file mode 100644
index 0000000000..76e755d62e
--- /dev/null
+++ b/js/spa/package.json
@@ -0,0 +1,41 @@
+{
+ "name": "@gradio/spa",
+ "version": "0.0.1",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite --port 9876",
+ "dev:lite": "run-p dev:lite:*",
+ "dev:lite:self": "vite --port 9876 --mode development:lite",
+ "dev:lite:worker": "pnpm --filter @gradio/wasm dev",
+ "build": "vite build --mode production --emptyOutDir",
+ "cssbuild": "python ../../scripts/generate_theme.py --outfile ./src/lite/theme.css",
+ "pybuild:gradio": "cd ../../ && hatch build -t lite",
+ "pybuild:gradio-client": "cd ../../client/python && python -m build",
+ "pybuild": "run-p pybuild:*",
+ "build:lite": "pnpm pybuild && pnpm cssbuild && pnpm --filter @gradio/client build && pnpm --filter @gradio/wasm build && vite build --mode production:lite",
+ "preview": "vite preview",
+ "test:snapshot": "pnpm exec playwright test snapshots/ --config=../../.config/playwright.config.js",
+ "test:browser": "pnpm exec playwright test test/ --grep-invert 'reload.spec.ts' --config=../../.config/playwright.config.js",
+ "test:browser:dev": "pnpm exec playwright test test/ --ui --config=../../.config/playwright.config.js",
+ "test:browser:reload": "CI=1 pnpm exec playwright test test/ --grep 'reload.spec.ts' --config=../../.config/playwright.config.js",
+ "test:browser:lite": "GRADIO_E2E_TEST_LITE=1 pnpm test:browser",
+ "test:browser:lite:dev": "GRADIO_E2E_TEST_LITE=1 pnpm test:browser:dev",
+ "build:css": "pollen -c pollen.config.cjs -o src/pollen-dev.css"
+ },
+ "devDependencies": {
+ "@gradio/build": "workspace:^",
+ "@gradio/client": "workspace:^",
+ "@gradio/core": "workspace:^",
+ "@gradio/theme": "workspace:^",
+ "@gradio/wasm": "workspace:^",
+ "@huggingface/space-header": "^1.0.3",
+ "@types/eventsource": "^1.1.15",
+ "cross-env": "^7.0.3"
+ },
+ "msw": {
+ "workerDirectory": "public"
+ },
+ "main_changeset": true,
+ "main": "./src/Index.svelte"
+}
diff --git a/js/app/postcss.config.js b/js/spa/postcss.config.js
similarity index 100%
rename from js/app/postcss.config.js
rename to js/spa/postcss.config.js
diff --git a/js/spa/public/favicon.png b/js/spa/public/favicon.png
new file mode 100644
index 0000000000..7e6f5eb5a2
Binary files /dev/null and b/js/spa/public/favicon.png differ
diff --git a/js/spa/public/static/img/Bunny.obj b/js/spa/public/static/img/Bunny.obj
new file mode 100644
index 0000000000..9baeb363cc
--- /dev/null
+++ b/js/spa/public/static/img/Bunny.obj
@@ -0,0 +1,7474 @@
+# OBJ file format with ext .obj
+# vertex count = 2503
+# face count = 4968
+v -3.4101800e-003 1.3031957e-001 2.1754370e-002
+v -8.1719160e-002 1.5250145e-001 2.9656090e-002
+v -3.0543480e-002 1.2477885e-001 1.0983400e-003
+v -2.4901590e-002 1.1211138e-001 3.7560240e-002
+v -1.8405680e-002 1.7843055e-001 -2.4219580e-002
+v 1.9067940e-002 1.2144925e-001 3.1968440e-002
+v 6.0412000e-003 1.2494359e-001 3.2652890e-002
+v -1.3469030e-002 1.6299355e-001 -1.2000020e-002
+v -3.4393240e-002 1.7236688e-001 -9.8213000e-004
+v -8.4314160e-002 1.0957263e-001 3.7097300e-003
+v -4.2233540e-002 1.7211574e-001 -4.1799800e-003
+v -6.3308390e-002 1.5660615e-001 -1.3838790e-002
+v -7.6903950e-002 1.6708033e-001 -2.6931360e-002
+v -7.2253920e-002 1.1539550e-001 5.1670300e-002
+v 1.2981330e-002 1.1366375e-001 3.8302950e-002
+v -3.7857280e-002 1.7010102e-001 1.4236000e-003
+v 4.8689400e-003 3.7962370e-002 4.5867630e-002
+v -5.7180550e-002 4.0918830e-002 4.6301340e-002
+v -4.5209070e-002 3.8839100e-002 4.4503770e-002
+v -3.3761490e-002 1.2617876e-001 1.7132300e-003
+v -5.0242270e-002 1.5773747e-001 9.3944500e-003
+v -2.1216950e-002 1.5887938e-001 -4.6923700e-003
+v -5.6472950e-002 1.5778406e-001 8.1786500e-003
+v -5.2802060e-002 4.1319860e-002 4.6169800e-002
+v -4.9960340e-002 4.3101950e-002 4.4462650e-002
+v -2.9748750e-002 3.6539860e-002 5.2493310e-002
+v -3.5438900e-003 4.2659770e-002 4.7541530e-002
+v 4.9304900e-003 4.1982660e-002 4.5723390e-002
+v -3.9088180e-002 1.6872020e-001 -1.1924680e-002
+v -5.6901000e-002 4.5437000e-002 4.3236960e-002
+v -4.1244880e-002 4.3098890e-002 4.2129560e-002
+v -2.6471980e-002 4.5034530e-002 5.1219460e-002
+v -2.1866970e-002 4.4022930e-002 5.3243800e-002
+v -3.6996250e-002 1.6899301e-001 1.3256300e-003
+v -6.7216590e-002 1.6171340e-001 -1.3733710e-002
+v 4.9760060e-002 7.0235220e-002 2.3732020e-002
+v -4.9186640e-002 4.6411230e-002 4.1170040e-002
+v -4.4590380e-002 4.3797990e-002 4.2685460e-002
+v -4.3686470e-002 4.7154500e-002 4.0286310e-002
+v -2.2491950e-002 4.6513620e-002 5.1885310e-002
+v -6.5174200e-003 4.5036200e-002 4.7502780e-002
+v 3.7699000e-004 4.4935790e-002 4.6519930e-002
+v 3.4023920e-002 1.1353879e-001 2.4595280e-002
+v -2.6467900e-002 1.8104250e-001 -8.0811700e-003
+v -1.7533470e-002 4.7964250e-002 4.8829630e-002
+v -7.0012600e-003 4.6416520e-002 4.7485540e-002
+v 5.9862300e-003 4.6689140e-002 4.9073620e-002
+v 9.1007200e-003 4.8474490e-002 4.9353190e-002
+v -3.5453700e-002 1.1244769e-001 3.5055410e-002
+v -7.5983200e-002 1.3820800e-001 4.9216580e-002
+v 3.4838440e-002 4.3153410e-002 2.8954310e-002
+v -5.2655550e-002 4.8494220e-002 3.8731190e-002
+v -4.7378940e-002 4.8456670e-002 3.9126790e-002
+v -3.8933750e-002 4.6364270e-002 4.0364780e-002
+v -2.6468940e-002 4.7816430e-002 4.9322590e-002
+v -2.2365790e-002 4.8073650e-002 5.0126500e-002
+v -1.3373430e-002 4.7892410e-002 4.7883850e-002
+v -1.2193490e-002 4.9470300e-002 4.9484490e-002
+v -6.3364000e-004 4.7193060e-002 4.9136900e-002
+v 2.0656800e-003 5.0104680e-002 5.2290220e-002
+v -2.2749270e-002 4.9883880e-002 4.6605520e-002
+v -1.8002080e-002 4.9917850e-002 4.6947970e-002
+v -7.8036800e-003 5.0169310e-002 5.0988650e-002
+v -2.6843800e-003 5.1247420e-002 5.3186790e-002
+v -6.3875650e-002 1.6140094e-001 -2.0064210e-002
+v 3.2434000e-002 4.5333970e-002 3.0316760e-002
+v -8.8064570e-002 1.2496764e-001 5.7412000e-004
+v -4.1503710e-002 1.6748512e-001 3.2765900e-003
+v -6.4457010e-002 1.5342891e-001 -5.1180400e-003
+v -3.4303190e-002 5.0520150e-002 3.8286020e-002
+v -2.2949400e-002 5.1020650e-002 4.3926450e-002
+v -1.4354710e-002 5.4428200e-002 5.0710310e-002
+v 1.3773100e-003 5.2302710e-002 5.3149010e-002
+v 3.6285000e-003 5.3198640e-002 5.3422710e-002
+v 8.0723800e-003 5.1574140e-002 5.1773560e-002
+v -7.2665890e-002 1.3005582e-001 5.1668200e-002
+v 3.7992780e-002 4.9793200e-002 3.1902020e-002
+v 3.8497260e-002 4.8062400e-002 3.1737450e-002
+v 2.1503510e-002 1.2563988e-001 2.1252620e-002
+v -7.6481330e-002 1.4827412e-001 -8.9376200e-003
+v -8.7240410e-002 1.1967213e-001 -1.7813000e-004
+v -4.3719960e-002 1.6822738e-001 2.3425000e-003
+v -4.0652200e-002 1.2266506e-001 2.6290300e-002
+v -4.6686180e-002 5.4570720e-002 3.7587370e-002
+v -4.4071750e-002 5.1058250e-002 3.8977810e-002
+v -3.8144110e-002 5.0599600e-002 3.9302160e-002
+v -1.9875770e-002 5.1607710e-002 4.6142000e-002
+v -1.6911250e-002 5.1843550e-002 4.8459320e-002
+v -1.6249190e-002 5.4292110e-002 5.0306940e-002
+v -1.0446540e-002 5.3685970e-002 5.1958610e-002
+v -4.3090900e-003 5.4467500e-002 5.3908250e-002
+v 7.8152700e-003 5.5050680e-002 5.2750250e-002
+v 3.7955090e-002 1.0488710e-001 -3.2031800e-003
+v -7.9003790e-002 1.2850550e-001 5.3149340e-002
+v -7.9778990e-002 1.3448894e-001 5.0990290e-002
+v -5.9129700e-002 1.5039712e-001 3.4489540e-002
+v -6.5691790e-002 1.4961818e-001 3.8160980e-002
+v -3.1951660e-002 1.2518394e-001 1.9400580e-002
+v -6.9372590e-002 1.6061775e-001 -9.1905000e-003
+v -4.5225500e-002 1.2935459e-001 2.0377520e-002
+v -4.1879110e-002 5.6164390e-002 3.9796700e-002
+v -3.0614840e-002 5.4412650e-002 3.6694290e-002
+v -2.4787600e-002 5.2606220e-002 4.0839760e-002
+v -2.1588860e-002 5.6836920e-002 4.5467040e-002
+v -2.4264000e-004 5.4536020e-002 5.4641200e-002
+v -8.0900510e-002 1.2558713e-001 5.2155370e-002
+v -2.9996210e-002 1.7811137e-001 -5.2358200e-003
+v 3.5515390e-002 5.0449570e-002 3.1439830e-002
+v 4.3315550e-002 5.2145550e-002 3.2492110e-002
+v -6.3938540e-002 1.5262699e-001 3.4481070e-002
+v -4.4489440e-002 6.1077710e-002 3.9545320e-002
+v -3.8979900e-002 5.7996270e-002 4.0151390e-002
+v -7.9087730e-002 1.7044488e-001 -4.1373170e-002
+v -4.6247300e-003 5.7759650e-002 5.3990710e-002
+v -1.4985500e-003 5.5925480e-002 5.4630800e-002
+v 5.1981700e-003 5.7017990e-002 5.3423530e-002
+v 3.0920000e-005 1.2315746e-001 3.4749660e-002
+v 3.3568300e-002 1.1523716e-001 2.1798410e-002
+v 3.8686300e-002 5.6450590e-002 3.1188930e-002
+v -3.4385780e-002 5.4096000e-002 3.8060290e-002
+v -8.5308300e-003 6.0159420e-002 5.5308950e-002
+v -4.4024000e-004 5.8343410e-002 5.4483410e-002
+v -9.1078730e-002 1.1506037e-001 4.0141810e-002
+v 4.0775480e-002 5.4557490e-002 3.2014740e-002
+v 4.5636880e-002 5.7402620e-002 3.1992220e-002
+v 2.0358850e-002 1.2448747e-001 2.5906340e-002
+v -1.4169700e-002 1.2767892e-001 1.3080500e-003
+v -1.1987590e-002 5.7493210e-002 5.2752420e-002
+v 3.2514500e-003 5.9828640e-002 5.5464300e-002
+v -1.2395240e-002 1.2264726e-001 3.3588280e-002
+v 1.3813780e-002 1.2322188e-001 3.2502590e-002
+v -7.7004310e-002 1.5521281e-001 2.4534770e-002
+v -2.8001360e-002 6.1075420e-002 3.7471210e-002
+v -8.5480000e-004 6.0593520e-002 5.5824810e-002
+v -3.8050200e-002 1.1527068e-001 3.3178540e-002
+v -1.6231340e-002 1.2382942e-001 2.9576990e-002
+v -2.5373550e-002 1.5840012e-001 -1.4801300e-003
+v -6.7818590e-002 1.5454353e-001 3.0233720e-002
+v -4.3082600e-003 6.1418570e-002 5.5688490e-002
+v -3.1958900e-003 1.1912518e-001 3.8349580e-002
+v -6.4292400e-003 1.2201090e-001 3.5740890e-002
+v 4.2312960e-002 5.9099150e-002 3.0848420e-002
+v 4.8510010e-002 6.1780760e-002 3.0347250e-002
+v 5.0412290e-002 6.0312610e-002 3.0245060e-002
+v -3.9185590e-002 6.3074530e-002 4.1382890e-002
+v -3.4448660e-002 6.0780500e-002 3.9543990e-002
+v -1.4746030e-002 6.5583910e-002 5.3730860e-002
+v 2.6645200e-003 6.2700010e-002 5.6525210e-002
+v -1.3991610e-002 1.1962575e-001 3.6251540e-002
+v 1.9659170e-002 1.1236219e-001 3.7545270e-002
+v -3.2597160e-002 1.7498725e-001 -2.5953100e-003
+v -2.1513900e-003 9.9437380e-002 4.9849750e-002
+v -5.6001390e-002 6.1830670e-002 2.7931150e-002
+v -5.4707260e-002 6.3461570e-002 3.1670590e-002
+v -5.1307940e-002 6.0521660e-002 3.1434930e-002
+v -4.1979320e-002 6.9629980e-002 4.1824930e-002
+v -3.0272490e-002 6.2474660e-002 3.7982220e-002
+v -1.1387860e-002 6.4742460e-002 5.4918000e-002
+v 6.9544900e-003 6.4700130e-002 5.5599150e-002
+v 4.3015090e-002 9.7690960e-002 1.0258300e-003
+v 4.0635900e-002 6.1574860e-002 2.9841250e-002
+v 4.6183560e-002 6.1910110e-002 3.0223400e-002
+v 3.7552960e-002 1.0685291e-001 2.6303470e-002
+v -7.8640730e-002 1.6387238e-001 -2.8387790e-002
+v -6.1996240e-002 1.4761484e-001 -4.3256800e-003
+v -5.7499800e-003 6.5488980e-002 5.6173390e-002
+v 2.5369000e-004 6.5741170e-002 5.6569260e-002
+v -2.0542550e-002 1.1979518e-001 3.3003670e-002
+v 4.3155900e-003 1.2782561e-001 2.8646880e-002
+v -4.6549580e-002 6.7652130e-002 3.9635790e-002
+v -1.7420580e-002 6.9659490e-002 5.4089530e-002
+v -1.5242190e-002 7.0909900e-002 5.5004790e-002
+v -1.0282890e-002 6.8926360e-002 5.5289610e-002
+v -1.1289000e-004 6.9288200e-002 5.6579790e-002
+v -3.6309330e-002 1.1876943e-001 3.0674020e-002
+v -7.0325800e-002 6.3367770e-002 1.9809180e-002
+v 4.3023100e-002 6.3795810e-002 2.8039210e-002
+v 4.2831110e-002 8.5556040e-002 2.7873760e-002
+v 1.6981600e-002 1.2715003e-001 2.2931490e-002
+v -4.2121490e-002 1.2825104e-001 1.0751500e-003
+v 1.6329230e-002 1.2251895e-001 3.1375390e-002
+v -8.1264160e-002 1.5381172e-001 2.5897830e-002
+v -3.2257870e-002 8.8192600e-002 -2.5130960e-002
+v -1.3774950e-002 7.0887950e-002 5.4695630e-002
+v 5.2929600e-003 6.8006030e-002 5.5670490e-002
+v 7.6962500e-003 7.2375600e-002 5.6062150e-002
+v 3.4830600e-003 1.2002635e-001 3.6911950e-002
+v 6.6532500e-003 1.1673563e-001 3.8716340e-002
+v 4.6086570e-002 6.6473930e-002 2.6808990e-002
+v 5.2327290e-002 6.4327070e-002 2.8281890e-002
+v -6.1897630e-002 1.2297065e-001 -8.7725500e-003
+v -6.3934700e-003 1.0524472e-001 -2.2841900e-002
+v -3.5218330e-002 6.8559830e-002 4.1381470e-002
+v -3.2689880e-002 6.7729720e-002 4.0124390e-002
+v -2.9245440e-002 6.9551520e-002 3.9369010e-002
+v -5.0024500e-003 6.9655000e-002 5.6892510e-002
+v 1.6573960e-002 1.1890153e-001 3.5042300e-002
+v -8.9385100e-002 9.9024040e-002 1.7521830e-002
+v 4.5719230e-002 6.9489400e-002 2.3549340e-002
+v 5.4537210e-002 6.8796720e-002 2.4517690e-002
+v -4.4989450e-002 7.1577330e-002 4.1929250e-002
+v -4.2439400e-003 1.2914902e-001 2.5829230e-002
+v -7.3880090e-002 1.2091638e-001 5.3395800e-002
+v -7.4033870e-002 1.4406894e-001 4.4994970e-002
+v 5.0400010e-002 6.7292480e-002 2.6851470e-002
+v -5.4056890e-002 1.5671602e-001 -2.4865900e-003
+v 2.6148110e-002 1.2014725e-001 2.7308010e-002
+v -1.0736490e-002 1.2990285e-001 1.0993790e-002
+v -4.5078840e-002 8.7261130e-002 -2.1865520e-002
+v -3.8340900e-002 6.8843770e-002 4.1846470e-002
+v -2.9255580e-002 7.5169210e-002 4.1186430e-002
+v -4.7311210e-002 1.6296037e-001 6.0740300e-003
+v -1.1866030e-002 7.3183750e-002 5.6250050e-002
+v -6.3734600e-003 7.2184340e-002 5.7972980e-002
+v -2.9935300e-003 7.2186440e-002 5.8167190e-002
+v -2.5781060e-002 9.3778180e-002 -2.8388220e-002
+v -1.6692560e-002 1.1568553e-001 3.7853150e-002
+v -8.4123410e-002 1.0832050e-001 2.4730980e-002
+v -7.4294080e-002 1.6356850e-001 -1.5534220e-002
+v -9.4297150e-002 1.2617744e-001 1.9224650e-002
+v -3.5207090e-002 1.2505219e-001 2.1635690e-002
+v -4.9495940e-002 7.3436340e-002 4.1673570e-002
+v -3.3064160e-002 7.6654840e-002 4.1277900e-002
+v -7.3157300e-003 7.3919590e-002 5.7971690e-002
+v 2.1850000e-005 7.3496040e-002 5.7696650e-002
+v 4.1934400e-003 7.2915170e-002 5.6298730e-002
+v -7.7256080e-002 1.4565854e-001 4.3122930e-002
+v 4.1073260e-002 8.8724320e-002 -9.7879400e-003
+v 3.7418710e-002 1.0850822e-001 3.3973000e-004
+v -5.5111380e-002 7.4687840e-002 4.1939740e-002
+v -4.2740230e-002 7.6995340e-002 4.2804080e-002
+v -6.8531190e-002 1.5630045e-001 2.0997710e-002
+v -9.9440200e-003 7.6343100e-002 5.7388560e-002
+v -3.2479200e-003 7.5710690e-002 5.8714640e-002
+v 1.3414380e-002 9.3073740e-002 5.1467750e-002
+v -7.3504440e-002 9.3883340e-002 -1.4751720e-002
+v -7.4471830e-002 1.3507476e-001 5.0688900e-002
+v -2.5851310e-002 1.2182948e-001 2.6079670e-002
+v -3.4022940e-002 1.7597076e-001 -3.7271600e-003
+v -7.5405850e-002 1.6839072e-001 -2.6792980e-002
+v -3.6658410e-002 7.5087300e-002 4.2006940e-002
+v -1.7795480e-002 7.7486190e-002 5.6087240e-002
+v -1.1378660e-002 7.9877150e-002 5.7698880e-002
+v -1.0415000e-004 7.6881950e-002 5.8190740e-002
+v 2.7381400e-003 7.9105680e-002 5.6719190e-002
+v 5.5681200e-003 7.6397140e-002 5.6327220e-002
+v -6.1895860e-002 1.5424247e-001 -1.9018600e-002
+v -7.2646960e-002 1.4098943e-001 4.6976640e-002
+v 1.5799740e-002 1.2901416e-001 1.3236870e-002
+v -1.1703420e-002 9.7355720e-002 5.1592080e-002
+v -5.8922160e-002 7.7545490e-002 4.2961390e-002
+v -5.3121320e-002 7.7912430e-002 4.3334920e-002
+v -5.0745740e-002 7.6148400e-002 4.3137630e-002
+v -4.7401820e-002 7.5550340e-002 4.2630140e-002
+v -4.5055620e-002 7.8796280e-002 4.2341310e-002
+v -3.9517650e-002 7.8127780e-002 4.2918620e-002
+v -1.5245570e-002 8.2940770e-002 5.6934590e-002
+v -1.4557790e-002 7.6582160e-002 5.6493250e-002
+v -5.9406000e-003 7.9038240e-002 5.7969830e-002
+v 3.7176540e-002 1.1064404e-001 1.8811330e-002
+v 2.3929700e-003 1.3162713e-001 1.1955100e-002
+v -9.3644210e-002 1.1789378e-001 1.8662080e-002
+v -6.3939810e-002 7.8621830e-002 4.2083520e-002
+v -4.5376460e-002 8.2383550e-002 4.3282120e-002
+v -3.6505460e-002 8.1152260e-002 4.3162320e-002
+v -3.3244340e-002 8.2266590e-002 4.1852180e-002
+v -3.0800650e-002 8.0068420e-002 4.1798070e-002
+v -2.0578500e-003 8.0998290e-002 5.7553840e-002
+v 8.1848100e-003 8.0756170e-002 5.5374510e-002
+v -1.2953370e-002 1.1593580e-001 3.8920230e-002
+v -7.8081470e-002 1.2351940e-001 5.2136990e-002
+v -2.6580930e-002 1.5567694e-001 -4.1963400e-003
+v -8.2471600e-002 1.1624130e-001 -2.3236300e-003
+v -2.7538480e-002 7.9964780e-002 4.7697210e-002
+v 1.2556400e-003 8.3845570e-002 5.7446440e-002
+v 6.1508300e-003 8.3406240e-002 5.6463500e-002
+v -6.2433240e-002 8.4035270e-002 4.4203120e-002
+v -5.9867170e-002 8.0540510e-002 4.3277090e-002
+v -5.5238340e-002 8.1999450e-002 4.4984770e-002
+v -5.4000400e-002 8.0568410e-002 4.4601460e-002
+v -5.0027020e-002 8.1311330e-002 4.4264180e-002
+v -4.1996120e-002 8.1083670e-002 4.2456150e-002
+v -3.9357940e-002 8.3631380e-002 4.3502350e-002
+v -8.6161480e-002 1.0838594e-001 1.8244920e-002
+v -8.6723010e-002 9.9917250e-002 3.5537100e-003
+v -2.2413700e-002 8.3283520e-002 5.5590700e-002
+v -1.6993180e-002 8.2555820e-002 5.7523880e-002
+v -1.2406010e-002 8.5222570e-002 5.7267780e-002
+v -7.4442100e-003 1.1693417e-001 3.9283850e-002
+v -2.1452000e-003 1.1143287e-001 4.2436620e-002
+v -7.5718220e-002 1.2522734e-001 5.3087330e-002
+v -7.7056660e-002 1.3193469e-001 5.2462430e-002
+v -6.1121040e-002 1.5569660e-001 2.2517050e-002
+v -3.7538540e-002 1.2744127e-001 1.5320870e-002
+v -2.0516700e-003 1.0093469e-001 4.5625920e-002
+v -6.4992150e-002 8.4550900e-002 4.4120060e-002
+v -5.7861950e-002 8.3944360e-002 4.4186030e-002
+v -4.5681080e-002 8.4988010e-002 4.4159500e-002
+v -3.5022640e-002 8.2888160e-002 4.2912760e-002
+v -2.9982010e-002 8.5402300e-002 4.3745080e-002
+v -8.8892260e-002 9.9209100e-002 9.5703200e-003
+v -1.9135300e-002 8.3474800e-002 5.7217390e-002
+v -8.3489710e-002 1.0724729e-001 7.5790000e-004
+v -7.0112800e-002 1.1790350e-001 5.2714160e-002
+v -3.5526320e-002 1.7595563e-001 -4.8676200e-003
+v -7.0831390e-002 1.2254425e-001 5.3274880e-002
+v 4.5133810e-002 9.3630690e-002 6.2336800e-003
+v -5.3616700e-002 8.5346850e-002 4.5332470e-002
+v -4.9000840e-002 8.6221680e-002 4.5352040e-002
+v -3.6744880e-002 8.6083690e-002 4.3612890e-002
+v -1.0872600e-002 8.8826770e-002 5.6665490e-002
+v -3.8450200e-003 8.4787810e-002 5.7197980e-002
+v -4.9020070e-002 1.1771293e-001 3.1581430e-002
+v -4.2914400e-002 1.1835991e-001 3.0645040e-002
+v -5.7684530e-002 1.5561695e-001 1.2983110e-002
+v -2.5411730e-002 1.2472533e-001 1.2886000e-004
+v 1.9012230e-002 1.2736197e-001 1.7786580e-002
+v -5.9498600e-002 8.8845470e-002 4.5109290e-002
+v -5.6931050e-002 8.8101500e-002 4.4692930e-002
+v 3.5765600e-003 1.3138981e-001 7.2086000e-003
+v -1.6683350e-002 8.7266690e-002 5.6741190e-002
+v -8.4980800e-003 8.3990470e-002 5.7605220e-002
+v 3.5078200e-003 8.6339520e-002 5.7048320e-002
+v -2.8398700e-002 1.8070650e-001 -7.8469500e-003
+v -7.6565830e-002 1.1674037e-001 5.1489350e-002
+v 1.7869430e-002 9.0898610e-002 4.8712940e-002
+v -4.0342100e-002 1.1669551e-001 3.2460200e-002
+v 5.9105700e-003 1.3140929e-001 1.6823750e-002
+v -8.5777550e-002 9.1701370e-002 -4.6970000e-005
+v -5.0372230e-002 8.8844660e-002 4.5188000e-002
+v -4.4434130e-002 8.7654530e-002 4.3477620e-002
+v -4.2056390e-002 8.6711520e-002 4.2534630e-002
+v -3.3058460e-002 8.6185500e-002 4.2560350e-002
+v -2.9241910e-002 9.0453360e-002 4.4236610e-002
+v -6.8964100e-003 8.4432910e-002 5.7168580e-002
+v -6.6210600e-003 9.0415250e-002 5.6879750e-002
+v -1.2439100e-003 8.9093200e-002 5.6552120e-002
+v 9.4076000e-003 9.0328050e-002 5.4214140e-002
+v 4.0194810e-002 1.0231597e-001 -2.0048600e-003
+v -8.6227130e-002 1.1466841e-001 2.2102000e-003
+v -8.9495490e-002 9.5632430e-002 1.4234810e-002
+v -6.7132160e-002 1.5709447e-001 -6.2032000e-003
+v -5.2935640e-002 9.0913520e-002 4.4568870e-002
+v -3.6744910e-002 8.8886950e-002 4.3312050e-002
+v -1.3626110e-002 8.9787930e-002 5.6674380e-002
+v 2.3337130e-002 1.2353449e-001 2.4874140e-002
+v -3.7053790e-002 1.2715094e-001 3.5474000e-004
+v -7.3696690e-002 1.5613015e-001 1.4359790e-002
+v -6.5592380e-002 9.1042400e-002 4.4092080e-002
+v -5.8997380e-002 9.2030670e-002 4.5335270e-002
+v -3.3238910e-002 8.8573580e-002 4.3697040e-002
+v -3.1834990e-002 9.0722970e-002 4.4173460e-002
+v -2.0022170e-002 8.8032110e-002 5.5589350e-002
+v -1.1213830e-002 9.2366370e-002 5.6105260e-002
+v 3.9108440e-002 1.0829072e-001 1.3142330e-002
+v 2.8675700e-002 1.1959600e-001 2.4545910e-002
+v -6.8940210e-002 1.5652777e-001 -1.9716000e-003
+v -6.2615110e-002 9.1126880e-002 4.5090730e-002
+v 3.0444560e-002 1.1886441e-001 2.0821750e-002
+v -1.5241090e-002 9.1821720e-002 5.5817230e-002
+v -5.6221700e-003 9.3235010e-002 5.5893630e-002
+v 4.7989900e-003 9.1654840e-002 5.4715170e-002
+v -6.8282400e-002 9.2376840e-002 4.2388730e-002
+v -5.5623730e-002 9.2187420e-002 4.5054970e-002
+v -5.1901030e-002 9.5457620e-002 4.3937650e-002
+v -4.8809030e-002 9.1083890e-002 4.4456690e-002
+v -4.5411560e-002 9.1002130e-002 4.3252770e-002
+v -4.4514550e-002 9.4860420e-002 4.2972490e-002
+v -3.9430320e-002 8.9597620e-002 4.3177890e-002
+v -3.5642240e-002 9.2617410e-002 4.4238490e-002
+v -1.2246000e-004 9.3201160e-002 5.5398380e-002
+v 9.5104600e-003 9.5483870e-002 5.0910600e-002
+v 2.1441660e-002 9.1354960e-002 4.8043360e-002
+v -8.9830300e-003 1.6926449e-001 -2.2683480e-002
+v -7.3019050e-002 1.5602104e-001 2.2419340e-002
+v -6.4760430e-002 1.5311588e-001 -2.0371200e-003
+v -6.9368510e-002 9.5242790e-002 4.2129000e-002
+v -6.0117140e-002 9.5552910e-002 4.4183820e-002
+v -2.9241690e-002 9.4290440e-002 4.4821190e-002
+v -2.6561430e-002 9.3289510e-002 4.4975420e-002
+v -1.4394030e-002 9.4587640e-002 5.3993500e-002
+v -8.8691600e-003 9.5400260e-002 5.4445980e-002
+v -1.2188700e-003 9.6201750e-002 5.3815910e-002
+v 4.0479000e-003 9.5817360e-002 5.2936770e-002
+v -4.6019400e-003 1.2428544e-001 3.3471960e-002
+v -7.8436460e-002 1.3928013e-001 4.8329360e-002
+v 1.0774610e-002 1.3079162e-001 1.4341740e-002
+v -5.6623730e-002 9.6322170e-002 4.3667910e-002
+v -3.6298870e-002 9.5695620e-002 4.3580310e-002
+v -2.4379930e-002 9.5866450e-002 4.4434530e-002
+v 1.0915500e-002 1.2633629e-001 2.9857020e-002
+v -5.8622700e-003 9.7350210e-002 5.2743650e-002
+v 1.6973450e-002 9.7106620e-002 4.7440920e-002
+v -6.7231980e-002 9.9173950e-002 4.1593880e-002
+v -5.4994210e-002 9.9640820e-002 4.2955230e-002
+v -4.8617990e-002 9.6452700e-002 4.4183060e-002
+v -5.5369000e-002 1.5442476e-001 1.6160650e-002
+v -9.4243550e-002 1.2207432e-001 2.3568470e-002
+v 1.3242990e-002 9.6738240e-002 4.8750160e-002
+v 2.0639290e-002 9.6602480e-002 4.6971000e-002
+v 7.3429700e-003 1.2098188e-001 3.5973430e-002
+v -1.3493870e-002 1.2882438e-001 5.9690700e-003
+v -2.0110640e-002 1.2504545e-001 2.3588310e-002
+v -6.9438450e-002 1.6479930e-001 -1.7218700e-002
+v -6.4028050e-002 9.7838670e-002 4.2565330e-002
+v -5.1996350e-002 9.9707850e-002 4.2716590e-002
+v -4.3990880e-002 9.9425460e-002 4.2383430e-002
+v -3.9738250e-002 1.0215357e-001 4.0574410e-002
+v -3.5931490e-002 9.9809950e-002 4.2335800e-002
+v -3.0867600e-002 9.6914680e-002 4.4651400e-002
+v -2.8342070e-002 9.7782680e-002 4.3761280e-002
+v -2.5622580e-002 9.8713420e-002 4.4210890e-002
+v -8.5236620e-002 1.1077356e-001 2.4537670e-002
+v 7.1936000e-003 9.8859470e-002 4.8419510e-002
+v 9.6509200e-003 1.0108782e-001 4.7373080e-002
+v 1.3487100e-002 1.0076420e-001 4.7454290e-002
+v 7.7389800e-003 1.3147500e-001 1.1682970e-002
+v 8.0905000e-004 1.1633319e-001 4.0167560e-002
+v -7.2652570e-002 1.6567918e-001 -1.8212480e-002
+v -5.6009400e-003 1.3076674e-001 1.0516060e-002
+v -2.6303720e-002 1.2518875e-001 1.7392980e-002
+v -4.7590430e-002 1.0081180e-001 4.2349150e-002
+v -4.1460830e-002 9.8544800e-002 4.1778620e-002
+v -3.3582070e-002 1.0383908e-001 4.0737990e-002
+v -2.2870240e-002 1.0284737e-001 4.3544750e-002
+v -2.2361970e-002 9.8207610e-002 4.4765940e-002
+v -1.8870510e-002 9.8973200e-002 4.4489280e-002
+v -7.1433690e-002 7.7573520e-002 3.8060760e-002
+v -7.3001150e-002 1.1826712e-001 5.3034590e-002
+v -6.8466430e-002 1.3498146e-001 -8.3359800e-003
+v -7.4683810e-002 1.0786100e-001 -9.0477100e-003
+v -6.4958960e-002 1.5852021e-001 -1.2595320e-002
+v -7.8931700e-002 1.5093057e-001 3.5151900e-002
+v -7.4113550e-002 9.9442520e-002 3.8337710e-002
+v -7.0456930e-002 1.0098777e-001 3.9794060e-002
+v -5.9058760e-002 1.0041260e-001 4.2725130e-002
+v -4.9187330e-002 1.0452012e-001 4.0301390e-002
+v -2.9151180e-002 1.0197369e-001 4.2633060e-002
+v -1.1599720e-002 1.0107813e-001 4.4191660e-002
+v 5.1450400e-003 1.0163906e-001 4.5423010e-002
+v -5.1495700e-002 1.0496738e-001 4.0347210e-002
+v -2.0218210e-002 1.0214391e-001 4.3701160e-002
+v 4.2515900e-003 1.0523743e-001 4.2563550e-002
+v 1.6832800e-002 1.0337487e-001 4.5287270e-002
+v -2.5661080e-002 1.2562669e-001 4.5537500e-003
+v -7.2141950e-002 1.0536685e-001 3.7523210e-002
+v -6.4984570e-002 1.0371550e-001 4.0647810e-002
+v -6.0652480e-002 1.0467197e-001 4.0906390e-002
+v -5.5308980e-002 1.0365394e-001 4.1516690e-002
+v -4.4243240e-002 1.0431726e-001 4.1339990e-002
+v -1.5513340e-002 1.0436131e-001 4.2919420e-002
+v -7.6323200e-003 1.0304531e-001 4.3710640e-002
+v -7.8046900e-003 1.0516619e-001 4.3825460e-002
+v 9.7163200e-003 1.0523506e-001 4.3603830e-002
+v 3.0300390e-002 1.1553645e-001 2.8685010e-002
+v -4.7496910e-002 1.0635662e-001 4.0165640e-002
+v -3.8978950e-002 1.0683037e-001 3.8247660e-002
+v -2.5869310e-002 1.0426705e-001 4.2207540e-002
+v -1.8057930e-002 1.0503919e-001 4.2802830e-002
+v -1.5180030e-002 1.0807750e-001 4.2350430e-002
+v -3.8981500e-003 1.0566175e-001 4.4047190e-002
+v 2.6820000e-005 1.0446731e-001 4.3775910e-002
+v 1.1978350e-002 1.0403629e-001 4.5396310e-002
+v 1.5004970e-002 1.0726898e-001 4.1811990e-002
+v 2.6488060e-002 1.2230287e-001 2.0398110e-002
+v -3.6225630e-002 1.0634244e-001 3.8644860e-002
+v -2.1126780e-002 1.0932290e-001 4.0715320e-002
+v -1.2819810e-002 1.0457100e-001 4.3465690e-002
+v 5.2847900e-003 1.0943666e-001 4.1674980e-002
+v 8.9403700e-003 1.0710645e-001 4.1243400e-002
+v -5.1839670e-002 1.6062039e-001 7.1421300e-003
+v -5.4201370e-002 1.1451730e-001 3.4843990e-002
+v 1.3226250e-002 1.2958070e-001 1.9689610e-002
+v -6.9382410e-002 1.0865787e-001 3.7507800e-002
+v -6.7691040e-002 1.0734145e-001 3.8018440e-002
+v -6.3782400e-002 1.1037270e-001 3.7579790e-002
+v -5.0749390e-002 1.0928682e-001 3.8297580e-002
+v -9.3936200e-003 1.0742813e-001 4.3454570e-002
+v 1.1760100e-003 1.0932531e-001 4.2662800e-002
+v 9.8020300e-003 1.1003994e-001 3.9945400e-002
+v 2.0131290e-002 1.0732778e-001 4.0323840e-002
+v -2.7872800e-003 1.0577531e-001 -2.2459030e-002
+v -5.4996890e-002 1.0774199e-001 3.9424590e-002
+v -4.5966740e-002 1.0905146e-001 3.8754110e-002
+v -4.2324540e-002 1.0737278e-001 3.9456440e-002
+v -3.2161240e-002 1.0896504e-001 3.8102720e-002
+v -3.0770180e-002 1.1597313e-001 3.2858800e-002
+v -1.1608610e-002 1.0983707e-001 4.2475330e-002
+v -2.9428320e-002 9.3166620e-002 -2.4931860e-002
+v -8.0043570e-002 9.2080160e-002 -9.4198200e-003
+v -4.9797430e-002 1.1342104e-001 3.5117920e-002
+v -4.3723850e-002 1.6191369e-001 5.7713400e-003
+v -5.7981740e-002 1.0943152e-001 3.7997640e-002
+v -4.1491180e-002 1.1224766e-001 3.5873450e-002
+v -2.4929830e-002 1.1592775e-001 3.4094730e-002
+v -2.0881690e-002 1.1409528e-001 3.7872990e-002
+v -7.5519700e-003 1.1183813e-001 4.2039690e-002
+v 3.7667200e-003 1.1240547e-001 4.1494710e-002
+v -6.2829620e-002 1.5189480e-001 -9.2373400e-003
+v -5.9195950e-002 1.1320797e-001 3.6234680e-002
+v -5.1079080e-002 9.3892810e-002 -2.1761690e-002
+v -7.3945370e-002 8.4374880e-002 -1.5154490e-002
+v -7.2146240e-002 1.3486431e-001 -7.7592200e-003
+v -1.9408870e-002 1.7041104e-001 -2.0994830e-002
+v -5.5530450e-002 1.4905531e-001 -1.9602100e-003
+v 1.6688460e-002 3.6976600e-002 4.3000600e-002
+v -5.2277330e-002 1.1775075e-001 3.3769460e-002
+v -6.9201380e-002 9.3039200e-002 -1.6486120e-002
+v 2.6579210e-002 1.1702438e-001 3.0867940e-002
+v -2.3574310e-002 3.7036910e-002 5.4144750e-002
+v -7.3775100e-003 3.8988430e-002 4.8929450e-002
+v 1.3234660e-002 3.8453060e-002 4.4501470e-002
+v 1.9487350e-002 4.0809290e-002 4.2641060e-002
+v -6.3953930e-002 1.4694729e-001 3.8484200e-002
+v -4.9579470e-002 3.6096540e-002 4.5955360e-002
+v -4.3323650e-002 3.6286400e-002 4.4042360e-002
+v -2.9047200e-002 1.2556338e-001 7.7617700e-003
+v -1.7343100e-003 3.9476800e-002 4.7262900e-002
+v -3.1358130e-002 1.5362199e-001 -4.6738900e-003
+v 2.5822000e-003 1.0747582e-001 -2.0606030e-002
+v -5.6802300e-002 1.4514674e-001 3.1740300e-002
+v -5.6464330e-002 3.7683110e-002 4.6819640e-002
+v -5.0964750e-002 3.8312290e-002 4.6286140e-002
+v -5.0980410e-002 1.3486613e-001 2.7585000e-002
+v -2.5647410e-002 3.8860730e-002 5.4161390e-002
+v -2.2542110e-002 4.0615780e-002 5.3986030e-002
+v -1.7618010e-002 3.8911170e-002 5.2403440e-002
+v -1.9711750e-002 1.6829145e-001 -1.3020960e-002
+v 2.3780070e-002 9.5222940e-002 4.6347330e-002
+v 1.4744290e-002 4.2716950e-002 4.4510310e-002
+v 2.1691360e-002 4.0161530e-002 4.0846450e-002
+v -6.4067240e-002 9.0172190e-002 -1.8855520e-002
+v 2.0319150e-002 1.0041961e-001 4.5760520e-002
+v -3.6425000e-002 9.3630690e-002 -2.3534630e-002
+v -1.4981170e-002 4.2571420e-002 5.1404530e-002
+v -5.7335340e-002 1.2340101e-001 4.0231470e-002
+v -5.4172560e-002 1.2337919e-001 3.7576440e-002
+v 2.2625210e-002 4.3621680e-002 4.0904580e-002
+v 2.8810520e-002 4.3352290e-002 3.2157720e-002
+v -4.2764160e-002 1.5727487e-001 5.2016200e-003
+v 9.2231900e-003 4.4125090e-002 4.5057440e-002
+v 1.5048210e-002 4.5755840e-002 4.3793870e-002
+v -6.3757290e-002 1.0251144e-001 -1.7484400e-002
+v -3.4070430e-002 1.6148975e-001 -1.3786960e-002
+v -8.2191500e-002 7.5610200e-002 1.6542620e-002
+v -6.6299420e-002 1.2337119e-001 5.0615920e-002
+v -1.5510100e-002 4.5283110e-002 5.0653040e-002
+v 1.8928020e-002 4.4249610e-002 4.3009830e-002
+v 2.5821800e-002 4.6326610e-002 3.8277230e-002
+v 2.7268700e-002 4.4547790e-002 3.6152520e-002
+v -4.5301340e-002 1.5695057e-001 7.2036900e-003
+v 2.3855760e-002 1.0616625e-001 3.9378080e-002
+v 2.1632670e-002 4.8127270e-002 4.0694430e-002
+v 4.3785360e-002 4.8803700e-002 3.1343420e-002
+v 4.8074790e-002 4.8969960e-002 2.8165490e-002
+v 5.2663090e-002 4.7673620e-002 2.1201270e-002
+v -5.2722450e-002 4.4722850e-002 4.4143250e-002
+v -3.0071610e-002 1.7258324e-001 -6.3597700e-003
+v -3.4508050e-002 1.5447469e-001 1.6504600e-003
+v 1.0629710e-002 4.6711810e-002 4.6472020e-002
+v 1.6743440e-002 4.8439000e-002 4.3678630e-002
+v 2.8827050e-002 9.2133370e-002 4.3920090e-002
+v -5.9937100e-002 1.2726188e-001 4.0771270e-002
+v -3.6752090e-002 1.5802075e-001 4.1862000e-003
+v -3.7885390e-002 1.6199719e-001 2.4686000e-004
+v -2.2047790e-002 1.8348586e-001 -1.2094990e-002
+v -2.4364620e-002 1.8096836e-001 -9.8312000e-003
+v -4.4882280e-002 1.5052959e-001 7.6451700e-003
+v 2.6996760e-002 5.1317780e-002 3.8752040e-002
+v 4.7735750e-002 5.2751040e-002 3.0797290e-002
+v 5.1703790e-002 4.8857380e-002 2.4147970e-002
+v -6.7504360e-002 1.1424088e-001 4.8036050e-002
+v -1.6257520e-002 1.6031250e-001 -9.6926000e-003
+v -6.3926300e-002 1.6792441e-001 -4.0730420e-002
+v -4.1665290e-002 1.4996141e-001 4.5405000e-003
+v -3.5203230e-002 1.6493551e-001 -2.6810000e-003
+v 4.1318770e-002 9.9496740e-002 2.4275750e-002
+v 1.4055220e-002 5.2523910e-002 4.8593880e-002
+v 1.9421220e-002 5.1321300e-002 4.4798910e-002
+v 2.3677990e-002 5.1474390e-002 4.1053270e-002
+v 3.4258130e-002 5.1930810e-002 3.2757880e-002
+v 5.5957340e-002 5.3147410e-002 2.3197720e-002
+v -3.9937960e-002 1.4922850e-001 1.6017200e-003
+v -4.6988800e-002 1.2600802e-001 2.6985500e-002
+v -2.7708370e-002 9.0081290e-002 -3.1911460e-002
+v 1.9204630e-002 5.5166510e-002 4.7722150e-002
+v 2.1886000e-002 5.3927560e-002 4.5102460e-002
+v 3.1286270e-002 5.2863840e-002 3.6913620e-002
+v 4.6661160e-002 5.4719230e-002 3.1976810e-002
+v 5.1823730e-002 5.3276700e-002 2.7927010e-002
+v -2.9264880e-002 1.6140418e-001 -2.1039500e-003
+v -6.8700770e-002 1.4463537e-001 4.3041630e-002
+v -5.6070060e-002 1.5000706e-001 2.9867640e-002
+v 4.4717850e-002 9.4802660e-002 1.2024710e-002
+v -4.1804090e-002 1.5582081e-001 6.4548200e-003
+v -6.8369340e-002 1.2289287e-001 5.2437860e-002
+v -6.4114810e-002 9.5509880e-002 -1.8114610e-002
+v -1.8383130e-002 1.8543664e-001 -1.7136370e-002
+v 1.1745400e-002 5.6678340e-002 5.1914060e-002
+v -5.9375360e-002 1.1998238e-001 4.0548240e-002
+v 5.9092080e-002 5.7956980e-002 2.0270120e-002
+v 4.3547740e-002 9.7389400e-002 1.7314650e-002
+v -2.6291780e-002 1.5963381e-001 -5.1845000e-004
+v 1.4904780e-002 5.6350380e-002 4.9522780e-002
+v 2.4286200e-002 5.4958580e-002 4.3086850e-002
+v 2.8952610e-002 5.6125250e-002 4.0388970e-002
+v -4.9507770e-002 1.2949500e-001 3.0259270e-002
+v 4.0824790e-002 9.5170220e-002 2.8657920e-002
+v 1.7774800e-002 5.8243780e-002 4.8864720e-002
+v 3.3573840e-002 5.8515260e-002 3.8310990e-002
+v 3.6385040e-002 5.6996480e-002 3.3601460e-002
+v -6.4205010e-002 1.2243894e-001 4.8008340e-002
+v -6.5424500e-002 1.4011279e-001 4.1308960e-002
+v 5.0801340e-002 5.7308080e-002 3.0001390e-002
+v 5.6671750e-002 5.6970820e-002 2.4291920e-002
+v -4.9349930e-002 1.4913519e-001 1.1274060e-002
+v -6.9760570e-002 1.3442855e-001 4.8265220e-002
+v 1.9537060e-002 6.0003780e-002 4.8576140e-002
+v 2.7013910e-002 5.9952790e-002 4.3454420e-002
+v 5.7679430e-002 6.1392970e-002 2.4201790e-002
+v -5.6916540e-002 1.2623512e-001 3.9426610e-002
+v 2.3469280e-002 1.1656262e-001 3.3537270e-002
+v -5.8298640e-002 1.3885500e-001 3.2937460e-002
+v 6.4598400e-003 6.0297430e-002 5.4780030e-002
+v 1.0406020e-002 5.9162400e-002 5.2484370e-002
+v 2.3183950e-002 5.8654360e-002 4.5871060e-002
+v 3.3040360e-002 6.1773840e-002 3.9781440e-002
+v -6.4348220e-002 1.2628088e-001 4.6650200e-002
+v -5.7031440e-002 1.1562007e-001 3.6494880e-002
+v 5.4451560e-002 5.8342890e-002 2.7653010e-002
+v -3.0134400e-002 1.7011322e-001 -7.3591600e-003
+v -3.7077100e-002 1.5986369e-001 1.6096500e-003
+v -5.6032760e-002 1.3731083e-001 3.1970590e-002
+v -6.7676470e-002 1.4150325e-001 4.3868140e-002
+v 9.9911700e-003 6.2735270e-002 5.4009240e-002
+v 1.4521510e-002 6.1382890e-002 5.0500900e-002
+v 3.0051740e-002 6.2169610e-002 4.1545810e-002
+v 3.7519170e-002 6.1062710e-002 3.4366020e-002
+v 5.3944010e-002 6.1391550e-002 2.8268530e-002
+v 5.9119900e-002 6.3128810e-002 2.1561830e-002
+v -2.4366390e-002 1.7693266e-001 -1.1719630e-002
+v -1.3253420e-002 1.6627152e-001 -1.4120370e-002
+v 3.9218740e-002 1.0669250e-001 2.0450190e-002
+v -1.7968980e-002 1.8078031e-001 -1.8103430e-002
+v 2.1902390e-002 6.0875970e-002 4.7282360e-002
+v 3.5341750e-002 6.1630030e-002 3.7606020e-002
+v -6.2145620e-002 1.3599775e-001 3.6700970e-002
+v 5.6820620e-002 6.3691150e-002 2.5286090e-002
+v -3.2800040e-002 1.5948699e-001 2.1962800e-003
+v 1.1212140e-002 6.6584120e-002 5.3982180e-002
+v 1.2919590e-002 6.4203580e-002 5.2441150e-002
+v 2.0126950e-002 6.3851330e-002 4.7919660e-002
+v 3.5971760e-002 6.6669610e-002 3.7781400e-002
+v 3.9906940e-002 6.4361260e-002 3.1686660e-002
+v -6.6702350e-002 1.3210600e-001 4.5480940e-002
+v -4.1601430e-002 1.5978000e-001 3.5374700e-003
+v 3.3044580e-002 1.0766252e-001 3.1916150e-002
+v 2.4672100e-002 6.3694500e-002 4.5204640e-002
+v 2.6108660e-002 6.8007640e-002 4.3902690e-002
+v 3.3363940e-002 6.7054760e-002 3.9729480e-002
+v 4.2915790e-002 6.6707700e-002 2.6994720e-002
+v 5.4714960e-002 6.4697160e-002 2.6979680e-002
+v -1.6530940e-002 1.6325000e-001 -9.2475200e-003
+v -1.7891600e-002 1.6113800e-001 -6.7072700e-003
+v 4.1118120e-002 9.7491260e-002 -3.9756700e-003
+v 2.3386770e-002 7.0075990e-002 4.7012620e-002
+v 3.8102900e-002 6.5678440e-002 3.5132520e-002
+v 1.0145240e-002 1.2221678e-001 3.4718950e-002
+v 5.8392410e-002 6.6741240e-002 2.1979460e-002
+v 3.8302050e-002 8.4549140e-002 -1.4478830e-002
+v 3.4126440e-002 9.7053980e-002 3.7590390e-002
+v -3.1355740e-002 1.5809888e-001 1.9128800e-003
+v -5.8259510e-002 1.4099493e-001 3.2440640e-002
+v -6.6817230e-002 1.1951525e-001 5.1490220e-002
+v -6.8090040e-002 1.1647050e-001 5.1151230e-002
+v 1.6568300e-002 6.6269890e-002 5.1009890e-002
+v 2.9362870e-002 6.6509780e-002 4.2289380e-002
+v 3.7027180e-002 9.3949630e-002 -1.1674040e-002
+v 5.6412730e-002 6.7659930e-002 2.3969320e-002
+v -6.1295740e-002 1.4519988e-001 3.7137830e-002
+v 8.3873000e-003 1.1336223e-001 3.9792610e-002
+v 1.1807030e-002 7.0920980e-002 5.4240490e-002
+v 2.9741730e-002 7.0647100e-002 4.1653890e-002
+v 3.6294410e-002 7.1220700e-002 3.7114610e-002
+v 3.9899680e-002 7.0294820e-002 3.2720020e-002
+v -6.2763130e-002 1.3778012e-001 3.6678590e-002
+v -1.5815440e-002 1.7504938e-001 -1.8654160e-002
+v -9.2268990e-002 1.1475156e-001 1.7017380e-002
+v -9.4964000e-004 1.0141111e-001 4.4290070e-002
+v -6.3712920e-002 1.1274250e-001 3.8006760e-002
+v -6.1096020e-002 1.1701650e-001 3.9654020e-002
+v 2.0991870e-002 6.9335450e-002 4.9003540e-002
+v 2.5658530e-002 7.0550460e-002 4.4539930e-002
+v 3.2978560e-002 7.3500690e-002 4.0486510e-002
+v 4.2156130e-002 6.9717580e-002 2.8318230e-002
+v -5.5516860e-002 1.2956070e-001 3.6598450e-002
+v -4.0802290e-002 1.6436059e-001 3.7448800e-003
+v -6.2546500e-003 1.0121650e-001 4.4322030e-002
+v -1.0986820e-002 1.6621199e-001 -1.6047550e-002
+v -3.0351420e-002 1.6448158e-001 -5.3291400e-003
+v 2.6110920e-002 1.0088990e-001 4.1733260e-002
+v -6.5599940e-002 1.1329504e-001 4.2318710e-002
+v 2.8814660e-002 9.6712680e-002 4.2257700e-002
+v 1.5263280e-002 7.1571940e-002 5.2717390e-002
+v 2.8982400e-002 7.4088480e-002 4.3447240e-002
+v 4.4872540e-002 7.5516710e-002 2.3155250e-002
+v -7.8225230e-002 1.4962481e-001 -2.5019400e-003
+v -4.6094940e-002 1.5296850e-001 9.0029700e-003
+v -5.2369030e-002 1.4682913e-001 1.8934650e-002
+v -2.1592100e-002 1.5763440e-001 -6.8623600e-003
+v 1.7176770e-002 7.3066230e-002 5.1826600e-002
+v 2.2687500e-002 7.5149180e-002 4.9312500e-002
+v 3.5472040e-002 7.3076670e-002 3.8482270e-002
+v -8.9480840e-002 1.3839976e-001 2.5061450e-002
+v -5.3216730e-002 1.3221978e-001 3.2978380e-002
+v -3.7776780e-002 1.5551947e-001 4.3700800e-003
+v -9.0549380e-002 1.3511875e-001 2.1680550e-002
+v -6.3366580e-002 1.3037076e-001 4.1669940e-002
+v 1.4074270e-002 7.6651720e-002 5.4221350e-002
+v 1.8109790e-002 7.5806590e-002 5.2488260e-002
+v 4.2209940e-002 7.8861480e-002 2.9187200e-002
+v -5.2115930e-002 1.4179906e-001 2.0510310e-002
+v 2.9063090e-002 1.1149602e-001 3.3805790e-002
+v -5.4731460e-002 1.4267229e-001 2.8980480e-002
+v 2.5903640e-002 7.5536040e-002 4.6416650e-002
+v 3.1298760e-002 7.5907440e-002 4.2699060e-002
+v 3.8446170e-002 7.5649430e-002 3.5050640e-002
+v 4.6351670e-002 7.4079520e-002 1.8354320e-002
+v -4.7656560e-002 1.3077525e-001 2.5523570e-002
+v -1.1447430e-002 1.7131059e-001 -1.9602980e-002
+v -3.6647240e-002 1.6640131e-001 -2.8167000e-004
+v -4.6653530e-002 1.5917824e-001 7.8019000e-003
+v -4.5569890e-002 1.4663612e-001 5.6514200e-003
+v 4.1438880e-002 9.2365100e-002 -7.4587000e-003
+v -6.4287420e-002 1.3463625e-001 3.9945640e-002
+v -6.1128890e-002 1.3178328e-001 3.8915910e-002
+v -4.7843540e-002 1.2215063e-001 2.8833160e-002
+v -4.9536830e-002 1.2491344e-001 3.1778440e-002
+v -7.1135380e-002 1.3817656e-001 4.7853960e-002
+v 1.0113870e-002 7.6468110e-002 5.5256790e-002
+v 1.7897450e-002 7.9516550e-002 5.2759530e-002
+v 2.1740850e-002 8.0250650e-002 5.0425390e-002
+v 2.5271590e-002 7.8724920e-002 4.8026570e-002
+v 3.0885040e-002 7.8999480e-002 4.3388770e-002
+v -6.2441930e-002 1.4084781e-001 3.6965840e-002
+v -6.2165060e-002 1.5666850e-001 -1.7837760e-002
+v 2.0657260e-002 1.0416830e-001 4.3004680e-002
+v -6.3602800e-002 1.1571453e-001 4.2572290e-002
+v 1.4424020e-002 8.0085500e-002 5.3755600e-002
+v 2.8779340e-002 8.2553250e-002 4.4527350e-002
+v 4.4450130e-002 8.1846900e-002 2.4552920e-002
+v 4.5541990e-002 8.3338380e-002 1.9700850e-002
+v -4.9665810e-002 1.2063801e-001 3.2163270e-002
+v -2.9177290e-002 1.7619959e-001 -5.6241100e-003
+v -5.8203130e-002 1.3270975e-001 3.6918680e-002
+v 3.8997050e-002 9.7088220e-002 -7.7799300e-003
+v -5.4725800e-002 1.2071262e-001 3.7451450e-002
+v 1.3189120e-002 8.4211180e-002 5.3065830e-002
+v -1.9926300e-002 1.6489742e-001 -9.9900200e-003
+v 2.0153130e-002 1.1849719e-001 3.4271250e-002
+v -5.5859940e-002 1.1774313e-001 3.7253480e-002
+v 1.8045260e-002 8.3623160e-002 5.1285840e-002
+v -6.3757130e-002 1.5912175e-001 -5.0155730e-002
+v -1.8527620e-002 1.7653197e-001 -1.7043540e-002
+v 2.8734400e-002 1.0360053e-001 3.8035240e-002
+v 4.1414010e-002 1.0284216e-001 1.6578920e-002
+v 2.4411730e-002 9.8016880e-002 4.4687400e-002
+v 2.0925180e-002 8.6311430e-002 4.9433120e-002
+v 3.0445010e-002 8.4959560e-002 4.3011090e-002
+v 3.3030090e-002 8.3781640e-002 4.1636930e-002
+v 3.6975090e-002 7.9876480e-002 3.7198390e-002
+v -7.7721460e-002 1.1355888e-001 4.8155990e-002
+v 2.9250000e-002 1.0651935e-001 3.6590330e-002
+v -5.3078180e-002 1.3754688e-001 2.8266470e-002
+v -6.2990590e-002 1.1999459e-001 4.5235530e-002
+v -6.5398320e-002 1.1751956e-001 4.8735570e-002
+v 3.3373910e-002 1.1227890e-001 2.7788130e-002
+v 3.8413590e-002 8.7489930e-002 3.5185850e-002
+v -6.1945930e-002 1.6479234e-001 -5.6647670e-002
+v -2.2876480e-002 1.7392813e-001 -1.3431140e-002
+v 4.3766230e-002 8.8390020e-002 -3.5708800e-003
+v 3.9291530e-002 1.0125969e-001 2.7550520e-002
+v 1.0936230e-002 8.6027290e-002 5.4732670e-002
+v 2.4108720e-002 8.4492600e-002 4.8292310e-002
+v 3.6758390e-002 9.9195470e-002 3.2837670e-002
+v -5.1941640e-002 1.2565987e-001 3.4587860e-002
+v -3.1582110e-002 1.6641850e-001 -5.7320000e-003
+v 7.6405900e-003 8.6427230e-002 5.6117850e-002
+v 1.6771020e-002 8.8644690e-002 5.0522960e-002
+v 3.4404610e-002 8.6932850e-002 4.0574270e-002
+v 3.6143820e-002 8.4439200e-002 3.7936930e-002
+v 4.1258830e-002 1.0361081e-001 2.6760600e-003
+v 2.4766140e-002 1.1081111e-001 3.6728360e-002
+v -2.2601590e-002 1.6250449e-001 -6.0717000e-003
+v -1.2893670e-002 1.7879041e-001 -2.2624750e-002
+v -2.4939150e-002 1.7031135e-001 -1.1329700e-002
+v -4.8468630e-002 1.4559606e-001 8.3661500e-003
+v 1.2534490e-002 8.9593930e-002 5.3394630e-002
+v 2.5872860e-002 8.8482290e-002 4.6655260e-002
+v 3.2756470e-002 8.8969130e-002 4.2215450e-002
+v -2.3343620e-002 1.6103450e-001 -3.1862400e-003
+v -9.2594970e-002 1.1943826e-001 2.6802950e-002
+v -7.4314840e-002 1.3761738e-001 -6.6698800e-003
+v -9.2499230e-002 1.2131500e-001 2.9256200e-002
+v -7.7378260e-002 1.5764266e-001 -1.4133650e-002
+v -9.2907340e-002 1.2307021e-001 3.6523230e-002
+v 2.8423340e-002 8.8011080e-002 4.4234200e-002
+v 3.5251680e-002 9.0836820e-002 3.9183920e-002
+v 1.5760560e-002 9.3203560e-002 4.9939310e-002
+v 3.8785530e-002 9.4954300e-002 3.2520220e-002
+v -6.1511220e-002 1.2373565e-001 4.3062680e-002
+v -6.8145120e-002 1.2748676e-001 5.0148970e-002
+v -2.0616710e-002 1.8237588e-001 -1.4299100e-002
+v 1.5137190e-002 1.1571495e-001 3.7031980e-002
+v -5.0718270e-002 1.5276300e-001 1.1816680e-002
+v 3.0168690e-002 1.0048686e-001 3.9404710e-002
+v -8.7426500e-002 9.5469530e-002 4.0312400e-003
+v -6.0010390e-002 1.4284463e-001 3.5449690e-002
+v -5.8603310e-002 1.4637237e-001 3.3808800e-002
+v 3.2411650e-002 9.3736150e-002 4.0890240e-002
+v -7.5917780e-002 1.4997690e-001 -1.6842050e-002
+v 1.8596570e-002 3.5293940e-002 -8.6782200e-003
+v 1.7209800e-002 3.5259400e-002 -1.4685160e-002
+v 4.4326540e-002 9.0818120e-002 2.2097520e-002
+v 3.8335910e-002 3.8830830e-002 3.0938100e-003
+v 2.2192920e-002 3.6775320e-002 -2.0919300e-003
+v 1.9636020e-002 3.8234010e-002 -1.2507670e-002
+v 2.3682120e-002 3.9762540e-002 3.7148760e-002
+v 4.6693280e-002 4.2465320e-002 6.5649500e-003
+v 2.1621110e-002 3.7657240e-002 -4.7021600e-003
+v 1.6638610e-002 3.8196090e-002 -1.9884930e-002
+v -9.0253980e-002 1.1366307e-001 3.7720210e-002
+v -9.0593870e-002 1.1373094e-001 1.0276770e-002
+v -6.2541690e-002 1.7679461e-001 -5.7821820e-002
+v -1.1091940e-002 1.7992082e-001 -2.5996430e-002
+v -6.2263130e-002 1.5219935e-001 -2.2578880e-002
+v -4.2276760e-002 9.4982570e-002 -2.2562420e-002
+v 4.3293410e-002 4.1864140e-002 2.0634400e-003
+v 4.3779590e-002 4.4530720e-002 -1.2622500e-003
+v 2.1696990e-002 4.0427270e-002 -9.4629500e-003
+v -1.1183700e-002 1.6450000e-001 -1.6151690e-002
+v -6.2372570e-002 1.5313041e-001 -2.8997120e-002
+v -9.2489300e-003 1.7725850e-001 -2.8270200e-002
+v 4.1477400e-002 8.5509410e-002 -9.1575000e-003
+v -8.1268710e-002 1.0879438e-001 2.9440660e-002
+v 4.9575680e-002 4.3815900e-002 1.4582960e-002
+v 5.2987960e-002 4.7747690e-002 5.0420000e-003
+v 2.1977540e-002 4.2855330e-002 -1.4536230e-002
+v 1.8505700e-002 3.8294100e-002 -1.7136500e-002
+v -3.5100500e-002 1.5203437e-001 -1.3279000e-004
+v 4.8749130e-002 4.5265000e-002 2.3023500e-003
+v 3.1912900e-002 9.9870060e-002 -1.4620980e-002
+v -1.4222520e-002 1.6167426e-001 -1.3349060e-002
+v -4.8663640e-002 1.3638523e-001 6.8063900e-003
+v -9.5837200e-003 1.7426102e-001 -2.8390760e-002
+v 5.2801850e-002 4.6539940e-002 1.0427720e-002
+v 5.1433800e-002 4.8485200e-002 1.0401000e-003
+v 2.3911240e-002 9.8021670e-002 -2.0807290e-002
+v 2.4567060e-002 4.4130110e-002 -1.0820840e-002
+v 2.0356810e-002 4.3662400e-002 -2.0456280e-002
+v -2.1882420e-002 1.1087418e-001 -1.9695320e-002
+v -5.3831800e-002 1.4981693e-001 2.5066610e-002
+v 5.4114210e-002 4.7773090e-002 1.7484000e-002
+v 5.6730570e-002 5.0515740e-002 1.0627080e-002
+v 4.5941820e-002 4.8138820e-002 -3.8715700e-003
+v -8.3817760e-002 1.1109094e-001 2.8524490e-002
+v 2.9207770e-002 4.7450250e-002 -8.5081800e-003
+v 2.8454920e-002 4.8067390e-002 -1.2847240e-002
+v 2.6637260e-002 4.7607100e-002 -1.6427740e-002
+v 2.2040110e-002 4.4992500e-002 -1.7528500e-002
+v 1.9120080e-002 4.7167750e-002 -2.2114680e-002
+v -1.5782200e-002 1.0072957e-001 -2.3724130e-002
+v -6.2514170e-002 1.7213119e-001 -5.2788100e-002
+v -6.2345600e-002 1.4745498e-001 -7.6600200e-003
+v 4.5598180e-002 8.8151720e-002 1.3124070e-002
+v -4.9422610e-002 1.4283525e-001 8.9728300e-003
+v -8.2761860e-002 1.1162341e-001 4.4221460e-002
+v -5.2166220e-002 1.5013661e-001 1.7448750e-002
+v -6.3616740e-002 1.4801371e-001 -2.0170260e-002
+v -5.1492690e-002 1.3796388e-001 2.3662180e-002
+v -6.1517580e-002 1.7517449e-001 -6.0631700e-002
+v 5.6524870e-002 5.0125660e-002 1.5564490e-002
+v 5.5257900e-002 5.1416260e-002 3.2062600e-003
+v 5.0318130e-002 5.2786370e-002 -3.4166300e-003
+v -6.2681950e-002 1.6744086e-001 -4.5713890e-002
+v 5.6520150e-002 5.1179900e-002 1.9940560e-002
+v 5.6907980e-002 5.1578130e-002 7.2538300e-003
+v 5.2854160e-002 5.1898670e-002 -6.2070000e-004
+v -3.8921140e-002 3.3767390e-002 -2.9042560e-002
+v 2.9740700e-002 5.0324690e-002 -1.3990860e-002
+v -6.8796190e-002 3.5117720e-002 -5.2067400e-003
+v 5.8826020e-002 5.5503780e-002 1.8647920e-002
+v -2.6160570e-002 1.2309988e-001 -4.4735500e-003
+v -5.3341960e-002 1.4401200e-001 2.4261390e-002
+v 5.8177390e-002 5.2821320e-002 1.5182420e-002
+v 5.9798140e-002 5.6840180e-002 1.3342730e-002
+v 5.4549870e-002 5.6044630e-002 -6.6158000e-004
+v 2.6775460e-002 5.1423450e-002 -2.0234060e-002
+v -8.6960400e-003 1.7291588e-001 -2.6708770e-002
+v -7.7039560e-002 7.1967020e-002 2.6405070e-002
+v -6.3069890e-002 1.5897471e-001 -4.2951850e-002
+v 3.5706690e-002 5.6083040e-002 -8.9993300e-003
+v 3.2600380e-002 5.3707520e-002 -1.1006150e-002
+v 2.9739960e-002 5.2538430e-002 -1.6224950e-002
+v 5.9238530e-002 5.6362780e-002 9.4530800e-003
+v 5.7421750e-002 5.6012210e-002 4.0245600e-003
+v 2.9062990e-002 5.5210580e-002 -1.8042060e-002
+v -1.7224410e-002 9.5214090e-002 -3.2085300e-002
+v -8.5911380e-002 1.0968787e-001 7.6582400e-003
+v 6.0594930e-002 6.1677210e-002 1.5591560e-002
+v 5.9531640e-002 6.0504600e-002 5.8397000e-003
+v 5.7306470e-002 5.9944620e-002 1.8886400e-003
+v 3.8829380e-002 5.9839830e-002 -6.4252500e-003
+v 3.0662770e-002 5.7300390e-002 -1.6518370e-002
+v -2.7762070e-002 1.2068537e-001 -9.0152900e-003
+v -8.8194590e-002 1.0314633e-001 1.7509020e-002
+v 6.0778800e-002 6.1646560e-002 1.0463990e-002
+v 3.5915080e-002 5.9916380e-002 -1.1966510e-002
+v 2.4251860e-002 5.6457470e-002 -2.4254800e-002
+v -6.1954390e-002 1.6865320e-001 -5.2621160e-002
+v -9.0557930e-002 1.1275994e-001 1.6141030e-002
+v -8.8469220e-002 1.1124294e-001 1.2679160e-002
+v 5.9558010e-002 6.3099260e-002 5.9471000e-003
+v 3.0940440e-002 6.0518080e-002 -1.8132720e-002
+v -9.3575750e-002 1.2474629e-001 2.6213300e-002
+v -9.3189820e-002 1.2019919e-001 3.7913720e-002
+v -9.2296100e-003 1.7314463e-001 -2.4197660e-002
+v -8.1739460e-002 7.6861340e-002 2.3313610e-002
+v -3.6992750e-002 1.5063932e-001 -2.0372300e-003
+v 6.0093570e-002 6.5693450e-002 1.8533320e-002
+v 5.9837240e-002 6.6423180e-002 8.5139400e-003
+v 4.0706180e-002 6.4475310e-002 -5.5920300e-003
+v 3.4745940e-002 6.3261340e-002 -1.4646740e-002
+v -6.1879660e-002 1.6000450e-001 -2.5806250e-002
+v -7.6537810e-002 1.5344875e-001 -1.2898750e-002
+v 3.8111070e-002 6.4811810e-002 -1.1142000e-002
+v 3.1909340e-002 6.4657050e-002 -1.8473410e-002
+v -8.3159350e-002 1.4674277e-001 3.0757900e-003
+v -8.7055900e-002 1.0562761e-001 9.7651100e-003
+v -7.1448330e-002 1.8105301e-001 -5.5478550e-002
+v -8.5632110e-002 1.2461094e-001 -2.7335800e-003
+v 6.0728970e-002 6.5806600e-002 1.3974830e-002
+v 3.9909650e-002 6.8171740e-002 -9.5698200e-003
+v 3.4981790e-002 6.7740790e-002 -1.5683210e-002
+v -9.1822030e-002 1.2747346e-001 3.6458650e-002
+v -6.2425420e-002 1.6366637e-001 -4.9667290e-002
+v -7.1168950e-002 1.4740156e-001 -2.7590940e-002
+v -5.0364760e-002 1.3715763e-001 1.9526100e-003
+v -5.0492650e-002 1.4159899e-001 1.6291740e-002
+v 5.9886670e-002 6.8513050e-002 1.6171610e-002
+v -6.1406990e-002 1.7268822e-001 -5.8265750e-002
+v 2.4990740e-002 6.5897320e-002 -2.3568270e-002
+v -7.4852750e-002 1.4993112e-001 -2.7752940e-002
+v -6.2225690e-002 6.0265200e-002 2.0449290e-002
+v -6.2001940e-002 3.6435020e-002 4.3918940e-002
+v 5.8374570e-002 7.1186410e-002 1.3072740e-002
+v -3.6125040e-002 1.2286688e-001 -8.2927900e-003
+v 2.9216510e-002 6.7850250e-002 -2.0418570e-002
+v -4.1681700e-002 1.2575112e-001 -7.0193300e-003
+v -7.4226550e-002 1.6437012e-001 -3.8240340e-002
+v -9.7845700e-003 1.6928488e-001 -2.4756660e-002
+v -8.9577950e-002 1.2078310e-001 3.5229100e-003
+v -6.2311930e-002 1.6371109e-001 -4.0623990e-002
+v 4.3514770e-002 9.1519890e-002 -2.6468100e-003
+v -4.8434350e-002 1.3754973e-001 1.3244980e-002
+v -8.9313160e-002 1.3653006e-001 3.0458750e-002
+v -7.4230190e-002 1.5652681e-001 -2.5167090e-002
+v 3.7378600e-002 7.3093410e-002 -1.2635370e-002
+v 2.6321810e-002 7.0240650e-002 -2.3878680e-002
+v -4.8023620e-002 1.4426649e-001 4.2498600e-003
+v -9.2019580e-002 1.1611534e-001 3.5842730e-002
+v -7.1305510e-002 7.3899020e-002 3.5969780e-002
+v -6.2059290e-002 1.5697807e-001 -3.3784580e-002
+v -9.7015300e-003 1.6738863e-001 -1.9360250e-002
+v 4.3342140e-002 7.1676120e-002 -2.2304600e-003
+v 4.1772460e-002 6.9568020e-002 -6.1596000e-003
+v 3.3505410e-002 7.2809860e-002 -1.7034800e-002
+v 2.9665000e-002 7.1506830e-002 -2.1282340e-002
+v -2.9460160e-002 1.5550263e-001 -1.1914700e-003
+v -8.6396440e-002 1.0479356e-001 5.9820600e-003
+v -5.4910700e-002 1.4662313e-001 2.8438970e-002
+v 4.4203810e-002 8.5204260e-002 -2.1170500e-003
+v 4.3264350e-002 7.5810540e-002 -3.8843900e-003
+v 1.3096990e-002 9.1126480e-002 -2.9269770e-002
+v -6.7069210e-002 9.1144610e-002 -1.7425950e-002
+v -9.0821680e-002 1.2276896e-001 6.0998500e-003
+v 4.5620000e-002 7.4684430e-002 2.6073900e-003
+v -9.3039800e-002 1.2026416e-001 1.1216820e-002
+v 4.4635590e-002 9.2794290e-002 1.7832070e-002
+v -1.1243390e-002 1.6457514e-001 -1.8240780e-002
+v 4.5511190e-002 8.6953050e-002 3.8865500e-003
+v 4.6252720e-002 7.7373870e-002 6.9140800e-003
+v 4.0281640e-002 7.2637130e-002 -9.2881000e-003
+v 4.3218200e-002 9.9486740e-002 5.0153300e-003
+v -5.1108270e-002 1.4520219e-001 1.4279480e-002
+v 4.4692980e-002 9.2688550e-002 2.2466700e-003
+v 4.3422540e-002 9.1860370e-002 2.4538450e-002
+v 4.0751360e-002 1.0554729e-001 7.5074100e-003
+v -8.5613030e-002 9.6277110e-002 -6.6514000e-004
+v 4.0721470e-002 7.8475530e-002 -8.2130000e-003
+v 3.5538080e-002 7.6062960e-002 -1.4434750e-002
+v -9.2736510e-002 1.2073095e-001 3.2692730e-002
+v -6.2278520e-002 1.5166598e-001 -1.4672730e-002
+v 4.4960220e-002 8.0942630e-002 6.1119000e-004
+v 3.7814740e-002 7.9698150e-002 -1.3289630e-002
+v 3.3864490e-002 7.8656690e-002 -1.7632490e-002
+v -9.1044280e-002 1.4199862e-001 2.1729630e-002
+v -7.4004450e-002 1.7818523e-001 -5.3916320e-002
+v -6.1768650e-002 1.6067957e-001 -3.4046350e-002
+v -4.9747450e-002 1.4112519e-001 5.2937500e-003
+v 4.1065440e-002 9.0460700e-002 2.9888620e-002
+v -7.2916360e-002 6.5057400e-002 1.8794620e-002
+v -9.0949690e-002 1.3895375e-001 1.7371130e-002
+v 4.2879050e-002 1.0093777e-001 9.4753200e-003
+v -7.2455480e-002 1.7610676e-001 -5.3535420e-002
+v -7.5862940e-002 1.5071299e-001 -9.0209000e-003
+v -8.5269820e-002 1.0267793e-001 1.3935600e-003
+v -7.7025570e-002 1.1396763e-001 -4.6168100e-003
+v 4.6280880e-002 7.8702020e-002 1.4786330e-002
+v 4.2106910e-002 8.1533160e-002 -6.6690900e-003
+v 3.6523880e-002 8.1991750e-002 -1.6229590e-002
+v -3.7420220e-002 4.5428500e-002 -2.4226790e-002
+v -8.5148910e-002 1.3965520e-001 2.4808500e-003
+v -6.3313300e-002 1.6503258e-001 -3.2895120e-002
+v -6.1591410e-002 1.5681572e-001 -2.5945630e-002
+v 4.5918540e-002 8.7036220e-002 8.4236300e-003
+v 4.4631140e-002 8.4178380e-002 8.2665000e-004
+v -4.4842870e-002 1.4629393e-001 1.7114800e-003
+v -6.4124180e-002 1.7953625e-001 -5.8730420e-002
+v -6.7070300e-002 1.8072682e-001 -5.6618620e-002
+v -6.4793760e-002 1.7885275e-001 -5.5883250e-002
+v -6.4371030e-002 1.7296209e-001 -4.9225660e-002
+v -7.0381530e-002 1.8071180e-001 -5.3172590e-002
+v -7.5269270e-002 1.5232949e-001 3.4374060e-002
+v -1.6273090e-002 1.2844514e-001 1.6683610e-002
+v -6.2116150e-002 1.5600787e-001 1.8034420e-002
+v -5.6010790e-002 1.5381662e-001 2.5369280e-002
+v -3.7277920e-002 1.7289068e-001 -8.6627000e-004
+v -7.4158700e-002 1.7987275e-001 -5.0794750e-002
+v -7.9039960e-002 1.5537445e-001 1.5141810e-002
+v -7.2505530e-002 1.5459529e-001 2.9588830e-002
+v -6.7738180e-002 1.7728865e-001 -5.0375960e-002
+v -7.5346900e-003 1.0021302e-001 4.7488700e-002
+v -5.9575620e-002 1.5472401e-001 2.6373250e-002
+v -7.7382710e-002 1.5346600e-001 3.0894990e-002
+v -8.1496670e-002 1.5473104e-001 1.9697340e-002
+v -7.2223320e-002 1.5896734e-001 -5.4242300e-003
+v -1.3708500e-002 1.8491150e-001 -2.5549550e-002
+v -4.3465340e-002 1.2451145e-001 2.2518890e-002
+v -6.9103650e-002 1.5559479e-001 1.6370800e-003
+v -7.3748080e-002 1.5539253e-001 2.3491700e-003
+v -6.8192410e-002 1.7439828e-001 -4.5365870e-002
+v -6.0052850e-002 1.5280350e-001 3.2887630e-002
+v -2.3459490e-002 1.2615386e-001 1.6613770e-002
+v -7.2777220e-002 1.7854465e-001 -4.8208800e-002
+v -7.6595580e-002 1.7753227e-001 -4.7118080e-002
+v 1.3906410e-002 1.2790838e-001 2.5110240e-002
+v -8.6367510e-002 1.0906537e-001 1.1980640e-002
+v -3.1358850e-002 1.2140977e-001 2.5971090e-002
+v -4.9104590e-002 1.3666879e-001 1.9314030e-002
+v -4.2930640e-002 1.2928436e-001 9.2700700e-003
+v -6.5320350e-002 1.5390322e-001 9.1386000e-004
+v -3.7606490e-002 1.2422605e-001 2.4313530e-002
+v 9.5078400e-003 1.3041865e-001 2.0715020e-002
+v -1.7976800e-003 1.3117283e-001 1.6360660e-002
+v 3.6231700e-003 1.3076791e-001 2.1168600e-002
+v -9.2674700e-002 1.1701945e-001 1.1889520e-002
+v -6.5739720e-002 1.5565338e-001 2.6017600e-002
+v -8.6561940e-002 1.4249188e-001 8.4326800e-003
+v -7.0731530e-002 1.5569959e-001 6.9058200e-003
+v -8.0840700e-003 1.3030537e-001 1.6872280e-002
+v -4.4286250e-002 1.2606625e-001 2.0795220e-002
+v -7.0222260e-002 1.5143521e-001 3.6718910e-002
+v -1.5210690e-002 1.8463639e-001 -2.2057240e-002
+v -1.7270750e-002 1.8699602e-001 -1.9977570e-002
+v -8.3560950e-002 1.5255943e-001 7.6806700e-003
+v -8.8130280e-002 9.7540510e-002 5.6788000e-003
+v -8.8399240e-002 1.3899000e-001 1.0640660e-002
+v -6.7780550e-002 1.5614453e-001 1.4276320e-002
+v -6.5864600e-003 1.2641717e-001 3.0226390e-002
+v -8.8746180e-002 1.3625578e-001 7.1477800e-003
+v -7.7206730e-002 1.5639950e-001 -1.8972540e-002
+v -9.3176480e-002 1.1821016e-001 2.3362360e-002
+v -2.3506850e-002 1.2672006e-001 1.0996900e-002
+v -6.6546650e-002 1.7171115e-001 -4.2127770e-002
+v -6.9136000e-002 1.7247836e-001 -3.9013330e-002
+v 5.7180270e-002 7.1107690e-002 8.0307600e-003
+v -7.5390870e-002 1.7952824e-001 -5.2402050e-002
+v -3.1828840e-002 1.2639115e-001 1.0013410e-002
+v -8.9888800e-003 1.2952269e-001 2.2026810e-002
+v 3.4325880e-002 1.1193312e-001 -2.2406500e-003
+v -8.1414950e-002 9.7100250e-002 -6.8745800e-003
+v -2.3298830e-002 1.8324307e-001 -1.7923000e-002
+v -6.1641660e-002 1.5582039e-001 1.1099820e-002
+v -8.8826450e-002 9.0483320e-002 2.1204700e-002
+v 5.8373130e-002 6.8067590e-002 5.7247600e-003
+v -4.3045630e-002 1.2785122e-001 1.6842260e-002
+v 3.0835720e-002 1.1554234e-001 -3.1785500e-003
+v -8.8631270e-002 9.4881200e-002 7.9337600e-003
+v -9.1715140e-002 1.1709957e-001 3.0809400e-002
+v -7.2083780e-002 1.7499844e-001 -4.1930320e-002
+v -6.9540630e-002 1.5308527e-001 3.3865720e-002
+v 6.0078690e-002 6.8129260e-002 1.1454500e-002
+v -4.0081060e-002 1.2628381e-001 1.9607250e-002
+v 3.2819930e-002 1.1655625e-001 4.4458600e-003
+v -7.2823220e-002 1.4510601e-001 -1.5654680e-002
+v -8.5270210e-002 1.0551770e-001 2.3290940e-002
+v -7.6051320e-002 1.1103825e-001 -6.2722100e-003
+v -8.6537730e-002 1.5154801e-001 2.5875370e-002
+v 5.5888480e-002 7.2579250e-002 1.0669650e-002
+v -5.4642360e-002 1.5522963e-001 1.2612400e-002
+v 3.6729960e-002 1.1116756e-001 3.8670600e-003
+v 3.1501870e-002 1.1725172e-001 1.6855100e-003
+v -7.8751550e-002 9.5240290e-002 -1.0600670e-002
+v -8.9408160e-002 1.4352815e-001 3.0924750e-002
+v -2.0891130e-002 1.8595338e-001 -1.5037360e-002
+v -7.0863560e-002 1.6136525e-001 -9.7324600e-003
+v -7.0919760e-002 1.7136688e-001 -3.2763750e-002
+v -3.0771290e-002 1.2564075e-001 1.6594770e-002
+v -5.4454180e-002 1.5297699e-001 2.2505190e-002
+v -1.5539500e-003 1.2754717e-001 2.9232870e-002
+v 2.9130550e-002 1.2027445e-001 6.1117500e-003
+v 2.5725940e-002 1.2122705e-001 -3.6150000e-005
+v -8.9318970e-002 9.9546980e-002 1.3418110e-002
+v -7.5429500e-002 1.7095605e-001 -3.2879890e-002
+v -2.8596020e-002 1.1901156e-001 2.9888170e-002
+v 2.1069780e-002 1.2497756e-001 1.0998100e-003
+v -9.2240760e-002 1.1816838e-001 4.1201730e-002
+v 2.4094600e-003 1.0016785e-001 4.6938070e-002
+v -5.6627620e-002 1.5270606e-001 2.9629030e-002
+v -5.7264800e-002 1.5506250e-001 1.9322430e-002
+v -3.6452070e-002 1.2199869e-001 2.7670650e-002
+v -7.4108160e-002 1.7355729e-001 -3.7986840e-002
+v 5.1537130e-002 7.3496690e-002 1.2698700e-002
+v -6.6096040e-002 1.5532529e-001 7.1561800e-003
+v 3.6102000e-002 1.1266103e-001 1.0491780e-002
+v 1.6715210e-002 1.2689851e-001 2.2331000e-004
+v -8.0767920e-002 1.4301400e-001 -1.5312800e-003
+v -9.1757600e-002 1.4334588e-001 1.7790710e-002
+v -8.6824940e-002 1.5280775e-001 1.5521450e-002
+v -6.5808100e-002 1.6764344e-001 -3.0558670e-002
+v -7.8217340e-002 1.6873975e-001 -3.3564250e-002
+v -7.2567060e-002 1.4753230e-001 4.1714090e-002
+v 5.8439960e-002 7.0200810e-002 1.7779620e-002
+v 5.6847560e-002 7.2017160e-002 1.7139380e-002
+v 5.4919390e-002 7.3161610e-002 1.5223590e-002
+v 4.7446900e-002 7.3691410e-002 1.2430020e-002
+v 1.2319360e-002 1.2903768e-001 1.3336200e-003
+v -7.9790640e-002 1.0351662e-001 -6.6275400e-003
+v -7.6655210e-002 1.5509766e-001 7.9686300e-003
+v 2.1747320e-002 1.2118456e-001 3.0878810e-002
+v -7.5260490e-002 1.4938613e-001 3.9175980e-002
+v -2.5919610e-002 1.8272826e-001 -1.3541090e-002
+v -6.7983790e-002 1.6974781e-001 -3.1627490e-002
+v 1.6831110e-002 1.2487146e-001 2.8425580e-002
+v 5.4016490e-002 7.2883850e-002 1.8678010e-002
+v 5.0522750e-002 7.3397910e-002 1.6166890e-002
+v -5.9582440e-002 1.5623338e-001 7.9209900e-003
+v 2.5343500e-002 1.2374750e-001 9.9818800e-003
+v 1.9262750e-002 1.2689390e-001 5.5552100e-003
+v -9.0758520e-002 1.4223375e-001 2.6008130e-002
+v -4.6548490e-002 1.3320769e-001 1.6889630e-002
+v -2.4106950e-002 1.8380887e-001 -1.1544760e-002
+v 8.6784400e-003 1.2894574e-001 2.6156880e-002
+v 2.4919200e-003 1.2983563e-001 2.4847110e-002
+v 5.7345150e-002 6.9482720e-002 2.1153510e-002
+v -8.5329840e-002 1.5339912e-001 2.0378290e-002
+v 3.2877320e-002 1.1691463e-001 9.2957500e-003
+v 2.4246630e-002 1.2377758e-001 4.8764500e-003
+v -4.7765650e-002 1.3301969e-001 2.2874020e-002
+v -6.3541830e-002 1.6332115e-001 -2.5912990e-002
+v -6.6605200e-002 1.6477375e-001 -2.0670760e-002
+v -6.8504220e-002 1.6732018e-001 -2.3959570e-002
+v -7.2759160e-002 1.6965906e-001 -2.7013420e-002
+v 4.8206850e-002 7.2698580e-002 1.6994630e-002
+v -2.7383180e-002 1.2324257e-001 2.1658860e-002
+v -4.5077500e-002 1.3124443e-001 1.1145770e-002
+v 2.9253150e-002 1.2057701e-001 1.2299330e-002
+v 1.3677610e-002 1.2967262e-001 6.9327400e-003
+v 8.4210900e-003 1.3090986e-001 6.2754400e-003
+v 9.6836000e-004 1.3064303e-001 2.5865900e-003
+v 3.0802000e-003 9.8307360e-002 5.0535640e-002
+v -5.2420170e-002 1.5310101e-001 1.2927370e-002
+v -7.0359720e-002 1.6906988e-001 -2.6144260e-002
+v 5.4359390e-002 7.1467260e-002 2.1381250e-002
+v 4.5161440e-002 7.1030380e-002 2.2530690e-002
+v 1.9320440e-002 1.2738348e-001 1.1296310e-002
+v -9.3281210e-002 1.2691094e-001 1.3505010e-002
+v -8.7405060e-002 1.0593990e-001 1.3645920e-002
+v -2.2851640e-002 9.0635040e-002 5.2280460e-002
+v -6.2099370e-002 1.5406697e-001 3.0837360e-002
+v -4.5851560e-002 1.2072981e-001 2.7665040e-002
+v 5.0781670e-002 7.2155170e-002 2.0680180e-002
+v -8.9607270e-002 1.3971105e-001 2.9308560e-002
+v -5.3323050e-002 1.5273520e-001 1.6213860e-002
+v -1.5227080e-002 1.2784878e-001 2.1545200e-002
+v 3.3663540e-002 1.1574212e-001 1.7181290e-002
+v 2.4000260e-002 1.2468761e-001 1.5517930e-002
+v -8.4166840e-002 9.7756820e-002 -3.2761900e-003
+v -3.6223590e-002 1.2777519e-001 9.8501500e-003
+v -3.9189580e-002 1.2828193e-001 5.0346300e-003
+v -3.3674050e-002 1.7774449e-001 -8.1799500e-003
+v -7.4488620e-002 1.5649443e-001 -2.5954600e-003
+v -4.6755620e-002 1.3284294e-001 8.1212800e-003
+v -8.4970410e-002 1.5322309e-001 1.2654460e-002
+v -1.0866210e-002 1.2691699e-001 2.7575440e-002
+v -3.1074000e-003 1.3072898e-001 5.6428500e-003
+v -8.8760540e-002 9.7037440e-002 2.1079040e-002
+v -6.4811320e-002 3.4530640e-002 1.5508440e-002
+v -6.4300260e-002 3.5086450e-002 2.4272050e-002
+v -6.6727020e-002 3.5895770e-002 3.3849430e-002
+v 1.9838510e-002 9.6518890e-002 -2.2785880e-002
+v -3.8670510e-002 1.6070199e-001 -1.2357760e-002
+v -7.6890090e-002 1.3041906e-001 -6.9570100e-003
+v -7.2539730e-002 3.5399270e-002 7.0298800e-003
+v -6.9209050e-002 3.5454810e-002 1.2042140e-002
+v -6.4160810e-002 3.5900770e-002 1.7687570e-002
+v -6.6804150e-002 3.7377740e-002 3.3296290e-002
+v -6.2928350e-002 3.9061660e-002 4.2707680e-002
+v -7.1752230e-002 3.6789350e-002 8.6966700e-003
+v -6.5171380e-002 3.7289500e-002 2.5953770e-002
+v -6.6392030e-002 3.7712350e-002 2.9621950e-002
+v -6.4558720e-002 3.9639900e-002 3.9411530e-002
+v -6.0145790e-002 4.1202050e-002 4.4293830e-002
+v -6.0318430e-002 3.8442990e-002 4.5245950e-002
+v -3.6756310e-002 8.8663360e-002 -2.3868800e-002
+v -3.9494750e-002 3.7551570e-002 4.2870900e-002
+v -7.2016030e-002 3.7572700e-002 3.9789400e-003
+v -7.1693630e-002 3.9461000e-002 6.0145000e-003
+v -7.1165950e-002 3.9366310e-002 8.1142100e-003
+v -6.9000300e-002 3.8467710e-002 1.0768900e-002
+v -6.7253420e-002 3.8142160e-002 1.3533960e-002
+v -6.1125670e-002 3.7790050e-002 1.9710900e-002
+v -3.9179680e-002 4.2406740e-002 4.1476070e-002
+v -3.5145960e-002 3.8585920e-002 4.7732690e-002
+v -2.8950940e-002 3.9285940e-002 5.3309090e-002
+v -1.8223900e-002 9.7494570e-002 4.6847940e-002
+v -6.6916260e-002 1.2278907e-001 -8.9077400e-003
+v -6.3754640e-002 3.8250120e-002 1.6593500e-002
+v -6.4415760e-002 4.1283840e-002 2.8243480e-002
+v -8.5856340e-002 9.7025390e-002 2.7414960e-002
+v -3.7501130e-002 4.0221900e-002 4.4296550e-002
+v -3.4333970e-002 4.0923630e-002 4.8425810e-002
+v -3.1172890e-002 4.0294330e-002 5.1312460e-002
+v -6.9997320e-002 4.2073080e-002 6.6897800e-003
+v -8.0379330e-002 9.7800660e-002 3.3645750e-002
+v -2.6273160e-002 7.7631160e-002 4.8356180e-002
+v -3.7501450e-002 4.2736690e-002 4.2988400e-002
+v -2.6177500e-002 4.2498930e-002 5.3315220e-002
+v -6.9637250e-002 4.1881270e-002 3.1825800e-003
+v -6.7156510e-002 4.1972860e-002 1.0240940e-002
+v -8.7405510e-002 1.0205209e-001 2.2020360e-002
+v -2.3944380e-002 7.8800140e-002 5.3534730e-002
+v -6.0902360e-002 4.3429500e-002 4.2678530e-002
+v -3.1217880e-002 4.3847510e-002 4.9780920e-002
+v -7.5729440e-002 1.0354026e-001 3.6070970e-002
+v -6.2425320e-002 4.1885720e-002 1.4646770e-002
+v -6.1051660e-002 4.4392230e-002 1.2421940e-002
+v 2.5855060e-002 8.9610660e-002 -2.2701840e-002
+v -7.7644960e-002 8.2214940e-002 3.5797660e-002
+v -6.0381270e-002 4.5921420e-002 4.0088740e-002
+v -2.4982010e-002 8.1777650e-002 5.3421060e-002
+v -3.4453850e-002 4.4563960e-002 4.5422990e-002
+v -2.9842910e-002 4.6782280e-002 4.7746920e-002
+v -1.5119580e-002 9.9930020e-002 4.4500270e-002
+v -6.7306470e-002 4.4176830e-002 7.5958300e-003
+v -5.7852990e-002 4.6444500e-002 1.1062610e-002
+v -5.1815260e-002 1.6392582e-001 1.7488800e-003
+v -5.5174130e-002 4.8383880e-002 3.8517780e-002
+v -7.8849150e-002 1.1867375e-001 5.0622870e-002
+v -2.7229070e-002 8.7991480e-002 4.7909730e-002
+v -7.5536880e-002 1.5977062e-001 -1.0438650e-002
+v -3.6151280e-002 4.6505140e-002 4.0740900e-002
+v -2.5439220e-002 9.0677870e-002 4.8852330e-002
+v -8.0050370e-002 1.1670406e-001 4.8762460e-002
+v -5.2513640e-002 4.7577880e-002 1.4858440e-002
+v -3.2043560e-002 5.0461830e-002 3.9341520e-002
+v -3.1487770e-002 4.6930210e-002 4.5253210e-002
+v -2.0321500e-002 9.3999570e-002 5.1588540e-002
+v -7.2145040e-002 9.1556450e-002 4.1494780e-002
+v -5.3644200e-002 4.9358170e-002 1.2201850e-002
+v -8.2403890e-002 1.2186563e-001 4.9365030e-002
+v -4.9754420e-002 4.9738300e-002 3.7037110e-002
+v -3.2332060e-002 4.8672840e-002 4.2523960e-002
+v -2.3122950e-002 9.4515900e-002 4.7358870e-002
+v -8.6347140e-002 9.1722090e-002 2.6811080e-002
+v -5.7713110e-002 4.8717820e-002 7.2765100e-003
+v -8.6970360e-002 8.8912090e-002 2.4879860e-002
+v -9.2237750e-002 1.2488519e-001 4.0786530e-002
+v -1.5862800e-002 9.7021620e-002 5.0139360e-002
+v -2.7720040e-002 5.0502090e-002 4.3340720e-002
+v -8.5918770e-002 1.4263412e-001 3.9849810e-002
+v -7.5097360e-002 9.0073560e-002 3.9581000e-002
+v -8.9430840e-002 1.4730552e-001 2.7694960e-002
+v -5.3288350e-002 5.1925760e-002 1.1730350e-002
+v -5.0168720e-002 5.3462260e-002 1.6255440e-002
+v -8.5986050e-002 1.4670902e-001 3.4827030e-002
+v -6.9937250e-002 8.6076860e-002 4.2175690e-002
+v -5.0399320e-002 5.1831330e-002 3.4037400e-002
+v -8.3298980e-002 1.4960772e-001 3.3740890e-002
+v -2.9174820e-002 5.2264530e-002 3.7637320e-002
+v -8.8763730e-002 1.1944938e-001 4.6560090e-002
+v -7.7693460e-002 1.7367969e-001 -4.1478670e-002
+v -8.3418140e-002 9.4127440e-002 3.0898450e-002
+v -5.6067510e-002 5.3470630e-002 7.3718200e-003
+v -7.8935630e-002 1.4817228e-001 3.9463070e-002
+v -6.7902770e-002 8.7817230e-002 4.3526990e-002
+v -4.4111240e-002 9.2883990e-002 -2.2373210e-002
+v -8.6605100e-002 1.3226807e-001 4.6783020e-002
+v -9.2654280e-002 1.2084025e-001 4.1629650e-002
+v -5.0887310e-002 5.2727900e-002 1.4455790e-002
+v -4.9763410e-002 5.6241200e-002 3.3624250e-002
+v -8.9771330e-002 1.2904861e-001 4.3022990e-002
+v -2.8054240e-002 5.4551030e-002 3.6786850e-002
+v -2.5867080e-002 5.6689210e-002 3.9182240e-002
+v -8.3702200e-002 1.2226381e-001 -3.7301400e-003
+v -8.1455470e-002 1.3012213e-001 5.2117660e-002
+v -5.1458550e-002 5.5878150e-002 1.5900350e-002
+v -7.8597700e-002 1.7441574e-001 -4.6607580e-002
+v -5.2909820e-002 5.7043070e-002 2.0988410e-002
+v -5.2978500e-002 5.9553770e-002 2.6211920e-002
+v -5.2130640e-002 5.6302970e-002 2.6672460e-002
+v -4.7714500e-002 6.1944520e-002 3.6705820e-002
+v -8.3539790e-002 8.1169560e-002 2.7014070e-002
+v -1.8340000e-002 5.7489970e-002 4.9763020e-002
+v -8.0069810e-002 9.0586130e-002 3.4593070e-002
+v -8.3812250e-002 8.6337700e-002 2.9223270e-002
+v -5.5436650e-002 5.9420250e-002 2.3018970e-002
+v -8.2227680e-002 1.4513771e-001 4.0600080e-002
+v -2.4187580e-002 7.2269150e-002 4.7681090e-002
+v -2.5353150e-002 6.2567200e-002 4.0642170e-002
+v -9.1132110e-002 1.2282100e-001 4.4115160e-002
+v -4.6076290e-002 1.6819719e-001 7.3744000e-004
+v -8.7829280e-002 1.4351461e-001 3.5707670e-002
+v -8.6990640e-002 1.3812326e-001 4.2316550e-002
+v -1.5715900e-002 6.0822970e-002 5.2365440e-002
+v -8.3803580e-002 1.2561100e-001 5.0440490e-002
+v -6.2786680e-002 1.1274190e-001 -1.3605440e-002
+v -8.1033840e-002 8.4698180e-002 3.3106400e-002
+v -8.8563540e-002 1.1624535e-001 4.5392840e-002
+v -2.0268380e-002 6.2266810e-002 4.8212120e-002
+v -1.2619630e-002 6.1635030e-002 5.4424080e-002
+v -7.0491190e-002 8.1818160e-002 4.0609890e-002
+v -8.3882520e-002 1.3331465e-001 4.9113540e-002
+v -5.6560350e-002 4.8355540e-002 3.6607050e-002
+v 9.9444900e-003 1.0919723e-001 -1.9472810e-002
+v -5.5928250e-002 3.5917310e-002 4.6376100e-002
+v -7.6003260e-002 1.6361344e-001 -1.8021110e-002
+v -8.3798850e-002 1.0290691e-001 2.8038330e-002
+v -8.8252110e-002 1.2692730e-001 4.6141300e-002
+v -7.9126720e-002 1.0619883e-001 3.2050700e-002
+v -8.8206230e-002 9.4485700e-002 2.3744010e-002
+v -8.9110330e-002 1.3851394e-001 3.7658780e-002
+v -1.9321360e-002 9.2123890e-002 5.3820650e-002
+v -5.8265630e-002 9.0926390e-002 -2.0948690e-002
+v -2.7046310e-002 6.7014450e-002 3.9672140e-002
+v -2.1416300e-002 1.7977662e-001 -2.1732520e-002
+v -7.8240000e-003 1.0924112e-001 -2.2185670e-002
+v -2.3988340e-002 8.5995590e-002 5.3716430e-002
+v -6.0483580e-002 1.5567975e-001 4.3343800e-003
+v -8.6389150e-002 1.2168475e-001 4.8412440e-002
+v -7.4084360e-002 1.4987744e-001 -3.2610050e-002
+v -2.0580600e-002 7.9572500e-002 5.6013880e-002
+v -8.3837500e-002 1.3927865e-001 4.4893850e-002
+v -2.2933960e-002 3.5632910e-002 5.2865490e-002
+v -8.6153620e-002 1.2735612e-001 4.8563960e-002
+v -6.5728590e-002 1.0709818e-001 -1.4317670e-002
+v -2.1481090e-002 7.4194460e-002 5.2857680e-002
+v -7.6423900e-002 1.5736285e-001 -9.0354600e-003
+v -7.7216010e-002 8.5594880e-002 3.7420770e-002
+v -8.4150830e-002 1.2955013e-001 5.0483700e-002
+v -8.1221440e-002 8.1003250e-002 3.1255840e-002
+v -8.1704000e-002 1.0167226e-001 3.0939660e-002
+v -8.6252730e-002 1.0106846e-001 2.5413770e-002
+v -8.0944970e-002 1.3903572e-001 4.7359080e-002
+v -7.8908350e-002 9.4830900e-002 3.5435500e-002
+v -7.3440160e-002 9.5412600e-002 4.0210650e-002
+v -5.2675780e-002 8.8220740e-002 -2.1886300e-002
+v -7.6440670e-002 7.7511060e-002 3.3748300e-002
+v -2.1791140e-002 1.0658035e-001 -2.2327000e-002
+v -8.8360940e-002 1.4996706e-001 2.6044170e-002
+v -2.4078870e-002 6.7906700e-002 4.5178370e-002
+v -2.0018090e-002 6.7569300e-002 5.1565340e-002
+v -8.3577750e-002 1.2052625e-001 4.9177500e-002
+v -1.4655950e-002 1.7456543e-001 -2.5972690e-002
+v -2.7395940e-002 8.4108300e-002 4.8745680e-002
+v -4.1933580e-002 8.8463400e-002 -2.2126350e-002
+v -3.1693900e-002 1.0261265e-001 -2.2352310e-002
+v -2.7890200e-002 1.0440703e-001 -2.2830920e-002
+v -7.3790400e-002 1.2016662e-001 -7.8851200e-003
+v -4.6124160e-002 1.0506369e-001 -2.0457580e-002
+v -2.7412650e-002 7.3269450e-002 4.2641380e-002
+v -4.5532880e-002 3.4736480e-002 -2.1363200e-002
+v -4.4993030e-002 3.9017010e-002 -2.1097830e-002
+v -4.6462610e-002 3.6800270e-002 -1.7778710e-002
+v -8.8366460e-002 1.1361863e-001 5.8227800e-003
+v 5.1746240e-002 7.2897250e-002 9.0647400e-003
+v -7.0385250e-002 3.7450300e-002 -9.3190000e-004
+v -6.0923170e-002 3.8621820e-002 2.2468850e-002
+v -7.7696720e-002 1.7027889e-001 -4.3117910e-002
+v -4.3793210e-002 1.6955506e-001 -7.3026400e-003
+v -7.7587180e-002 1.7717875e-001 -5.0221090e-002
+v -4.0541880e-002 3.8886010e-002 -2.7364950e-002
+v -4.4215850e-002 3.6131460e-002 -2.4252210e-002
+v -6.6634880e-002 4.0430310e-002 -5.0180700e-003
+v -6.9242120e-002 4.1474050e-002 1.9289000e-004
+v -7.5640690e-002 1.5930400e-001 -2.6908460e-002
+v -6.3087030e-002 3.9614170e-002 2.5181560e-002
+v -7.2303020e-002 1.5186699e-001 -4.1544310e-002
+v -4.1051490e-002 4.1528620e-002 -2.4061000e-002
+v -4.6990580e-002 3.8892380e-002 -1.4016920e-002
+v -8.9559690e-002 1.2851666e-001 4.5457500e-003
+v -7.6987340e-002 1.5369375e-001 -2.2970800e-003
+v -7.0121670e-002 1.6882633e-001 -5.1173650e-002
+v -6.4792610e-002 4.1724530e-002 3.1616900e-002
+v -4.2148060e-002 1.2409627e-001 -9.5602500e-003
+v -4.8069700e-002 1.2493027e-001 -8.4076400e-003
+v -4.2150480e-002 4.3343970e-002 -2.1508710e-002
+v -6.7315160e-002 4.4034000e-002 1.5741800e-003
+v -7.3386640e-002 1.5463418e-001 -2.9943830e-002
+v -5.5352770e-002 4.2936210e-002 1.9135490e-002
+v -6.0067770e-002 4.1419500e-002 2.2953280e-002
+v -6.5488460e-002 4.0937780e-002 3.5315470e-002
+v -8.0066400e-002 1.5039650e-001 6.0518000e-004
+v -4.4031300e-002 4.1949070e-002 -1.7993960e-002
+v -4.5186510e-002 4.2453420e-002 -1.4193620e-002
+v -8.3109430e-002 1.0265445e-001 -3.2933400e-003
+v -6.5472800e-002 4.5627570e-002 4.5575400e-003
+v -7.5427730e-002 1.5201213e-001 -1.4393690e-002
+v -5.4473420e-002 4.5937510e-002 2.3612600e-002
+v -6.2464100e-002 4.3722000e-002 2.8493310e-002
+v -6.2832600e-002 4.5182750e-002 3.4622890e-002
+v -6.3538130e-002 4.3524020e-002 3.7974010e-002
+v -6.0255260e-002 4.4749620e-002 -4.1316200e-003
+v -6.3242050e-002 4.5549700e-002 4.8428000e-004
+v -6.2249430e-002 4.6540050e-002 7.1903500e-003
+v -9.1003650e-002 1.4885725e-001 2.1507030e-002
+v -5.7094130e-002 4.5996540e-002 2.6865280e-002
+v -5.7276490e-002 4.7299580e-002 2.9889950e-002
+v -3.9519900e-002 1.7385855e-001 -7.5752600e-003
+v -8.9641110e-002 1.3841920e-001 3.4141800e-002
+v -9.2601430e-002 1.3018652e-001 2.5183580e-002
+v -9.2280860e-002 1.2762053e-001 2.9751670e-002
+v -3.3957310e-002 4.1025060e-002 -2.9660250e-002
+v -9.0199540e-002 1.1657506e-001 5.6754900e-003
+v -5.8515890e-002 4.7731310e-002 2.1246000e-004
+v -7.1723560e-002 1.4617438e-001 -2.1567820e-002
+v -5.2389820e-002 4.5449130e-002 1.7686300e-002
+v -5.9414350e-002 4.7277990e-002 3.4172420e-002
+v -5.7520620e-002 1.5877600e-001 4.1621200e-003
+v -8.0959140e-002 1.0926674e-001 -2.0189900e-003
+v -5.1904000e-002 4.6100060e-002 1.9421290e-002
+v -5.1830050e-002 4.8568730e-002 2.1647030e-002
+v -7.7650400e-002 1.5658012e-001 -1.6599150e-002
+v -3.7416450e-002 4.7682130e-002 -1.7147280e-002
+v -7.8876110e-002 1.5347012e-001 3.9875800e-003
+v -5.7635420e-002 5.0425540e-002 4.6108400e-003
+v -5.2625440e-002 5.0434620e-002 2.9046740e-002
+v -5.2998720e-002 4.9169020e-002 3.3967600e-002
+v -7.3502600e-002 1.6871934e-001 -4.4791800e-002
+v -5.4420720e-002 4.7836520e-002 -5.9186900e-003
+v -5.2312740e-002 5.1085350e-002 2.4485690e-002
+v -7.9129930e-002 1.6736568e-001 -3.5506230e-002
+v 9.4115700e-003 1.2350285e-001 -9.8291000e-003
+v -3.2715700e-002 1.0896631e-001 -1.8941410e-002
+v -3.1133380e-002 4.9607260e-002 -1.9406940e-002
+v 4.5997330e-002 6.9814450e-002 3.0143300e-003
+v 3.3525460e-002 1.0966209e-001 -6.9894800e-003
+v -5.5047160e-002 5.2767560e-002 -3.9461300e-003
+v -5.6897890e-002 4.9655570e-002 -1.5319000e-003
+v -5.0290500e-002 4.9098930e-002 1.7164780e-002
+v -5.0595170e-002 4.9923270e-002 1.9174130e-002
+v -5.1887420e-002 5.3324670e-002 2.8705560e-002
+v -6.7684480e-002 1.6533627e-001 -5.5466400e-002
+v -3.0271440e-002 5.2106080e-002 -1.7676140e-002
+v -9.1087300e-003 1.1141669e-001 -2.0543230e-002
+v -5.7069360e-002 5.4424380e-002 2.3395500e-003
+v -3.2748380e-002 1.7759875e-001 -1.1627470e-002
+v -2.9009580e-002 5.1265290e-002 -2.2175780e-002
+v -3.1383130e-002 5.1791310e-002 -1.3886800e-002
+v -5.5673960e-002 5.6983850e-002 -3.3510400e-003
+v -5.0916050e-002 5.3813610e-002 1.9753140e-002
+v -8.8875380e-002 1.5169443e-001 2.0086580e-002
+v -7.7153050e-002 1.7378676e-001 -4.7867620e-002
+v -7.8577770e-002 1.6420639e-001 -3.1825860e-002
+v -2.7545910e-002 5.4021570e-002 -2.5147390e-002
+v -5.4463660e-002 5.5357450e-002 1.0326840e-002
+v -8.7041410e-002 1.3058932e-001 9.1161000e-004
+v -9.0009340e-002 1.3278082e-001 5.9220600e-003
+v -9.2232620e-002 1.3195400e-001 1.5430650e-002
+v -4.8639980e-002 1.6472475e-001 -5.0591500e-003
+v -5.4066480e-002 5.9959350e-002 -7.5992200e-003
+v -5.7434090e-002 5.7683500e-002 8.7259700e-003
+v -8.6794730e-002 1.3850688e-001 4.5575900e-003
+v -9.2989530e-002 1.3092307e-001 1.9919290e-002
+v -9.1282030e-002 1.3311897e-001 2.4688630e-002
+v 2.1815020e-002 1.1770533e-001 -1.0015300e-002
+v -2.9647120e-002 5.8104260e-002 -2.1311320e-002
+v -3.1289530e-002 5.5208570e-002 -1.4387840e-002
+v -5.9002160e-002 5.9234620e-002 2.6140800e-003
+v -9.0241700e-002 1.3575994e-001 1.4149160e-002
+v -6.1569420e-002 1.7084875e-001 -6.1679170e-002
+v -6.6070180e-002 1.6557822e-001 -5.8644080e-002
+v -2.4539930e-002 1.8005865e-001 -1.8726950e-002
+v -1.6131750e-002 1.8298848e-001 -2.6037190e-002
+v -3.0809390e-002 5.6998040e-002 -1.7835020e-002
+v 1.0464280e-002 9.6180450e-002 -2.5898970e-002
+v -5.7491630e-002 5.9530160e-002 -1.0786100e-003
+v -8.9146460e-002 1.3650500e-001 2.5952780e-002
+v 4.3714500e-003 1.0391901e-001 -2.1515100e-002
+v -9.0377040e-002 1.3252490e-001 3.1082650e-002
+v -9.0795450e-002 1.3855232e-001 2.0562560e-002
+v -9.4237710e-002 1.2615419e-001 2.2201450e-002
+v -9.0336910e-002 1.3119830e-001 3.8138790e-002
+v -4.5082610e-002 1.2218447e-001 -1.1569430e-002
+v 1.1348010e-002 9.8243750e-002 -2.3024250e-002
+v -3.9227920e-002 9.9184630e-002 -2.1912720e-002
+v -6.5509530e-002 1.5857325e-001 -5.5600270e-002
+v -7.7409510e-002 1.6260515e-001 -2.0754580e-002
+v -4.8580010e-002 1.6689211e-001 -2.5256100e-003
+v -7.6922910e-002 1.5351394e-001 -9.0785600e-003
+v -6.7750580e-002 1.5734825e-001 -5.3982110e-002
+v 5.2906410e-002 6.5230450e-002 -5.1112000e-004
+v -2.9054820e-002 6.1084120e-002 -2.4918230e-002
+v -3.1066920e-002 6.5058860e-002 -2.2751080e-002
+v 2.4249720e-002 1.0266151e-001 -1.8313830e-002
+v -5.5473660e-002 1.6050213e-001 1.3763500e-003
+v -6.6642850e-002 1.6040875e-001 -5.6842680e-002
+v -7.8200320e-002 1.6073213e-001 -2.3999690e-002
+v -1.8320680e-002 1.1968625e-001 -1.1110660e-002
+v 2.1712970e-002 1.0956342e-001 -1.5081090e-002
+v -6.8382640e-002 1.5980248e-001 -5.4208800e-002
+v -2.5445620e-002 6.0208550e-002 -3.0864700e-002
+v -2.6540330e-002 6.5084000e-002 -3.1664870e-002
+v -2.8425710e-002 6.2199610e-002 -2.7938500e-002
+v -3.2605750e-002 6.1264600e-002 -1.5453010e-002
+v -7.0872290e-002 1.1611638e-001 -7.9563700e-003
+v -6.9780530e-002 1.5938570e-001 -4.9418240e-002
+v -3.0324870e-002 6.7694720e-002 -2.7654950e-002
+v -3.2977370e-002 6.6365180e-002 -1.8385530e-002
+v 1.3533490e-002 1.0255388e-001 -2.1579310e-002
+v 4.4408530e-002 6.9758860e-002 9.4765000e-004
+v -2.1999000e-003 1.1215881e-001 -1.9658660e-002
+v -7.2028500e-002 6.7046610e-002 -7.2256000e-004
+v -7.8699630e-002 1.7313910e-001 -4.2720470e-002
+v -8.3211970e-002 1.5072131e-001 4.2128500e-003
+v -8.7439060e-002 1.3374875e-001 2.3974700e-003
+v 2.6348020e-002 8.4562230e-002 -2.3151710e-002
+v -7.4901490e-002 7.0419350e-002 -2.2854300e-003
+v -5.4576350e-002 9.1562950e-002 -2.2098700e-002
+v -7.3242520e-002 1.5231332e-001 -3.5703520e-002
+v -7.4550960e-002 1.7218738e-001 -4.7551010e-002
+v -2.8680680e-002 6.8283500e-002 -3.0610160e-002
+v 1.7372900e-002 1.0246037e-001 -2.1487700e-002
+v -8.1257430e-002 7.3025200e-002 7.1020400e-003
+v -7.4982300e-002 1.5407794e-001 -1.8974470e-002
+v -9.1556500e-002 1.3196262e-001 1.0638150e-002
+v -8.2448000e-004 9.5165120e-002 -3.2056320e-002
+v -7.7618830e-002 7.3999130e-002 -5.3263500e-003
+v -7.9858790e-002 7.2755040e-002 3.0420200e-003
+v -8.1627470e-002 7.3470610e-002 1.1161690e-002
+v -7.3679290e-002 1.4785987e-001 -2.0236290e-002
+v -9.1309820e-002 1.4848588e-001 1.6270070e-002
+v -9.0850140e-002 1.4625613e-001 1.4809050e-002
+v -6.8543890e-002 1.7513008e-001 -5.7187900e-002
+v -2.7253960e-002 1.0747453e-001 -2.1279680e-002
+v 2.1443580e-002 1.2273826e-001 -2.9316700e-003
+v -7.9061200e-002 7.3724300e-002 -8.4521000e-004
+v -8.2063500e-002 7.5993670e-002 1.7615500e-003
+v -8.3736580e-002 7.6771840e-002 8.9586000e-003
+v -9.0205720e-002 1.4947775e-001 1.3035090e-002
+v 8.4818000e-004 1.1670025e-001 -1.7337090e-002
+v -7.4577550e-002 1.5164041e-001 -2.8647990e-002
+v -2.9087460e-002 7.2924630e-002 -3.3354470e-002
+v -3.1184020e-002 7.3989530e-002 -3.0339870e-002
+v -3.2606620e-002 7.1955620e-002 -2.4866580e-002
+v -8.0575990e-002 7.6607800e-002 -2.9879400e-003
+v -8.9491020e-002 1.4392581e-001 1.2488490e-002
+v -7.7388410e-002 1.4656426e-001 -4.3543000e-003
+v -7.2896160e-002 1.5834962e-001 -3.4109420e-002
+v 7.1346500e-003 1.1468229e-001 -1.8345640e-002
+v -3.4502610e-002 7.6130020e-002 -2.2373150e-002
+v -8.3890740e-002 8.0789530e-002 2.2951400e-003
+v -8.3740480e-002 7.7240270e-002 4.6673300e-003
+v -8.6204620e-002 8.0930750e-002 1.0535420e-002
+v -8.6061500e-002 7.9931100e-002 1.4440780e-002
+v -8.1542760e-002 7.7950660e-002 2.6727280e-002
+v 2.6666170e-002 1.1268609e-001 -1.0509540e-002
+v -7.6041430e-002 1.5663068e-001 -2.1420480e-002
+v -9.0012110e-002 1.5083344e-001 1.5752740e-002
+v -7.1156510e-002 1.6335125e-001 -4.5360530e-002
+v -3.3210960e-002 7.6873190e-002 -2.7708380e-002
+v -7.3263090e-002 7.9983830e-002 -1.3749940e-002
+v -7.9285950e-002 8.0048830e-002 -7.0125500e-003
+v -8.6034510e-002 8.2645720e-002 1.9542680e-002
+v -8.4335410e-002 8.0729950e-002 2.2180460e-002
+v -7.1351460e-002 1.5727092e-001 -4.2183090e-002
+v -7.3548450e-002 1.6120822e-001 -3.5288420e-002
+v 1.6732620e-002 1.0991230e-001 -1.7020040e-002
+v -3.0978770e-002 7.7020860e-002 -3.2816490e-002
+v -6.2359240e-002 1.7544824e-001 -6.1485990e-002
+v -1.7587870e-002 1.1491318e-001 -1.7205040e-002
+v -8.2354050e-002 8.0876320e-002 -2.4038900e-003
+v -7.8578910e-002 1.4050129e-001 -4.6031000e-003
+v -2.8931080e-002 7.9247620e-002 -3.5049800e-002
+v -3.1225710e-002 8.0413100e-002 -3.2182320e-002
+v -3.3258680e-002 7.9621670e-002 -2.7146060e-002
+v -4.4697400e-002 1.1791537e-001 -1.4725860e-002
+v -7.9723740e-002 8.4226660e-002 -8.7608600e-003
+v -8.5042160e-002 8.3817830e-002 -7.7640000e-005
+v -8.6776400e-002 8.4344860e-002 1.2419030e-002
+v -8.6674670e-002 8.2665010e-002 1.5174340e-002
+v -8.5106250e-002 8.5176580e-002 2.5679440e-002
+v -7.6975760e-002 8.2935940e-002 -1.1450630e-002
+v -8.2776390e-002 8.3430890e-002 -4.3687000e-003
+v -8.6180440e-002 8.2572150e-002 6.3639000e-003
+v -9.1160820e-002 1.4144362e-001 1.5673910e-002
+v -7.4638800e-002 1.4398484e-001 -7.1504600e-003
+v -8.3448500e-002 1.3393299e-001 -1.6873200e-003
+v -7.5804700e-002 1.5134475e-001 -1.9881200e-002
+v -7.4924140e-002 1.5273013e-001 -1.9397440e-002
+v -5.2314440e-002 1.2159646e-001 -1.0798060e-002
+v -3.0734050e-002 8.5427560e-002 -3.0506670e-002
+v -3.2590560e-002 8.1942660e-002 -2.9100210e-002
+v -8.6454830e-002 8.6940490e-002 9.1667000e-004
+v -1.2501820e-002 1.0634409e-001 -2.2360190e-002
+v -8.8585880e-002 1.4605869e-001 9.8780000e-003
+v -8.5609750e-002 1.4712513e-001 6.5981100e-003
+v -8.7511210e-002 1.5061504e-001 1.0152460e-002
+v -6.0113540e-002 3.5550440e-002 4.4907580e-002
+v -8.8284200e-002 8.6869110e-002 8.1029200e-003
+v -8.8812560e-002 8.7765490e-002 1.4226540e-002
+v -8.8001070e-002 8.6626430e-002 1.5466680e-002
+v -8.6991110e-002 8.6444700e-002 2.2420950e-002
+v -7.4609990e-002 1.4727815e-001 -1.4172380e-002
+v -3.4707910e-002 8.4035880e-002 -2.4302260e-002
+v -8.4964900e-002 8.9962540e-002 -3.0068000e-003
+v -8.8091450e-002 8.7741580e-002 4.8489900e-003
+v -9.1490470e-002 1.4543178e-001 2.2277220e-002
+v -9.4380420e-002 1.2183919e-001 1.7904340e-002
+v -2.9164530e-002 8.5393440e-002 -3.3666780e-002
+v -3.0557790e-002 8.8625920e-002 -2.7550670e-002
+v -7.7770550e-002 8.7844840e-002 -1.1694810e-002
+v -8.0728260e-002 8.8204150e-002 -7.8003100e-003
+v -8.3272540e-002 8.9476690e-002 -5.6502900e-003
+v -8.9398710e-002 8.9539000e-002 1.1645550e-002
+v -8.9698390e-002 1.3971257e-001 1.3774760e-002
+v -7.7134890e-002 1.5151225e-001 -5.5823000e-003
+v -5.1121410e-002 1.6374125e-001 -2.6640500e-003
+v -8.6442960e-002 1.2767438e-001 -1.4864100e-003
+v -6.9605590e-002 1.5490763e-001 -5.0188670e-002
+v -8.7265180e-002 9.2110030e-002 4.2059000e-003
+v -8.9086250e-002 9.2377120e-002 1.0569860e-002
+v -8.9612340e-002 9.1599880e-002 1.7812280e-002
+v -8.2732460e-002 1.4196856e-001 1.2529100e-003
+v -7.2618370e-002 1.4368135e-001 -1.0987100e-002
+v -7.7677230e-002 1.6610992e-001 -3.6777320e-002
+v -1.5078060e-002 9.3863440e-002 -3.4317310e-002
+v -7.1057280e-002 1.5476885e-001 -4.5778530e-002
+v -9.2331920e-002 1.2523886e-001 9.1589500e-003
+v -7.6046700e-002 9.1037250e-002 -1.3643150e-002
+v -8.2942810e-002 9.3291700e-002 -6.1856300e-003
+v -1.0411170e-002 9.4592340e-002 -3.3784850e-002
+v -2.9331140e-002 1.1476230e-001 -1.5844640e-002
+v -3.7218250e-002 1.1594244e-001 -1.5173050e-002
+v -1.2429920e-002 1.0286006e-001 -2.3822480e-002
+v 6.6509600e-003 8.8144500e-002 -3.2945810e-002
+v -6.4119900e-003 9.2876210e-002 -3.4817640e-002
+v 1.5800150e-002 1.1996558e-001 -1.1415630e-002
+v 2.9102740e-002 1.0247506e-001 -1.5768380e-002
+v 4.2080690e-002 6.3480630e-002 -2.5405300e-003
+v 2.8723120e-002 9.7943220e-002 -1.7497350e-002
+v -1.9987640e-002 1.0278313e-001 -2.3392920e-002
+v 3.3748350e-002 8.3644140e-002 -1.8630450e-002
+v -1.8685680e-002 1.8689625e-001 -2.0248700e-002
+v 6.4154900e-003 1.1790181e-001 -1.6282740e-002
+v 5.6305210e-002 6.7769910e-002 2.6525000e-003
+v -5.3608300e-003 1.1289400e-001 -1.9613290e-002
+v 4.5769430e-002 6.4628800e-002 -1.2166100e-003
+v -1.0090870e-002 9.8229650e-002 -2.7731360e-002
+v -6.0458520e-002 1.1755645e-001 -1.1354580e-002
+v 1.2933940e-002 1.1887250e-001 -1.3979370e-002
+v 1.5235680e-002 9.4977900e-002 -2.4437140e-002
+v -3.0892950e-002 4.7409030e-002 -2.4954000e-002
+v -1.7766190e-002 1.8572344e-001 -2.3049280e-002
+v -1.3034890e-002 1.1002855e-001 -2.0161170e-002
+v -7.1206550e-002 3.8608570e-002 7.7218000e-004
+v 1.7904800e-002 1.0627709e-001 -1.7729250e-002
+v -3.3623490e-002 1.1840428e-001 -1.1927480e-002
+v -4.9906840e-002 1.1788332e-001 -1.4402480e-002
+v -6.6878100e-003 1.1747209e-001 -1.5359280e-002
+v -1.5451470e-002 1.8597600e-001 -2.4795870e-002
+v -3.0603900e-002 3.8038460e-002 -3.0123840e-002
+v -1.3220270e-002 1.8397188e-001 -2.7519460e-002
+v -4.7859450e-002 1.1162729e-001 -1.7482120e-002
+v -1.3098990e-002 9.0776040e-002 -3.6659270e-002
+v -6.3117340e-002 1.5425437e-001 2.9730400e-003
+v -5.5139750e-002 1.1051601e-001 -1.7672740e-002
+v -1.1096770e-002 1.8202324e-001 -2.8042450e-002
+v -2.6568900e-002 3.4695830e-002 -2.9113750e-002
+v -6.6396600e-003 1.0222209e-001 -2.3519320e-002
+v -5.6996400e-002 1.5741713e-001 6.0244000e-004
+v 1.9076550e-002 9.1870620e-002 -2.4890230e-002
+v 1.3473090e-002 1.2429893e-001 -6.8361400e-003
+v -2.1730490e-002 9.8410960e-002 -2.4306850e-002
+v -1.7142170e-002 9.8057460e-002 -2.4924330e-002
+v -5.8698110e-002 1.5137318e-001 -6.5801000e-004
+v 3.5641100e-003 1.2764883e-001 -4.4672400e-003
+v -8.5369800e-003 9.9921220e-002 -2.4351070e-002
+v -1.2171980e-002 1.8125102e-001 -2.9061170e-002
+v -6.1113980e-002 1.5305212e-001 9.9983000e-004
+v -2.9570620e-002 1.1713871e-001 -1.3675530e-002
+v 3.0530110e-002 1.1221207e-001 -8.1860600e-003
+v -3.1714100e-002 3.5111530e-002 -3.0658990e-002
+v -1.3691130e-002 1.7914707e-001 -2.8126410e-002
+v 1.1620840e-002 1.1548972e-001 -1.6385680e-002
+v -6.1993570e-002 1.5028063e-001 -1.6297100e-003
+v 3.6684020e-002 1.0099570e-001 -9.8485900e-003
+v 4.8512670e-002 7.1798180e-002 6.0005000e-003
+v -4.6583000e-004 1.1983662e-001 -1.3610580e-002
+v 1.6747170e-002 9.0113950e-002 -2.7127190e-002
+v 6.9832400e-003 9.7730080e-002 -2.4800310e-002
+v -4.3226830e-002 4.6263570e-002 -1.1771730e-002
+v -8.3562500e-003 1.1373600e-001 -1.8239810e-002
+v -1.2354410e-002 1.1556773e-001 -1.6486930e-002
+v 4.6834470e-002 7.4354100e-002 1.0139500e-002
+v 2.5319170e-002 1.0931725e-001 -1.3579660e-002
+v -4.2459500e-002 1.1392482e-001 -1.6188050e-002
+v 5.7744640e-002 6.4158440e-002 2.6277600e-003
+v -5.9710530e-002 3.6535780e-002 -9.4949000e-003
+v -3.2078400e-003 1.0962100e-001 -2.1523850e-002
+v 2.7020740e-002 6.1345700e-002 -2.2292060e-002
+v 7.1030200e-003 1.0191162e-001 -2.1230990e-002
+v -3.8225680e-002 1.2465525e-001 -7.3257400e-003
+v 2.5941540e-002 1.1576352e-001 -8.2193900e-003
+v -6.1297960e-002 3.3900220e-002 -9.3216600e-003
+v -5.9466670e-002 1.4743956e-001 -1.8885400e-003
+v 1.0506610e-002 1.0087700e-001 -2.2109510e-002
+v 3.3081340e-002 1.0273382e-001 -1.2787210e-002
+v 1.2517840e-002 1.0475378e-001 -1.9915960e-002
+v 2.3087990e-002 9.3998720e-002 -2.2210680e-002
+v 3.1555430e-002 9.2484730e-002 -1.8204280e-002
+v 6.2723100e-003 9.9910370e-002 -2.2296890e-002
+v -4.0917240e-002 4.6121780e-002 -1.7942580e-002
+v 3.5407360e-002 9.8188850e-002 -1.2008970e-002
+v 9.4135900e-003 1.2121902e-001 -1.2937780e-002
+v 5.3735190e-002 7.2027350e-002 6.8010000e-003
+v 2.5620340e-002 1.1880719e-001 -5.0330800e-003
+v -3.8150260e-002 4.2466610e-002 -2.6893990e-002
+v -2.8212410e-002 1.1116862e-001 -1.8001930e-002
+v -6.0253590e-002 1.4339100e-001 -3.7906300e-003
+v 1.9016880e-002 1.0401450e-001 -1.9333120e-002
+v 7.5446700e-003 9.1682150e-002 -3.1643140e-002
+v -7.0760800e-003 1.2240119e-001 -1.1364410e-002
+v -1.9047500e-002 9.6562130e-002 -2.7579900e-002
+v -1.6953390e-002 1.0669256e-001 -2.2002990e-002
+v -6.7307000e-004 1.0119875e-001 -2.2857770e-002
+v -9.0179300e-003 1.2528031e-001 -7.7912000e-003
+v -6.8136180e-002 1.8006113e-001 -5.8816050e-002
+v -2.3600190e-002 1.1513818e-001 -1.5577390e-002
+v -5.9831220e-002 4.2842260e-002 -6.6469100e-003
+v 5.3124070e-002 5.9012380e-002 -2.8853800e-003
+v -3.6931840e-002 3.7107370e-002 -2.9714170e-002
+v -5.6215140e-002 1.4139213e-001 -2.8027300e-003
+v 3.6695880e-002 1.0372844e-001 -7.9621500e-003
+v -3.5885070e-002 1.2040038e-001 -1.0640470e-002
+v -9.3569500e-003 8.5423730e-002 -3.8112540e-002
+v -6.0127340e-002 1.2041391e-001 -9.3791100e-003
+v -3.9842790e-002 1.2156113e-001 -1.1570310e-002
+v 2.8322200e-002 1.0847957e-001 -1.2623390e-002
+v -1.8733500e-003 1.1593910e-001 -1.7169430e-002
+v 3.8648150e-002 9.0153340e-002 -1.2549680e-002
+v -1.7359200e-003 9.2244170e-002 -3.4310460e-002
+v 5.0000820e-002 6.1612070e-002 -3.4649900e-003
+v 5.5858960e-002 6.2910170e-002 6.9037000e-004
+v 2.0461520e-002 1.1515372e-001 -1.3103780e-002
+v -1.5165840e-002 1.1798075e-001 -1.4465520e-002
+v -7.0859540e-002 7.1510150e-002 3.3895100e-002
+v 2.2674030e-002 8.6606050e-002 -2.4925490e-002
+v 3.5358840e-002 8.7438890e-002 -1.7109050e-002
+v 1.8400920e-002 1.2145507e-001 -7.6804200e-003
+v -2.5425900e-002 4.1421010e-002 -2.9204830e-002
+v -8.2085100e-003 9.6777440e-002 -3.0809780e-002
+v -5.6810660e-002 3.3873940e-002 -1.1166310e-002
+v -3.4588640e-002 4.4744960e-002 -2.7122900e-002
+v -4.0251680e-002 1.1827531e-001 -1.3674080e-002
+v 1.6387020e-002 1.1402346e-001 -1.5496900e-002
+v 4.2635280e-002 6.0797460e-002 -3.4583700e-003
+v -5.0687200e-002 3.5935870e-002 -1.2380790e-002
+v 7.3446800e-003 9.4509570e-002 -2.9683220e-002
+v -1.9706700e-002 9.2917340e-002 -3.4636880e-002
+v -1.2083040e-002 1.2219229e-001 -9.7120900e-003
+v 4.8805930e-002 6.8457810e-002 1.6952900e-003
+v -3.0869700e-003 9.8402500e-002 -2.7403170e-002
+v -5.3198790e-002 1.3672896e-001 -1.6580500e-003
+v -4.7290060e-002 1.3055355e-001 1.6909100e-003
+v 4.4651700e-003 1.2044039e-001 -1.3931400e-002
+v -2.3850100e-003 1.2290534e-001 -1.0382460e-002
+v -2.4833330e-002 9.5858030e-002 -2.5162110e-002
+v -4.2296900e-002 3.6291920e-002 -2.7253600e-002
+v -5.4388260e-002 1.3404922e-001 -3.9920400e-003
+v -5.0539380e-002 1.3336659e-001 -1.0872200e-003
+v 2.6040300e-003 9.6942660e-002 -2.8407060e-002
+v -7.8163100e-003 1.2821209e-001 -1.9430400e-003
+v 6.5111700e-003 1.3002517e-001 9.2881000e-004
+v 3.4742860e-002 9.2274140e-002 -1.5654590e-002
+v -6.7787700e-002 1.8088887e-001 -5.8191050e-002
+v -3.3715410e-002 1.1151566e-001 -1.8078440e-002
+v 4.4630400e-003 1.2427294e-001 -9.4291400e-003
+v -2.3370170e-002 9.3392760e-002 -3.2031820e-002
+v -4.8982070e-002 1.2980647e-001 -1.3229400e-003
+v -7.8164000e-004 1.2822918e-001 -3.2490000e-003
+v 2.4960400e-003 8.9857600e-002 -3.3628450e-002
+v 7.4553300e-003 1.1196790e-001 -1.9554260e-002
+v 2.8791140e-002 9.1157340e-002 -2.0370210e-002
+v -5.3590150e-002 1.2437450e-001 -7.3470400e-003
+v -4.7743630e-002 1.2064432e-001 -1.2812990e-002
+v -1.9616230e-002 1.2109197e-001 -9.5487700e-003
+v -6.5047370e-002 1.7999148e-001 -5.9758600e-002
+v -5.1704160e-002 3.7620360e-002 -1.1763450e-002
+v -5.2124270e-002 1.2929832e-001 -4.1187000e-003
+v -4.5334450e-002 1.2891494e-001 1.5819100e-003
+v -3.0471200e-003 1.2919453e-001 -1.0688000e-003
+v 7.2129600e-003 1.2721957e-001 -5.2073700e-003
+v 1.1669320e-002 1.2720154e-001 -3.1850900e-003
+v 5.3056400e-002 6.9708830e-002 3.1291400e-003
+v -6.3021150e-002 1.7810951e-001 -6.0393570e-002
+v 2.8204800e-002 6.4391270e-002 -2.0698040e-002
+v 3.4400180e-002 1.0503000e-001 -1.0224920e-002
+v 3.0975190e-002 1.0790250e-001 -1.1058430e-002
+v -4.8984390e-002 1.1480518e-001 -1.5966690e-002
+v -3.2821710e-002 1.2300500e-001 -5.9088300e-003
+v -5.0792860e-002 1.2716487e-001 -4.8183200e-003
+v -3.5301670e-002 1.2547815e-001 -3.1542800e-003
+v 5.6455250e-002 6.9951490e-002 4.9191700e-003
+v -1.6240450e-002 1.2512177e-001 -3.6499700e-003
+v -1.6970400e-002 1.1119793e-001 -1.9586410e-002
+v -5.4088120e-002 3.9781210e-002 -1.0544680e-002
+v -3.4190490e-002 4.7514010e-002 -2.2301500e-002
+v 1.3699090e-002 9.3914220e-002 -2.6427690e-002
+v 8.8000000e-004 9.9234930e-002 -2.4355670e-002
+v -4.6459460e-002 1.2723953e-001 -4.8843300e-003
+v -4.1735500e-002 1.2687599e-001 -4.1742000e-003
+v -2.1000480e-002 1.2313643e-001 -6.1190100e-003
+v -1.2130450e-002 1.2572568e-001 -5.2007900e-003
+v -4.3822400e-003 1.2640753e-001 -6.9495200e-003
+v 1.4085700e-003 3.4781990e-002 -2.3265200e-002
+v -1.4846200e-002 3.5070930e-002 -2.6071900e-002
+v -2.1399500e-002 3.4795120e-002 -2.7958820e-002
+v 1.2009220e-002 3.5961900e-002 -2.1735750e-002
+v 3.8249200e-003 3.6129220e-002 -2.3878090e-002
+v -5.1139560e-002 9.6617580e-002 -2.2095120e-002
+v -5.4813320e-002 9.8102480e-002 -2.1425370e-002
+v -2.7597040e-002 1.6979824e-001 -1.8170420e-002
+v 1.3359870e-002 3.9377410e-002 -2.2496330e-002
+v 4.3919300e-003 3.8674430e-002 -2.4170290e-002
+v -6.8478200e-003 3.6444540e-002 -2.5177120e-002
+v -1.3280260e-002 3.7699590e-002 -2.6391810e-002
+v -4.7672760e-002 3.6116650e-002 -1.3301210e-002
+v -4.5590120e-002 1.0853826e-001 -1.8796680e-002
+v -5.0095670e-002 1.0990925e-001 -1.8504510e-002
+v -6.5766640e-002 3.6469550e-002 -7.2073000e-003
+v -2.3455840e-002 1.6824727e-001 -1.8822880e-002
+v -4.5918000e-003 3.8404570e-002 -2.5412870e-002
+v -2.4954130e-002 3.7441060e-002 -2.9152720e-002
+v 2.9007770e-002 3.7358220e-002 -2.7474000e-004
+v -7.9468800e-003 4.1489920e-002 -2.5911270e-002
+v -1.6803800e-002 3.9753810e-002 -2.7565350e-002
+v -6.5156150e-002 1.4034537e-001 -7.6848600e-003
+v -4.7080100e-002 4.0700690e-002 -1.1869830e-002
+v -6.8470630e-002 3.7477700e-002 -4.9557400e-003
+v 3.7326850e-002 4.0209510e-002 -8.5850000e-004
+v 3.5349870e-002 4.1257050e-002 -2.8075100e-003
+v 5.1820700e-003 4.1536320e-002 -2.4065670e-002
+v 1.8660660e-002 1.0030784e-001 -2.2127290e-002
+v -6.0510780e-002 1.0748450e-001 -1.7042300e-002
+v -6.2374340e-002 4.0146090e-002 -7.4040200e-003
+v 2.5456950e-002 3.9483890e-002 -4.0251400e-003
+v -2.2828000e-004 4.3394940e-002 -2.5124420e-002
+v -8.1088400e-003 4.3439060e-002 -2.6140070e-002
+v -1.7362450e-002 4.3237420e-002 -2.7665190e-002
+v -2.6416670e-002 4.4674020e-002 -2.8209740e-002
+v 3.8064500e-003 1.0944331e-001 -2.0203790e-002
+v -5.8232370e-002 9.5690400e-002 -2.0616030e-002
+v -6.6122370e-002 4.2341260e-002 -2.7538800e-003
+v -6.0959920e-002 9.4173040e-002 -1.9015670e-002
+v 3.1352250e-002 4.2649280e-002 -4.6745000e-003
+v -3.3540900e-002 3.6342620e-002 4.9089960e-002
+v 1.7252780e-002 4.4335610e-002 -2.3067190e-002
+v 1.0637660e-002 4.4161560e-002 -2.4926170e-002
+v 4.3843100e-003 4.5806710e-002 -2.6788990e-002
+v -8.2506400e-003 4.5148720e-002 -2.8441070e-002
+v -1.5748410e-002 4.5043860e-002 -2.7877790e-002
+v 2.8990330e-002 4.4697850e-002 -6.1863000e-003
+v 8.1686400e-003 4.5053030e-002 -2.5178740e-002
+v -9.6291000e-004 4.5378230e-002 -2.7308280e-002
+v -1.7033400e-003 4.7819200e-002 -2.9928930e-002
+v -3.1535830e-002 4.4740410e-002 -2.8079410e-002
+v -3.3619650e-002 1.5691468e-001 -1.1024870e-002
+v -5.0751180e-002 4.3109620e-002 -1.0018680e-002
+v 3.6890890e-002 4.7353200e-002 -6.1057100e-003
+v 2.4975630e-002 4.2644580e-002 -7.0169900e-003
+v 2.4562420e-002 4.8369560e-002 -1.9672760e-002
+v 1.3964040e-002 4.5579170e-002 -2.4706510e-002
+v 1.3376130e-002 4.8630300e-002 -2.6551500e-002
+v 3.7308900e-003 4.8127990e-002 -2.9025970e-002
+v -8.7947000e-003 4.7056850e-002 -2.9881630e-002
+v -1.3753770e-002 5.1865060e-002 -3.2243480e-002
+v -2.1200840e-002 4.6657090e-002 -2.7951320e-002
+v 3.9693540e-002 4.5658580e-002 -4.5274100e-003
+v 3.3627400e-002 4.8717730e-002 -6.3904600e-003
+v -6.5352120e-002 9.9294570e-002 -1.6820150e-002
+v 1.2868100e-003 5.0383670e-002 -3.0357440e-002
+v -8.1797500e-003 4.9845800e-002 -3.1071390e-002
+v -1.7184350e-002 4.8210500e-002 -2.9741930e-002
+v -2.6049450e-002 4.7692500e-002 -2.6149500e-002
+v -8.4747010e-002 1.1078350e-001 3.9488380e-002
+v -5.1316870e-002 4.8270690e-002 -7.9310500e-003
+v -8.2506510e-002 1.2765487e-001 -4.6796400e-003
+v 3.8663690e-002 5.1696670e-002 -6.6910200e-003
+v -7.5643160e-002 9.9440450e-002 -1.1927610e-002
+v 2.0284470e-002 5.1349190e-002 -2.4895380e-002
+v 5.9436000e-003 5.0976660e-002 -2.9119360e-002
+v -2.5528290e-002 5.1472710e-002 -2.6884680e-002
+v -3.5562670e-002 4.9399890e-002 -1.2865040e-002
+v -4.2818980e-002 1.6220182e-001 -1.0337510e-002
+v -6.5593600e-002 1.7665711e-001 -6.0504730e-002
+v -3.4151080e-002 1.7442797e-001 -1.3312550e-002
+v 4.3673180e-002 5.0162230e-002 -5.9843500e-003
+v -5.0342410e-002 1.5546197e-001 -5.1927700e-003
+v 2.5464180e-002 5.4029700e-002 -2.1691010e-002
+v 1.0149790e-002 4.9258540e-002 -2.7750590e-002
+v -2.2043190e-002 5.3612020e-002 -3.0135610e-002
+v -3.2875520e-002 5.1677630e-002 -1.0888650e-002
+v -3.7613820e-002 4.9534770e-002 -1.1626140e-002
+v -4.0750630e-002 4.9285110e-002 -1.1286200e-002
+v -4.6385170e-002 4.7490850e-002 -1.0085980e-002
+v 4.4473170e-002 5.3293010e-002 -6.3327900e-003
+v 3.3205620e-002 5.1020650e-002 -7.2382500e-003
+v 1.5678350e-002 5.1169270e-002 -2.6397810e-002
+v 6.8341700e-003 5.5010170e-002 -3.0561130e-002
+v 2.1424700e-003 5.5502800e-002 -3.1334400e-002
+v 5.9285000e-004 5.2867950e-002 -3.0513830e-002
+v -3.6481400e-003 5.1869000e-002 -3.1457940e-002
+v -9.4245600e-003 5.5399220e-002 -3.3653980e-002
+v -1.9302150e-002 5.8224770e-002 -3.3919700e-002
+v -6.1084270e-002 1.3386190e-001 -7.2248900e-003
+v -4.3309760e-002 5.5656840e-002 -1.1402110e-002
+v -6.1080540e-002 1.6833773e-001 -5.9192060e-002
+v 4.7574690e-002 5.2943630e-002 -5.1300300e-003
+v -3.7403030e-002 1.1150775e-001 -1.8243310e-002
+v 1.9972490e-002 5.4409710e-002 -2.7108230e-002
+v 5.3974800e-003 5.8382570e-002 -3.0903760e-002
+v -1.0603590e-002 5.3602910e-002 -3.3403350e-002
+v -3.4998290e-002 5.2331560e-002 -1.0347380e-002
+v -4.6471230e-002 5.1304340e-002 -9.8299800e-003
+v -6.7945360e-002 1.1493603e-001 -9.5107300e-003
+v -7.1048210e-002 1.5161088e-001 -4.4679270e-002
+v -5.8903800e-003 3.4790620e-002 -2.4224470e-002
+v 1.6842140e-002 5.5555670e-002 -2.8284560e-002
+v 1.0711040e-002 5.4687610e-002 -2.9767520e-002
+v -1.1826800e-003 5.9492420e-002 -3.3360920e-002
+v -5.2325900e-003 5.5688960e-002 -3.2840220e-002
+v -5.1705830e-002 5.2470760e-002 -7.4047200e-003
+v -5.2626360e-002 6.0043760e-002 -8.9566900e-003
+v -7.2598590e-002 9.7762720e-002 -1.4434510e-002
+v 4.4331260e-002 5.5818010e-002 -6.0362700e-003
+v 3.8463400e-002 5.4934820e-002 -6.1822500e-003
+v 3.8838620e-002 5.7808260e-002 -5.2584800e-003
+v -9.2015400e-003 5.9510130e-002 -3.4437110e-002
+v -3.5262560e-002 5.5284900e-002 -1.0545060e-002
+v -3.8336450e-002 5.4503540e-002 -1.0905320e-002
+v -1.7727540e-002 3.6289540e-002 5.2222250e-002
+v 5.0006490e-002 5.8095800e-002 -4.6211800e-003
+v 4.6133970e-002 5.9278810e-002 -4.7769600e-003
+v 1.5110300e-002 5.9819840e-002 -2.8645750e-002
+v 1.0312380e-002 5.7586530e-002 -2.9995250e-002
+v -6.1353400e-003 6.0256790e-002 -3.4695830e-002
+v -1.2318220e-002 5.9396390e-002 -3.5268510e-002
+v -1.4466910e-002 6.3136020e-002 -3.6865870e-002
+v -4.6650260e-002 5.9840950e-002 -1.2135840e-002
+v -5.6572080e-002 1.2480275e-001 -7.1885700e-003
+v -7.9237500e-002 1.2055419e-001 -5.6744800e-003
+v -7.9334790e-002 1.2560650e-001 -6.1175900e-003
+v 2.2340000e-002 5.8492230e-002 -2.6014120e-002
+v 7.6270400e-003 6.2098330e-002 -3.1135840e-002
+v 3.3101700e-003 6.0456840e-002 -3.2481070e-002
+v -1.6811880e-002 6.1275230e-002 -3.5929330e-002
+v -3.2491910e-002 5.7196350e-002 -1.2104730e-002
+v -3.4108240e-002 6.1466560e-002 -1.3053130e-002
+v -3.3896980e-002 5.7025330e-002 -1.1047570e-002
+v -3.8623580e-002 5.8303290e-002 -1.1505750e-002
+v -4.5008400e-002 6.2723940e-002 -1.3390450e-002
+v -5.6896010e-002 1.3398739e-001 -5.6270700e-003
+v -4.4853890e-002 1.5746031e-001 -8.6731600e-003
+v -7.8609550e-002 6.9656870e-002 1.1810740e-002
+v -2.3730020e-002 1.0186156e-001 -2.3836400e-002
+v -2.8122930e-002 9.9322390e-002 -2.3580130e-002
+v -5.0076720e-002 1.4997652e-001 -3.6419700e-003
+v -3.3048420e-002 9.5958590e-002 -2.3426460e-002
+v 1.9520390e-002 6.2064770e-002 -2.7292470e-002
+v -3.8864710e-002 1.0333987e-001 -2.0641400e-002
+v -4.8952940e-002 5.6281090e-002 -1.0220880e-002
+v -5.3993040e-002 1.4498656e-001 -1.1093400e-003
+v -4.5530560e-002 9.8510850e-002 -2.1729510e-002
+v -5.0910960e-002 1.0074570e-001 -2.1619430e-002
+v 2.3245830e-002 6.2792530e-002 -2.5047990e-002
+v 9.7412800e-003 6.3181400e-002 -3.1141370e-002
+v -8.6614000e-004 6.4559630e-002 -3.4490930e-002
+v -8.5264000e-003 6.4001730e-002 -3.5850480e-002
+v -4.8451500e-002 6.4794120e-002 -1.3029910e-002
+v -5.2325160e-002 1.0614813e-001 -1.9271240e-002
+v -5.5265350e-002 1.0216682e-001 -1.9897100e-002
+v -5.9042010e-002 9.9032210e-002 -1.9222950e-002
+v -5.7846760e-002 1.0433496e-001 -1.8525740e-002
+v -2.7113460e-002 1.7332156e-001 -1.8538890e-002
+v 2.2832000e-002 6.7082570e-002 -2.6297510e-002
+v 1.4519060e-002 6.4595540e-002 -2.9855690e-002
+v 1.1471330e-002 6.7581440e-002 -3.0901170e-002
+v -1.7739360e-002 6.6260830e-002 -3.7657310e-002
+v -6.5059750e-002 1.3452104e-001 -8.0899900e-003
+v -7.5829320e-002 1.4244605e-001 -5.8090000e-003
+v -4.1362350e-002 6.1637330e-002 -1.2813770e-002
+v -5.6147890e-002 6.1921550e-002 -5.7541100e-003
+v -6.2126110e-002 6.2845360e-002 -4.5202600e-003
+v -3.7292480e-002 1.6449057e-001 -1.3627050e-002
+v -1.9818920e-002 1.6509494e-001 -1.7608980e-002
+v 6.2881100e-003 6.5416350e-002 -3.2563040e-002
+v -5.9250500e-003 6.9515630e-002 -3.5933480e-002
+v -1.0538630e-002 6.7999180e-002 -3.6517060e-002
+v -3.5385700e-002 6.6817430e-002 -1.5434860e-002
+v -5.3994500e-002 6.4638700e-002 -9.3254900e-003
+v -6.3852310e-002 6.5572310e-002 -6.9393300e-003
+v -6.3920880e-002 1.2774242e-001 -8.5494600e-003
+v -2.6940700e-002 3.6184050e-002 5.3351850e-002
+v 1.9618650e-002 6.7007390e-002 -2.8356120e-002
+v 1.2275180e-002 6.9933940e-002 -3.1553160e-002
+v 5.4265100e-003 6.8247960e-002 -3.2730520e-002
+v -4.4084200e-003 6.6619200e-002 -3.4870250e-002
+v -2.1911350e-002 6.7144790e-002 -3.6535750e-002
+v -4.5643150e-002 1.5466949e-001 -7.2969400e-003
+v -5.1673460e-002 6.6850660e-002 -1.2120350e-002
+v -5.8105180e-002 6.6465950e-002 -1.0044340e-002
+v -5.6992260e-002 1.4311862e-001 -2.2403000e-003
+v -8.0651110e-002 1.3119854e-001 -4.4397800e-003
+v -5.6544310e-002 1.2850938e-001 -6.2014700e-003
+v 1.7758080e-002 7.0138540e-002 -2.9404680e-002
+v 6.4980500e-003 7.0791870e-002 -3.3525310e-002
+v 7.5831000e-004 7.0434460e-002 -3.4462560e-002
+v -1.3235950e-002 6.9292820e-002 -3.7917490e-002
+v -6.7390780e-002 1.1889688e-001 -8.7301400e-003
+v -3.8119520e-002 6.4162310e-002 -1.3829140e-002
+v 1.8527400e-003 1.1303356e-001 -1.9794270e-002
+v -7.5950810e-002 6.8170610e-002 1.8117970e-002
+v -1.0001990e-002 7.2671480e-002 -3.7661370e-002
+v -1.7976070e-002 7.0613770e-002 -3.8443880e-002
+v -2.3035990e-002 7.2778460e-002 -3.8072640e-002
+v -2.6120100e-002 7.1177480e-002 -3.5451530e-002
+v -6.8535420e-002 1.3929375e-001 -7.8046600e-003
+v -3.5263040e-002 7.1067650e-002 -1.8011860e-002
+v -4.1558180e-002 6.9774010e-002 -1.6774100e-002
+v -5.2831730e-002 7.0298920e-002 -1.4864960e-002
+v -6.6978850e-002 6.7638980e-002 -6.8094400e-003
+v -1.0244470e-002 1.7895826e-001 -2.9538870e-002
+v -7.5272650e-002 1.2680098e-001 -8.0241700e-003
+v -8.7359900e-002 1.1248315e-001 4.2049490e-002
+v 8.7503000e-003 7.4301560e-002 -3.3398210e-002
+v -6.4249520e-002 1.6045024e-001 -5.7041470e-002
+v -4.4354010e-002 7.3372220e-002 -1.7874430e-002
+v -4.5762580e-002 6.9445320e-002 -1.5928780e-002
+v -4.7957440e-002 7.2542990e-002 -1.6106990e-002
+v -5.7822630e-002 6.9538010e-002 -1.4416470e-002
+v -7.2071600e-002 7.1538150e-002 -7.4714400e-003
+v 2.5472930e-002 7.4094500e-002 -2.4938540e-002
+v 1.5719730e-002 7.3756350e-002 -2.9747770e-002
+v 4.8214000e-003 7.3763980e-002 -3.4552450e-002
+v -2.2528600e-003 7.3921320e-002 -3.5887190e-002
+v -7.3834900e-003 7.4799620e-002 -3.7223830e-002
+v -2.0225340e-002 7.7095190e-002 -3.9044290e-002
+v -3.4016180e-002 7.2101270e-002 -2.0823150e-002
+v -3.8493370e-002 7.2839870e-002 -1.7502230e-002
+v -6.4392550e-002 7.3116330e-002 -1.5335340e-002
+v -6.4480660e-002 7.0187350e-002 -1.2261750e-002
+v -2.3854330e-002 1.6164528e-001 -1.4504190e-002
+v 2.2104450e-002 7.2692600e-002 -2.6900140e-002
+v 1.5532370e-002 7.6586960e-002 -2.9606940e-002
+v 1.1574050e-002 7.4860570e-002 -3.1383860e-002
+v -1.4731560e-002 7.7640750e-002 -3.8490670e-002
+v -1.6018820e-002 7.4288800e-002 -3.8864420e-002
+v -5.1103620e-002 7.3071950e-002 -1.6243060e-002
+v -5.7989540e-002 7.4017880e-002 -1.7522320e-002
+v -6.9608380e-002 7.2322890e-002 -1.0934430e-002
+v -7.5996110e-002 1.1714132e-001 -6.5577200e-003
+v -3.7987660e-002 1.0751453e-001 -1.9975760e-002
+v 1.0696210e-002 7.9889200e-002 -3.2009580e-002
+v -5.3433400e-003 7.8264580e-002 -3.7476940e-002
+v -2.6081990e-002 7.6191290e-002 -3.6780200e-002
+v -3.9161040e-002 1.5718885e-001 -1.0580510e-002
+v -6.5609880e-002 7.5860010e-002 -1.6750060e-002
+v -7.0177600e-002 7.5663330e-002 -1.3839210e-002
+v -7.4291360e-002 7.4808360e-002 -9.3537900e-003
+v -6.3428890e-002 1.7185387e-001 -6.1412170e-002
+v 3.0684890e-002 7.5726870e-002 -2.0778090e-002
+v 1.9305010e-002 7.9017870e-002 -2.7743990e-002
+v -8.5992100e-003 7.9338730e-002 -3.7905180e-002
+v -2.3200110e-002 7.6568500e-002 -3.8386500e-002
+v -3.8117820e-002 7.6390120e-002 -1.8644360e-002
+v -4.4231130e-002 7.7664130e-002 -1.9026580e-002
+v -5.1025500e-002 7.5705070e-002 -1.8186900e-002
+v -7.0595130e-002 1.2994832e-001 -8.7629200e-003
+v 2.8147660e-002 7.8785370e-002 -2.2432450e-002
+v 7.6016000e-003 7.9435920e-002 -3.3714560e-002
+v 4.9502400e-003 7.8027250e-002 -3.4409750e-002
+v -1.5858350e-002 8.1165550e-002 -3.9185590e-002
+v -1.8502080e-002 8.3343870e-002 -3.9010720e-002
+v -7.9739350e-002 1.3606854e-001 -4.1482100e-003
+v -3.0980180e-002 1.6634656e-001 -1.6241160e-002
+v -3.5749800e-002 7.7248350e-002 -1.9374020e-002
+v -4.8944740e-002 7.9086360e-002 -1.9575700e-002
+v -5.5065860e-002 7.8089190e-002 -1.9755480e-002
+v 2.3706000e-002 8.0240410e-002 -2.5450120e-002
+v 1.2254110e-002 8.3456700e-002 -3.0771580e-002
+v 1.8549900e-003 8.4692790e-002 -3.4838500e-002
+v -2.0857000e-004 7.8941410e-002 -3.5782080e-002
+v -4.2710000e-004 8.2947370e-002 -3.6380660e-002
+v -4.4101600e-003 8.2794510e-002 -3.7467250e-002
+v -3.3202320e-002 1.0578320e-001 -2.0647590e-002
+v -3.9206970e-002 8.1536380e-002 -2.0571000e-002
+v -6.0355410e-002 7.9766610e-002 -1.9375540e-002
+v -4.1771830e-002 1.0396706e-001 -2.0832940e-002
+v -1.1204010e-002 8.2713320e-002 -3.8489610e-002
+v -2.3181500e-002 8.1686990e-002 -3.8329160e-002
+v -2.7233190e-002 8.0570950e-002 -3.6620670e-002
+v -3.5470180e-002 8.0196070e-002 -2.2325910e-002
+v -4.4864210e-002 8.1997900e-002 -2.0473520e-002
+v -5.0647890e-002 8.2309430e-002 -2.1365890e-002
+v -5.5522610e-002 8.1927600e-002 -2.1353790e-002
+v -8.8089610e-002 1.1135484e-001 1.8516150e-002
+v -7.2036080e-002 1.1107918e-001 4.5361400e-002
+v -3.3359780e-002 1.6986395e-001 -1.5448990e-002
+v -6.6839030e-002 6.2170510e-002 2.1576840e-002
+v 3.0730560e-002 8.1968990e-002 -2.0040460e-002
+v 1.6224320e-002 8.6480380e-002 -2.8952010e-002
+v -6.9855630e-002 1.0027892e-001 -1.4847830e-002
+v -6.3836170e-002 8.1704600e-002 -1.8908860e-002
+v -6.7914820e-002 8.0136290e-002 -1.7128200e-002
+v -4.5752080e-002 1.6340754e-001 -8.1780500e-003
+v 1.1727540e-002 8.8010780e-002 -3.0860110e-002
+v 7.3334800e-003 8.5270000e-002 -3.2829380e-002
+v -3.4356500e-003 8.7017890e-002 -3.6461000e-002
+v -2.6964110e-002 8.4512810e-002 -3.6361740e-002
+v -3.6553370e-002 8.5316190e-002 -2.2576200e-002
+v -3.8791090e-002 8.5232710e-002 -2.1917600e-002
+v -5.7676940e-002 8.6258340e-002 -2.1098320e-002
+v -6.2581810e-002 8.6394530e-002 -1.9169290e-002
+v -7.1395340e-002 1.2468846e-001 -8.5944200e-003
+v 1.4801570e-002 9.9040900e-002 -2.2842920e-002
+v -2.1162860e-002 1.7491852e-001 -2.1977110e-002
+v -1.4824250e-002 8.7288840e-002 -3.8317070e-002
+v -2.3285750e-002 8.9468030e-002 -3.6027250e-002
+v -5.1595650e-002 8.4422070e-002 -2.1600960e-002
+v -6.9481040e-002 8.5656460e-002 -1.7198420e-002
+v -7.0917210e-002 1.0754846e-001 -1.1496630e-002
+v 3.0145320e-002 8.6284000e-002 -2.0408140e-002
+v -5.5578110e-002 1.1567692e-001 -1.4645990e-002
+v -8.0981100e-003 8.9070080e-002 -3.6552200e-002
+v -8.1206310e-002 1.1205088e-001 -8.8299000e-004
+v -1.8772170e-002 8.9838040e-002 -3.6991710e-002
+v -2.1100420e-002 8.6587670e-002 -3.7849050e-002
+v -2.5809910e-002 8.8889590e-002 -3.5082250e-002
+v -4.8984800e-002 9.0731760e-002 -2.1817170e-002
+v -3.5874870e-002 3.4776000e-002 -3.0845200e-002
+v -3.3164390e-002 3.3606540e-002 -2.9721880e-002
+v -2.5964020e-002 3.3487000e-002 -2.6321120e-002
+v -1.6717530e-002 3.3611640e-002 -2.4625420e-002
+v -5.3486300e-003 3.3829010e-002 -2.2600430e-002
+v 6.4843500e-003 3.4293000e-002 -2.0854930e-002
+v 1.3950350e-002 3.4880000e-002 -1.8612870e-002
+v -4.2465980e-002 3.4189100e-002 -2.7260650e-002
+v -3.3241100e-002 3.3578760e-002 -2.6719450e-002
+v 6.2813500e-003 3.4165800e-002 -1.8764230e-002
+v -4.4265790e-002 3.3663660e-002 -2.1914420e-002
+v -2.3671460e-002 3.3630970e-002 -2.3217760e-002
+v -1.1558580e-002 3.3895430e-002 -2.1054260e-002
+v -2.0406400e-003 3.4053940e-002 -1.9331070e-002
+v 1.7323900e-003 3.4459660e-002 -1.6607870e-002
+v -2.7316070e-002 3.3910070e-002 -2.1353750e-002
+v -1.3371080e-002 3.4361580e-002 -1.9023720e-002
+v 9.5887300e-003 3.4207220e-002 -1.5424050e-002
+v -1.4981540e-002 3.5878180e-002 -1.7992380e-002
+v -2.3474300e-003 3.5903130e-002 -1.5929740e-002
+v 2.2544300e-003 3.6411540e-002 -1.4783970e-002
+v -3.5199130e-002 3.3835210e-002 -2.0508290e-002
+v -2.6075450e-002 3.5918600e-002 -1.9405170e-002
+v 8.2740600e-003 3.5645200e-002 -1.2648700e-002
+v 1.0473640e-002 3.4742600e-002 -1.1262870e-002
+v 1.4055380e-002 3.4483430e-002 -1.4495730e-002
+v -3.6970520e-002 3.5680360e-002 -1.5007790e-002
+v -2.4719500e-003 3.8408770e-002 -1.4159030e-002
+v -3.9481890e-002 3.3618220e-002 -2.3612470e-002
+v -4.1091510e-002 3.4006000e-002 -1.1997540e-002
+v -3.1589810e-002 3.5592330e-002 -1.9204150e-002
+v -2.0086310e-002 3.8064450e-002 -1.7220790e-002
+v -1.1113250e-002 3.8290290e-002 -1.5646360e-002
+v 4.4522600e-003 3.7705190e-002 -1.2957650e-002
+v 1.5870480e-002 3.4416230e-002 -2.9666500e-003
+v -4.7872000e-002 3.4136300e-002 -1.5418250e-002
+v -4.7521640e-002 3.3622720e-002 -1.2804590e-002
+v -3.3407340e-002 3.7577040e-002 -1.6158190e-002
+v -2.7851470e-002 3.8404330e-002 -1.7210420e-002
+v -8.5065300e-003 3.9028950e-002 -1.3000800e-002
+v 6.4552500e-003 3.8165190e-002 -1.0164860e-002
+v 7.4147100e-003 3.4659190e-002 -3.0116800e-003
+v 1.1966200e-002 3.4335400e-002 -5.9571300e-003
+v 2.0414820e-002 3.5567580e-002 -3.7806900e-003
+v -1.9288780e-002 3.8762570e-002 -1.4202620e-002
+v -1.1390100e-003 3.9176760e-002 -1.0381370e-002
+v 3.8149200e-003 3.9024470e-002 -8.0827300e-003
+v 7.5208200e-003 3.6733400e-002 -6.7614300e-003
+v 1.9968120e-002 3.4843990e-002 -1.8984900e-003
+v -4.5058400e-002 3.3600490e-002 -1.2527510e-002
+v -3.0754850e-002 3.8639810e-002 -1.4050770e-002
+v -5.1499810e-002 3.3729110e-002 -1.2082510e-002
+v -2.3756860e-002 3.8585750e-002 -1.1093270e-002
+v 3.9734700e-003 3.8208550e-002 -3.7963500e-003
+v 9.5485400e-003 3.4232620e-002 1.7162000e-003
+v 2.9086550e-002 3.5799990e-002 3.5630900e-003
+v -5.5965200e-002 3.3529910e-002 -9.1246200e-003
+v -1.9523510e-002 3.8505210e-002 -4.5434500e-003
+v 1.6363470e-002 3.4394790e-002 2.2948600e-003
+v 2.1324740e-002 3.4624040e-002 5.6444000e-003
+v -3.9670300e-002 3.6174000e-002 -7.3397700e-003
+v -1.4251730e-002 3.8648030e-002 -4.3030400e-003
+v 2.3262300e-003 3.5348200e-002 2.3246000e-003
+v 1.4014300e-002 3.5703800e-002 3.8878900e-003
+v 1.5322800e-002 3.6239700e-002 3.6628500e-003
+v 2.3753130e-002 3.4670710e-002 3.9885300e-003
+v 3.2369180e-002 3.5816010e-002 7.0246300e-003
+v -6.3715900e-002 3.3776930e-002 -8.0065600e-003
+v -6.4266880e-002 3.3562500e-002 -5.1253200e-003
+v -3.8066600e-002 3.8518600e-002 -7.3079600e-003
+v -9.4308800e-003 3.8887690e-002 -7.4848700e-003
+v 3.9677800e-003 3.4200210e-002 4.9754500e-003
+v 9.4292600e-003 3.6030400e-002 4.5275100e-003
+v 2.9859020e-002 3.4980130e-002 9.8349300e-003
+v -5.2730060e-002 3.3497900e-002 -1.8117500e-003
+v -4.1271000e-002 3.3855400e-002 -1.8800800e-003
+v -3.1105000e-003 3.8946190e-002 -2.7793900e-003
+v 6.2194100e-003 3.5134100e-002 6.5492800e-003
+v 2.0897900e-002 3.5937100e-002 8.7849000e-003
+v 3.5606010e-002 3.6526640e-002 9.8155300e-003
+v -6.7078340e-002 3.3840100e-002 -6.1688300e-003
+v -8.1140000e-004 3.7424170e-002 4.7721500e-003
+v 3.1492300e-003 3.4125310e-002 1.1762220e-002
+v 4.9172000e-003 3.3997100e-002 9.1666100e-003
+v 2.5130800e-002 3.4546910e-002 1.1012580e-002
+v 2.8248620e-002 3.5046370e-002 1.6016700e-002
+v -6.7032970e-002 6.5145960e-002 2.7292860e-002
+v -4.6380170e-002 3.3605230e-002 -8.9435000e-004
+v -3.3163400e-002 3.8195400e-002 -5.2520000e-004
+v -3.2074200e-002 3.8323400e-002 -4.2109000e-004
+v -2.1692690e-002 3.8266010e-002 4.5100800e-003
+v 2.3930750e-002 3.4816710e-002 1.7739160e-002
+v 4.2719120e-002 3.9977070e-002 8.9321600e-003
+v -5.8604080e-002 3.3462230e-002 -2.1667000e-004
+v -3.7314400e-002 3.3633000e-002 4.5724700e-003
+v -1.0423990e-002 3.8488570e-002 6.2292700e-003
+v -1.3896900e-003 3.8651360e-002 2.3966500e-003
+v -3.0845000e-004 3.5462480e-002 8.2607200e-003
+v -1.4089000e-003 3.6193080e-002 1.2944550e-002
+v 2.2252900e-002 3.6583300e-002 1.3979700e-002
+v -7.0961830e-002 3.4345730e-002 -7.8374000e-004
+v -6.9066180e-002 3.3717630e-002 -1.9761000e-004
+v -6.4825640e-002 3.3505860e-002 2.8222500e-003
+v -4.7059660e-002 3.3501860e-002 3.5646400e-003
+v -3.6953800e-003 3.8172780e-002 1.3046800e-002
+v 3.3475850e-002 3.6447340e-002 1.6266960e-002
+v 3.7249610e-002 3.7509920e-002 1.4815820e-002
+v -4.5675940e-002 3.3703640e-002 6.4300300e-003
+v -3.8639270e-002 3.3937310e-002 8.5506500e-003
+v -9.5064100e-003 3.8352640e-002 1.5570660e-002
+v 2.1499800e-002 3.5807100e-002 1.8169400e-002
+v 4.4876460e-002 4.1230990e-002 1.6008250e-002
+v -7.2474010e-002 3.6255930e-002 1.5532600e-003
+v -7.1498130e-002 3.4452970e-002 4.2026500e-003
+v -2.7790900e-002 3.8062900e-002 7.9376100e-003
+v -1.6556410e-002 3.8286470e-002 1.0215790e-002
+v 8.1043500e-003 3.4842900e-002 1.8134600e-002
+v 2.3589460e-002 3.5890600e-002 2.5337690e-002
+v 4.1261350e-002 4.0585070e-002 2.0751930e-002
+v -5.1350870e-002 3.3645700e-002 8.0329400e-003
+v -4.7104300e-002 3.5549500e-002 8.0803900e-003
+v -1.4103500e-003 3.6999940e-002 1.6982030e-002
+v 9.1714000e-004 3.4803380e-002 1.5634690e-002
+v 2.8887900e-003 3.4636250e-002 1.8849770e-002
+v 1.3279200e-002 3.4379500e-002 2.1423700e-002
+v 1.4322700e-002 3.4425500e-002 2.1593200e-002
+v 1.7490100e-002 3.4646300e-002 2.2040900e-002
+v 2.9868460e-002 3.6248820e-002 1.9872200e-002
+v -3.9222000e-002 3.6326200e-002 1.0789900e-002
+v -3.0307100e-002 3.3995400e-002 1.4706400e-002
+v 2.0081230e-002 3.5172700e-002 2.8018770e-002
+v 2.4989010e-002 3.8104580e-002 2.9429570e-002
+v 3.3584130e-002 3.8303930e-002 2.2928670e-002
+v 4.9015720e-002 4.4573630e-002 2.0659450e-002
+v -5.8225970e-002 6.6607310e-002 3.5050280e-002
+v -6.7330830e-002 3.3846440e-002 8.7266300e-003
+v -3.4692330e-002 3.3828710e-002 1.2438580e-002
+v -2.9803200e-002 3.4287000e-002 1.6353100e-002
+v 1.7023800e-003 3.6310890e-002 2.1179600e-002
+v 4.5137020e-002 4.4625440e-002 2.5516510e-002
+v -6.8876490e-002 1.1022176e-001 3.9004630e-002
+v -5.7680560e-002 3.3622690e-002 1.4040310e-002
+v -5.3210500e-002 3.3585300e-002 1.3987000e-002
+v -3.5711600e-002 3.5891600e-002 1.5502900e-002
+v -2.8861500e-002 3.5396700e-002 1.7350000e-002
+v -2.6580500e-002 3.7742600e-002 1.5705300e-002
+v -1.0974400e-003 3.8147840e-002 2.0427010e-002
+v 3.5047710e-002 4.0973940e-002 2.6970390e-002
+v -6.9685460e-002 3.4478780e-002 9.7984300e-003
+v -5.4019000e-002 3.3309900e-002 1.5848000e-002
+v 4.4816800e-003 3.7117830e-002 2.4755300e-002
+v 6.6605500e-003 3.5204730e-002 2.4315930e-002
+v 8.3833000e-003 3.4748700e-002 2.4057310e-002
+v 3.8883100e-002 4.1032980e-002 2.4976570e-002
+v -2.6441900e-003 3.8727070e-002 2.5131260e-002
+v 3.2222300e-003 3.8708440e-002 2.5898750e-002
+v 9.0016500e-003 3.6890930e-002 2.8482190e-002
+v 1.3196980e-002 3.4835790e-002 3.1630980e-002
+v 2.2291600e-002 3.7053310e-002 3.3101020e-002
+v 2.8948390e-002 3.9160020e-002 2.7234810e-002
+v -8.7773470e-002 1.1181412e-001 3.7144310e-002
+v -1.7870490e-002 3.8203890e-002 2.0243220e-002
+v 1.0087420e-002 3.7047690e-002 3.0822500e-002
+v 4.2296550e-002 4.5435770e-002 2.9040920e-002
+v -8.4341340e-002 1.1388013e-001 4.6513480e-002
+v -7.3795710e-002 1.0895629e-001 3.9217250e-002
+v -5.1243340e-002 6.4239200e-002 3.4258040e-002
+v -6.1777390e-002 3.4017860e-002 1.6900580e-002
+v -3.6665100e-002 3.5304200e-002 2.3032000e-002
+v -1.4930180e-002 3.8643510e-002 2.9378330e-002
+v -8.0894520e-002 1.0967225e-001 3.7910230e-002
+v -8.9822620e-002 1.1387199e-001 3.2845310e-002
+v -6.9655510e-002 6.8728370e-002 3.1127880e-002
+v -7.8449800e-002 1.0988832e-001 4.2517920e-002
+v -7.5824140e-002 1.0794900e-001 3.7128750e-002
+v -5.5740630e-002 3.4128050e-002 2.6674360e-002
+v -3.8279600e-002 3.5429000e-002 2.4380600e-002
+v -3.5283340e-002 3.4179780e-002 2.2744860e-002
+v -2.5798070e-002 3.7865000e-002 1.9981460e-002
+v 6.9064300e-003 3.9004270e-002 2.9548510e-002
+v 1.5448990e-002 3.4852440e-002 3.6984890e-002
+v 1.9128230e-002 3.5640640e-002 3.6642280e-002
+v -6.3664970e-002 6.6047840e-002 3.1828080e-002
+v 3.9604800e-002 4.4939530e-002 2.9992360e-002
+v -8.0294310e-002 7.1702430e-002 1.5995300e-002
+v -5.4185430e-002 6.7322700e-002 3.6935610e-002
+v -7.3110210e-002 1.4847168e-001 -2.8748470e-002
+v -5.8999980e-002 7.3751550e-002 4.1197080e-002
+v -5.9520730e-002 6.1040260e-002 -2.3753800e-003
+v -6.2791800e-002 3.4596760e-002 2.3505640e-002
+v -4.1895500e-002 3.3668300e-002 2.6940000e-002
+v 8.9808200e-003 3.7639400e-002 3.3900800e-002
+v 8.5287800e-003 3.4888000e-002 3.6265100e-002
+v -8.9803890e-002 1.1498106e-001 4.2771650e-002
+v -6.5545420e-002 7.4430370e-002 3.9168070e-002
+v -6.4644190e-002 6.1723230e-002 2.2552000e-004
+v 5.2496900e-003 3.9507100e-002 3.3271200e-002
+v 2.0250320e-002 3.7033170e-002 3.9327190e-002
+v -6.7006400e-002 6.3292870e-002 -1.7493900e-003
+v -6.4479770e-002 6.0651470e-002 4.2343200e-003
+v -5.7219630e-002 5.7000470e-002 4.9175800e-003
+v -7.4362810e-002 7.2437050e-002 3.1430040e-002
+v -6.2019000e-002 3.4343180e-002 3.1883280e-002
+v -4.6870820e-002 3.4444130e-002 3.0513130e-002
+v -2.0814280e-002 3.8400960e-002 2.7868430e-002
+v 1.6439350e-002 3.5635110e-002 4.1281040e-002
+v -6.9087160e-002 1.1205014e-001 4.5320060e-002
+v -7.1811570e-002 1.4861318e-001 -3.4639490e-002
+v -6.9538770e-002 6.3074750e-002 3.5758200e-003
+v -8.4863890e-002 7.8392100e-002 1.6462010e-002
+v -9.1188780e-002 1.1588893e-001 2.4705540e-002
+v -8.8827760e-002 1.1359169e-001 2.3873640e-002
+v -7.1302830e-002 1.1325363e-001 4.9444530e-002
+v -5.4876950e-002 7.0282330e-002 3.8828200e-002
+v -7.7208880e-002 1.0715887e-001 3.4738290e-002
+v -6.1241780e-002 5.9007440e-002 8.0916600e-003
+v -6.5885650e-002 3.5025080e-002 2.9416520e-002
+v -5.7889430e-002 3.4419570e-002 3.6265760e-002
+v -5.1847710e-002 3.4470270e-002 3.4635180e-002
+v -3.4834600e-002 3.4721400e-002 3.4578200e-002
+v -3.0984700e-002 3.8191900e-002 3.2390100e-002
+v -4.9613100e-003 3.9364900e-002 3.6702200e-002
+v 1.2224170e-002 3.5177480e-002 4.2620580e-002
+v -7.4898220e-002 1.1458863e-001 5.0776480e-002
+v -8.0469100e-002 1.1357963e-001 4.6643440e-002
+v -7.4107560e-002 6.9586030e-002 2.7264400e-002
+v -7.9002620e-002 7.6339320e-002 2.9248090e-002
+v -6.5297080e-002 3.4778970e-002 3.3744340e-002
+v -3.3656400e-002 3.4344100e-002 3.6914100e-002
+v 4.9318500e-003 3.4814800e-002 4.3462110e-002
+v 1.1347440e-002 3.6213020e-002 4.4652280e-002
+v -6.0569260e-002 7.1154540e-002 3.8653760e-002
+v -8.8979470e-002 1.1450869e-001 2.8446030e-002
+v -6.8543520e-002 6.1090480e-002 1.0557760e-002
+v -8.2710960e-002 1.1648975e-001 4.8518530e-002
+v -4.1913210e-002 3.4467720e-002 3.3200040e-002
+v -1.1289800e-002 3.9529200e-002 3.8844100e-002
+v -2.8261900e-003 3.4885340e-002 4.5611410e-002
+v -6.4561210e-002 5.9484140e-002 1.3061680e-002
+v -5.8581440e-002 5.7801460e-002 1.3429540e-002
+v -2.3320000e-002 3.9169500e-002 3.8473300e-002
+v -1.8159900e-002 3.9322300e-002 3.9402900e-002
+v -1.6471400e-002 3.4812800e-002 4.3684700e-002
+v 3.2906600e-003 3.5833470e-002 4.6024610e-002
+v -8.5229630e-002 1.1200712e-001 3.0416940e-002
+v -8.5644730e-002 1.1131719e-001 3.4234780e-002
+v -7.4530360e-002 6.6680690e-002 4.6953300e-003
+v -7.1112970e-002 6.2751470e-002 8.7995500e-003
+v -6.1149380e-002 5.8834410e-002 1.6539440e-002
+v -4.6912270e-002 3.4627180e-002 3.9739710e-002
+v -4.0760350e-002 3.4668230e-002 4.0492530e-002
+v -2.6323100e-002 3.4658000e-002 4.3473500e-002
+v -3.1836600e-003 3.6229910e-002 4.7873100e-002
+v -7.9940490e-002 1.0916678e-001 3.4119800e-002
+v -5.9712170e-002 6.3165280e-002 2.8789180e-002
+v -5.1176600e-002 6.8061880e-002 3.7398330e-002
+v -5.0126580e-002 7.0933150e-002 3.9481010e-002
+v -7.2790130e-002 6.4399880e-002 1.5205950e-002
+v -6.8511230e-002 6.1214650e-002 1.5354080e-002
+v -3.9343210e-002 3.5440180e-002 4.2492560e-002
+v -8.1305900e-003 3.5008350e-002 4.7502400e-002
+v -6.6080670e-002 7.0202740e-002 3.5552860e-002
+v -6.8602600e-002 1.4992277e-001 -4.0051350e-002
+v -7.1722100e-002 6.7023040e-002 2.4959750e-002
+v -7.5115010e-002 6.6557040e-002 1.0244090e-002
+v -6.5146650e-002 3.5945650e-002 3.9775080e-002
+v -3.6898600e-002 3.5924640e-002 4.4794170e-002
+v -9.4780400e-003 3.5977600e-002 4.9434210e-002
+v -8.5175960e-002 1.1706809e-001 4.8139420e-002
+v -6.3366400e-002 6.2790260e-002 2.5647610e-002
+v -6.6633330e-002 6.1001700e-002 1.8101240e-002
+v -5.8167590e-002 5.9985190e-002 2.2606060e-002
+v -6.4212210e-002 3.4992560e-002 3.9401920e-002
+v -5.3425790e-002 3.4560020e-002 4.2782420e-002
+v -1.8031490e-002 3.4859970e-002 4.9264760e-002
+v -1.1440410e-002 3.7640770e-002 5.0275730e-002
+v -7.5165320e-002 1.1154286e-001 4.6707180e-002
+v -7.7168390e-002 6.9826450e-002 5.0605600e-003
+v -7.2801360e-002 6.4382590e-002 1.2089080e-002
+v -7.8022000e-002 7.0995160e-002 2.1322150e-002
+v -6.1263370e-002 3.4690410e-002 4.1994900e-002
+v -5.4403750e-002 3.5007310e-002 4.4874590e-002
+v -4.5754280e-002 3.5206980e-002 4.3518120e-002
+v -3.3832440e-002 3.5168820e-002 4.6957890e-002
+v -2.8657630e-002 3.5083380e-002 5.0549440e-002
+v -1.5306440e-002 3.5246410e-002 5.0133810e-002
+v -6.5283650e-002 1.5592447e-001 -4.9865930e-002
+v -6.6467860e-002 1.4871539e-001 -3.1579300e-002
+v -6.2095980e-002 1.6388324e-001 -5.8385930e-002
+v -6.3274890e-002 1.5245731e-001 -3.2221730e-002
+v -4.3755720e-002 1.4773408e-001 -2.1433200e-003
+v -6.5696940e-002 1.4561631e-001 -1.8974710e-002
+v -6.6713650e-002 1.5358824e-001 -4.9097100e-002
+v -1.0482810e-002 1.6668287e-001 -2.1746090e-002
+v -6.2744510e-002 1.6397531e-001 -5.9398280e-002
+v -7.0413230e-002 1.4129200e-001 -8.4590800e-003
+v -6.1530380e-002 1.4037628e-001 -6.2734700e-003
+v -1.1452460e-002 1.7220633e-001 -2.6844980e-002
+v -6.3731140e-002 1.6577037e-001 -6.0103610e-002
+v -2.8218820e-002 1.5758144e-001 -1.0999490e-002
+v -1.8471270e-002 1.5967716e-001 -1.1169510e-002
+v -6.6700710e-002 1.5236775e-001 -4.5266390e-002
+v -4.9896410e-002 1.4670859e-001 -1.8614200e-003
+v -3.1449640e-002 1.5460463e-001 -7.6802300e-003
+v -6.7447660e-002 1.5507675e-001 -5.1594250e-002
+v -1.0906650e-002 1.7649301e-001 -2.9246300e-002
+v -7.2083600e-002 1.4965550e-001 -3.9265860e-002
+v -6.4230830e-002 1.4877806e-001 -2.5899710e-002
+v -6.3056640e-002 1.4341650e-001 -7.4907700e-003
+v -5.3043350e-002 1.4092550e-001 -4.7408000e-004
+v -3.9269410e-002 1.5205232e-001 -6.6203800e-003
+v -6.4796930e-002 1.5210615e-001 -3.6185520e-002
+v -6.4400320e-002 1.5834400e-001 -5.4256370e-002
+v -6.6178120e-002 1.4218350e-001 -9.3766300e-003
+v -6.7751430e-002 1.4605207e-001 -2.3333300e-002
+v -6.4731580e-002 1.5410067e-001 -4.0464820e-002
+v -2.4265590e-002 1.5687690e-001 -7.8509300e-003
+v -1.5723180e-002 1.6312344e-001 -1.6396570e-002
+v -7.0887660e-002 1.4404618e-001 -1.4908480e-002
+v -4.4341830e-002 1.5113809e-001 -5.6859800e-003
+v -6.2896810e-002 1.4694778e-001 -1.3098620e-002
+v -6.3755400e-002 1.4428875e-001 -1.1395730e-002
+v -6.8214560e-002 1.4390932e-001 -1.4984170e-002
+v -5.0271440e-002 1.4336563e-001 1.5153000e-003
+v -2.8535590e-002 1.6208479e-001 -1.4786030e-002
+v -6.5810700e-002 1.4359119e-001 -1.2585380e-002
+v -5.6179200e-002 1.3774406e-001 -4.0674300e-003
+v -6.8866880e-002 1.4723338e-001 -2.8739870e-002
+v -6.0965420e-002 1.7002113e-001 -6.0839390e-002
+v -1.3895490e-002 1.6787168e-001 -2.1897230e-002
+v -6.9413000e-002 1.5121847e-001 -4.4538540e-002
+v -5.5039800e-002 5.7309700e-002 1.6990900e-002
+f 1069 1647 1578
+f 1058 909 939
+f 421 1176 238
+f 1055 1101 1042
+f 238 1059 1126
+f 1254 30 1261
+f 1065 1071 1
+f 1037 1130 1120
+f 1570 2381 1585
+f 2434 2502 2473
+f 1632 1654 1646
+f 1144 1166 669
+f 1202 1440 305
+f 1071 1090 1
+f 1555 1570 1584
+f 1184 1174 404
+f 65 432 12
+f 1032 1085 574
+f 1789 2207 2223
+f 1154 1118 1184
+f 1141 1086 1154
+f 99 1117 342
+f 404 1174 419
+f 489 2000 1998
+f 1118 1174 1184
+f 1196 403 136
+f 1495 717 1490
+f 1804 402 1207
+f 2272 1398 891
+f 1100 1002 804
+f 1596 1595 2381
+f 208 420 1207
+f 402 208 1207
+f 1455 1935 1925
+f 1176 1059 238
+f 1150 1040 348
+f 1957 1537 2051
+f 1124 1189 939
+f 1804 1207 1823
+f 1381 1300 1109
+f 383 384 1182
+f 1085 1086 1141
+f 1040 1046 132
+f 220 1495 1188
+f 420 261 1207
+f 261 420 1065
+f 1055 1133 1101
+f 1054 421 403
+f 182 1109 2
+f 1181 1207 320
+f 545 1570 1561
+f 35 342 432
+f 1024 574 1141
+f 432 342 12
+f 1489 1081 1547
+f 1181 320 1805
+f 1516 1683 1507
+f 357 1117 1047
+f 1561 1570 1555
+f 1090 1196 1206
+f 1047 1203 1051
+f 1165 202 1121
+f 1099 341 301
+f 1174 240 419
+f 922 921 833
+f 1121 1080 385
+f 815 21 1183
+f 35 99 342
+f 1083 398 262
+f 106 94 1317
+f 94 292 1317
+f 292 95 1317
+f 940 1039 1033
+f 1300 1306 433
+f 21 212 471
+f 1120 1131 1037
+f 833 921 688
+f 1117 357 342
+f 106 271 94
+f 386 227 1375
+f 1130 1044 1053
+f 419 240 219
+f 1255 1244 32
+f 1557 1081 1489
+f 2062 2120 2109
+f 2034 2110 430
+f 23 315 1111
+f 291 94 271
+f 291 292 94
+f 50 386 95
+f 964 734 665
+f 1616 1585 1611
+f 445 1084 402
+f 574 1085 1141
+f 1654 341 1653
+f 220 1188 1640
+f 342 69 12
+f 417 261 328
+f 292 50 95
+f 204 227 386
+f 50 204 386
+f 1276 1471 1311
+f 1206 1196 136
+f 1033 1055 1042
+f 1037 1044 1130
+f 1180 320 417
+f 1121 202 1080
+f 325 203 271
+f 291 76 292
+f 292 237 50
+f 2159 1696 1767
+f 583 929 850
+f 1584 1585 1616
+f 1495 1490 1188
+f 1557 1489 1660
+f 1078 1069 1494
+f 1972 1992 1971
+f 183 1226 2000
+f 325 429 203
+f 292 76 237
+f 1152 227 1143
+f 1488 1412 1489
+f 1638 1646 1653
+f 1947 1869 2468
+f 203 306 291
+f 306 76 291
+f 237 248 50
+f 204 1143 227
+f 2395 14 429
+f 1502 881 2500
+f 1 1090 202
+f 1652 1653 1099
+f 2117 1863 2496
+f 50 248 204
+f 160 792 994
+f 884 888 857
+f 544 2117 2496
+f 1090 1206 202
+f 2463 879 2492
+f 429 306 203
+f 498 188 418
+f 865 884 857
+f 994 998 1014
+f 884 897 888
+f 1795 948 1802
+f 208 1035 1071
+f 1065 1 1066
+f 377 435 1377
+f 304 429 14
+f 304 306 429
+f 73 60 74
+f 248 592 204
+f 846 2264 829
+f 897 912 906
+f 1004 991 992
+f 1422 1421 1233
+f 980 10 303
+f 1058 922 909
+f 2436 2449 2418
+f 394 435 377
+f 435 475 446
+f 475 474 446
+f 336 337 361
+f 338 235 372
+f 624 148 129
+f 812 306 596
+f 1726 992 1019
+f 945 1514 1511
+f 1069 1627 1628
+f 1812 1823 1181
+f 1165 1121 169
+f 447 475 435
+f 2487 2458 901
+f 42 59 46
+f 401 7 187
+f 1010 970 797
+f 1513 220 1640
+f 2474 2491 2462
+f 594 307 1014
+f 398 1513 1640
+f 307 594 1026
+f 545 2381 1570
+f 403 421 238
+f 445 402 127
+f 1611 1631 1616
+f 1805 1180 1148
+f 394 447 435
+f 2341 2413 2376
+f 75 74 60
+f 541 47 42
+f 47 59 42
+f 541 42 28
+f 917 931 1103
+f 897 906 883
+f 2484 2068 779
+f 888 883 857
+f 261 1065 328
+f 363 1307 349
+f 377 363 394
+f 444 747 464
+f 323 338 362
+f 92 116 74
+f 592 634 97
+f 982 1027 1004
+f 1020 982 1004
+f 1084 1054 1035
+f 208 402 1084
+f 421 1119 1176
+f 1207 1181 1823
+f 1179 1187 1160
+f 263 296 1343
+f 1298 296 1307
+f 1307 296 349
+f 405 363 349
+f 405 394 363
+f 405 447 394
+f 362 372 384
+f 338 372 362
+f 983 1004 987
+f 122 134 139
+f 415 440 414
+f 75 92 74
+f 226 186 246
+f 796 787 700
+f 1119 1059 1176
+f 122 114 91
+f 624 129 116
+f 641 558 631
+f 1311 1318 1487
+f 100 1162 1170
+f 1653 341 1099
+f 1316 1983 273
+f 263 277 296
+f 296 358 349
+f 436 447 405
+f 109 554 570
+f 504 1385 2501
+f 115 122 91
+f 2068 2460 779
+f 43 777 163
+f 378 405 349
+f 358 378 349
+f 448 447 436
+f 448 476 447
+f 78 77 108
+f 75 60 47
+f 1764 2481 1795
+f 717 714 1512
+f 1490 717 1501
+f 238 1126 168
+f 1878 1866 826
+f 2025 2360 2367
+f 251 278 263
+f 278 277 263
+f 277 318 296
+f 296 318 358
+f 318 350 358
+f 378 436 405
+f 384 372 1182
+f 454 440 415
+f 987 1004 992
+f 493 476 448
+f 323 788 338
+f 403 238 136
+f 1565 1503 1474
+f 297 277 278
+f 297 318 277
+f 358 350 378
+f 378 388 436
+f 476 493 500
+f 73 105 60
+f 323 337 312
+f 953 1573 2358
+f 142 161 119
+f 454 443 440
+f 1862 1871 1405
+f 297 319 318
+f 560 47 541
+f 170 1323 111
+f 357 1047 1050
+f 1119 98 1059
+f 1838 1877 1900
+f 2359 230 251
+f 350 364 378
+f 449 448 436
+f 449 493 448
+f 185 186 226
+f 443 469 479
+f 874 165 2480
+f 463 444 464
+f 64 105 91
+f 1182 440 1129
+f 1958 1651 2502
+f 1238 2034 191
+f 251 279 278
+f 278 279 297
+f 364 388 378
+f 483 493 449
+f 134 148 139
+f 244 268 259
+f 910 942 930
+f 105 115 91
+f 24 30 18
+f 1132 487 1059
+f 1869 1947 2021
+f 2497 2494 2463
+f 2359 2385 230
+f 230 280 251
+f 251 280 279
+f 279 308 297
+f 297 308 319
+f 319 364 318
+f 364 350 318
+f 388 395 436
+f 436 395 449
+f 493 472 500
+f 122 129 134
+f 125 142 124
+f 373 400 393
+f 24 557 30
+f 2264 2278 2251
+f 1261 30 1269
+f 1730 1862 1877
+f 252 280 230
+f 343 364 319
+f 364 343 388
+f 63 64 91
+f 399 393 416
+f 416 444 463
+f 162 189 142
+f 768 373 326
+f 189 661 177
+f 189 199 661
+f 847 887 864
+f 533 747 444
+f 1744 1022 1418
+f 1170 524 729
+f 121 1342 128
+f 1236 1244 26
+f 280 281 279
+f 281 308 279
+f 343 319 308
+f 343 365 388
+f 388 365 395
+f 365 406 395
+f 406 449 395
+f 483 477 493
+f 477 491 472
+f 493 477 472
+f 78 109 77
+f 166 174 196
+f 481 150 814
+f 63 59 64
+f 326 373 393
+f 643 260 43
+f 230 253 252
+f 449 441 483
+f 441 477 483
+f 415 416 463
+f 226 246 245
+f 464 470 454
+f 323 362 337
+f 52 37 1283
+f 253 281 252
+f 281 280 252
+f 309 308 281
+f 330 343 308
+f 366 365 343
+f 441 449 406
+f 464 814 15
+f 883 906 887
+f 337 362 371
+f 479 498 290
+f 247 746 1003
+f 25 37 557
+f 640 930 669
+f 2486 2499 2459
+f 309 330 308
+f 343 330 366
+f 441 437 477
+f 290 498 418
+f 124 119 108
+f 77 124 108
+f 589 125 109
+f 570 589 109
+f 125 162 142
+f 1045 433 1034
+f 1207 261 320
+f 2004 2474 2495
+f 1215 1228 2285
+f 365 396 406
+f 396 422 406
+f 422 437 441
+f 406 422 441
+f 59 47 60
+f 51 78 66
+f 361 371 383
+f 196 215 214
+f 463 454 415
+f 27 41 535
+f 53 1283 37
+f 84 1299 1283
+f 1805 320 1180
+f 254 253 222
+f 254 281 253
+f 309 366 330
+f 396 365 366
+f 456 477 437
+f 484 491 477
+f 2480 2485 2493
+f 418 188 187
+f 53 85 1283
+f 85 84 1283
+f 420 1071 1065
+f 264 281 254
+f 298 309 281
+f 368 366 367
+f 368 396 366
+f 1639 1564 1139
+f 560 48 47
+f 82 471 212
+f 25 38 37
+f 202 1206 1080
+f 264 298 281
+f 298 331 309
+f 309 331 366
+f 331 367 366
+f 396 368 422
+f 422 456 437
+f 491 1192 313
+f 1699 2064 1710
+f 462 443 479
+f 371 362 384
+f 2502 2476 2464
+f 371 384 383
+f 21 732 212
+f 1571 1629 1627
+f 38 39 53
+f 37 38 53
+f 39 85 53
+f 1173 1184 404
+f 1006 2142 1674
+f 201 255 254
+f 255 264 254
+f 368 407 422
+f 450 456 422
+f 450 484 456
+f 456 484 477
+f 314 1192 491
+f 2027 2501 2489
+f 2475 2471 2488
+f 551 492 732
+f 464 481 814
+f 1081 1494 1547
+f 201 231 255
+f 407 450 422
+f 484 494 491
+f 494 327 491
+f 327 314 491
+f 876 797 995
+f 847 856 829
+f 125 143 162
+f 134 129 148
+f 1564 1571 1627
+f 417 320 261
+f 328 1065 1066
+f 170 156 201
+f 156 231 201
+f 231 282 255
+f 282 264 255
+f 450 485 484
+f 484 485 494
+f 2463 2486 2479
+f 159 185 167
+f 492 68 212
+f 732 492 212
+f 68 82 212
+f 1311 1471 1296
+f 101 156 111
+f 332 264 282
+f 332 298 264
+f 332 331 298
+f 331 332 367
+f 407 423 450
+f 450 423 485
+f 804 1002 1443
+f 2484 779 946
+f 689 443 462
+f 440 689 1129
+f 166 167 174
+f 38 31 39
+f 112 145 101
+f 101 145 156
+f 156 256 231
+f 332 423 368
+f 367 332 368
+f 368 423 407
+f 946 779 920
+f 1432 1261 1449
+f 461 478 453
+f 464 15 470
+f 31 54 39
+f 39 54 85
+f 86 101 85
+f 145 210 156
+f 282 283 332
+f 283 369 332
+f 369 423 332
+f 423 408 485
+f 854 876 965
+f 78 108 66
+f 440 443 689
+f 374 2465 961
+f 929 519 979
+f 54 86 85
+f 156 241 256
+f 256 282 231
+f 256 283 282
+f 389 423 369
+f 389 408 423
+f 408 457 485
+f 457 49 485
+f 485 49 494
+f 494 135 327
+f 175 83 314
+f 1167 1140 1483
+f 196 174 215
+f 697 16 68
+f 1038 82 16
+f 140 117 141
+f 1654 1653 1646
+f 1234 54 31
+f 86 112 101
+f 210 241 156
+f 923 917 911
+f 697 34 16
+f 145 193 210
+f 256 265 283
+f 265 310 283
+f 283 310 369
+f 310 344 369
+f 344 370 369
+f 370 389 369
+f 409 408 389
+f 409 466 408
+f 466 457 408
+f 466 49 457
+f 49 135 494
+f 174 225 215
+f 1014 766 602
+f 826 2220 2215
+f 1078 1494 1081
+f 1273 70 86
+f 120 112 86
+f 146 145 112
+f 146 193 145
+f 265 256 241
+f 223 265 241
+f 486 49 466
+f 175 327 135
+f 105 122 115
+f 480 15 681
+f 225 234 215
+f 731 34 697
+f 86 54 1273
+f 70 120 86
+f 193 241 210
+f 299 310 265
+f 310 333 344
+f 344 351 370
+f 424 466 409
+f 135 49 175
+f 214 215 234
+f 48 75 47
+f 34 9 1038
+f 16 34 1038
+f 203 291 271
+f 9 558 754
+f 1195 397 1120
+f 120 146 112
+f 146 194 193
+f 266 265 223
+f 266 299 265
+f 299 333 310
+f 333 351 344
+f 382 383 392
+f 399 416 415
+f 266 333 299
+f 351 352 370
+f 424 486 466
+f 487 175 49
+f 7 117 187
+f 1182 414 440
+f 41 42 46
+f 290 289 497
+f 2502 2464 2473
+f 372 399 414
+f 1570 1585 1584
+f 1066 1 1165
+f 1 202 1165
+f 120 70 102
+f 157 146 120
+f 194 223 193
+f 223 241 193
+f 352 379 370
+f 370 379 389
+f 410 409 389
+f 2478 1409 1958
+f 806 945 1002
+f 157 194 146
+f 267 266 223
+f 267 333 266
+f 379 410 389
+f 410 438 409
+f 438 424 409
+f 190 205 143
+f 337 371 361
+f 2215 830 826
+f 1631 1646 1638
+f 102 157 120
+f 157 195 194
+f 195 223 194
+f 195 211 223
+f 223 211 267
+f 267 300 333
+f 300 334 351
+f 333 300 351
+f 351 334 352
+f 410 411 438
+f 438 486 424
+f 487 49 486
+f 875 594 989
+f 108 581 66
+f 225 245 244
+f 312 336 335
+f 151 754 107
+f 274 1386 300
+f 352 334 379
+f 923 1729 1096
+f 244 245 268
+f 463 464 454
+f 414 399 415
+f 15 480 470
+f 1647 1069 1078
+f 909 922 833
+f 387 417 328
+f 133 157 102
+f 1314 133 102
+f 133 195 157
+f 1148 1179 1160
+f 1046 1167 182
+f 379 411 410
+f 792 339 229
+f 391 7 668
+f 185 226 174
+f 461 290 497
+f 2027 504 2501
+f 1196 1054 403
+f 728 1019 752
+f 2459 2483 2461
+f 1291 1264 55
+f 133 1356 195
+f 195 1356 211
+f 412 438 411
+f 4 486 438
+f 458 4 438
+f 4 487 486
+f 1720 1572 1771
+f 245 275 268
+f 1869 2021 2059
+f 235 399 372
+f 64 60 105
+f 836 2492 879
+f 1315 133 1314
+f 1331 1382 1356
+f 1310 926 1128
+f 7 1121 117
+f 119 161 611
+f 380 379 334
+f 379 380 411
+f 467 4 458
+f 495 487 4
+f 495 1126 487
+f 416 400 533
+f 479 469 498
+f 74 116 73
+f 478 461 497
+f 393 400 416
+f 61 1291 55
+f 505 1999 2474
+f 1999 2491 2474
+f 199 189 36
+f 1164 1165 169
+f 1179 387 249
+f 390 411 380
+f 411 390 412
+f 458 438 412
+f 495 168 1126
+f 480 469 470
+f 116 122 105
+f 418 187 140
+f 185 174 167
+f 166 148 167
+f 470 469 443
+f 40 55 32
+f 61 71 1291
+f 71 103 1291
+f 1184 1173 1154
+f 634 514 97
+f 425 458 412
+f 917 923 931
+f 2472 2489 853
+f 754 641 567
+f 44 567 1163
+f 454 470 443
+f 40 32 1249
+f 33 40 1249
+f 56 55 40
+f 56 61 55
+f 451 1265 439
+f 1180 417 1179
+f 1099 301 1077
+f 1189 1058 939
+f 1059 221 1132
+f 598 1074 1075
+f 412 426 425
+f 650 186 185
+f 234 244 259
+f 226 245 225
+f 1033 1042 1030
+f 2492 836 247
+f 7 169 1121
+f 1462 1322 1482
+f 425 467 458
+f 496 4 467
+f 1751 2468 2480
+f 290 418 140
+f 326 789 762
+f 142 177 161
+f 165 1751 2480
+f 87 103 71
+f 103 87 104
+f 1180 1179 1148
+f 417 387 1179
+f 2081 2060 2031
+f 1154 1173 1141
+f 181 131 197
+f 442 425 426
+f 614 144 143
+f 876 1010 797
+f 40 45 56
+f 56 45 61
+f 87 71 61
+f 1563 1437 1590
+f 1121 385 117
+f 1148 1160 1137
+f 1449 1459 1439
+f 1028 2462 929
+f 442 459 425
+f 459 467 425
+f 168 495 4
+f 496 168 4
+f 1763 1403 1444
+f 140 187 117
+f 244 234 225
+f 246 740 269
+f 372 414 1182
+f 40 547 45
+f 45 62 61
+f 62 87 61
+f 87 88 104
+f 1084 517 1054
+f 387 328 1064
+f 2467 2497 2485
+f 286 1363 302
+f 205 189 162
+f 290 140 289
+f 214 234 224
+f 393 399 809
+f 315 1131 397
+f 302 321 353
+f 1164 169 391
+f 427 459 442
+f 217 496 467
+f 217 168 496
+f 978 969 2074
+f 361 383 382
+f 269 276 245
+f 1440 11 305
+f 62 88 87
+f 328 1066 1064
+f 1066 1165 1164
+f 242 287 302
+f 1363 242 302
+f 287 321 302
+f 1179 249 1187
+f 983 1020 1004
+f 464 747 481
+f 788 323 276
+f 269 245 246
+f 88 89 1325
+f 171 172 242
+f 360 353 321
+f 360 1354 353
+f 1057 1064 1164
+f 2184 2188 2183
+f 460 459 451
+f 460 467 459
+f 149 168 217
+f 149 136 168
+f 116 129 122
+f 109 124 77
+f 159 167 148
+f 28 42 41
+f 57 88 62
+f 45 57 62
+f 1336 1325 89
+f 89 72 1336
+f 147 172 171
+f 172 258 242
+f 258 257 242
+f 257 287 242
+f 257 321 287
+f 345 360 321
+f 360 381 1354
+f 1069 938 1655
+f 387 473 249
+f 270 217 467
+f 130 136 149
+f 851 847 829
+f 983 987 975
+f 189 177 142
+f 88 72 89
+f 184 258 172
+f 257 288 321
+f 1265 451 459
+f 270 149 217
+f 226 225 174
+f 27 28 41
+f 109 125 124
+f 547 57 45
+f 57 58 88
+f 88 58 72
+f 2476 2484 2458
+f 147 184 172
+f 184 213 258
+f 258 243 257
+f 243 288 257
+f 345 321 288
+f 391 169 7
+f 468 460 451
+f 468 488 460
+f 270 467 460
+f 488 270 460
+f 1206 136 130
+f 481 793 150
+f 143 205 162
+f 142 119 124
+f 58 90 72
+f 90 128 72
+f 147 173 184
+f 173 213 184
+f 213 233 258
+f 258 233 243
+f 354 360 345
+f 354 381 360
+f 1026 991 307
+f 268 312 259
+f 1206 130 1080
+f 116 105 73
+f 139 148 166
+f 275 312 268
+f 188 401 187
+f 2479 2459 2461
+f 58 63 90
+f 1064 1066 1164
+f 1064 473 387
+f 288 311 345
+f 311 354 345
+f 996 994 307
+f 452 468 439
+f 452 478 468
+f 478 488 468
+f 141 130 149
+f 1564 1639 1563
+f 547 41 57
+f 2081 2107 2060
+f 382 381 354
+f 497 270 488
+f 289 149 270
+f 289 141 149
+f 114 122 139
+f 59 60 64
+f 275 323 312
+f 401 668 7
+f 41 46 57
+f 57 46 58
+f 1459 1345 1269
+f 1342 121 158
+f 166 173 158
+f 213 224 233
+f 233 259 243
+f 243 322 288
+f 322 311 288
+f 453 478 452
+f 497 289 270
+f 912 911 906
+f 276 323 275
+f 276 275 245
+f 46 63 58
+f 90 121 128
+f 173 214 213
+f 213 214 224
+f 259 322 243
+f 336 311 322
+f 336 354 311
+f 361 382 354
+f 1043 439 1290
+f 497 488 478
+f 385 130 141
+f 385 1080 130
+f 144 190 143
+f 535 41 547
+f 121 166 158
+f 335 336 322
+f 354 336 361
+f 2004 2481 1764
+f 698 439 1043
+f 289 140 141
+f 923 1096 931
+f 650 185 159
+f 46 59 63
+f 63 91 90
+f 90 114 121
+f 121 139 166
+f 173 196 214
+f 259 335 322
+f 2478 2502 2434
+f 312 337 336
+f 90 91 114
+f 114 139 121
+f 166 196 173
+f 224 234 233
+f 234 259 233
+f 259 312 335
+f 1124 916 1189
+f 542 541 530
+f 462 479 290
+f 269 783 276
+f 813 567 641
+f 276 783 788
+f 82 1038 1333
+f 816 701 703
+f 672 137 603
+f 625 635 624
+f 2457 2439 1973
+f 767 533 529
+f 2468 1869 2480
+f 662 190 639
+f 711 720 719
+f 630 639 614
+f 161 654 638
+f 781 991 982
+f 1227 31 516
+f 648 639 630
+f 630 614 590
+f 2098 544 1899
+f 578 579 586
+f 697 492 551
+f 529 533 400
+f 869 859 870
+f 1732 924 914
+f 1004 1027 991
+f 801 591 603
+f 636 676 651
+f 876 949 965
+f 2207 1789 1859
+f 76 739 237
+f 188 681 15
+f 578 604 599
+f 797 616 995
+f 510 2035 1365
+f 76 812 617
+f 617 739 76
+f 1468 93 1765
+f 596 546 812
+f 1457 1305 1477
+f 760 197 150
+f 671 773 765
+f 586 609 604
+f 591 700 632
+f 476 2312 474
+f 2084 2027 2489
+f 582 590 571
+f 1555 2449 1996
+f 674 546 596
+f 812 655 617
+f 161 177 661
+f 599 604 636
+f 700 787 576
+f 776 675 572
+f 776 674 675
+f 617 634 739
+f 591 632 649
+f 612 546 674
+f 617 655 634
+f 728 752 706
+f 571 2311 2305
+f 775 674 776
+f 775 612 674
+f 612 628 546
+f 546 628 812
+f 812 628 655
+f 620 630 615
+f 620 648 630
+f 667 653 646
+f 810 782 785
+f 150 197 814
+f 534 1517 2000
+f 702 572 2378
+f 748 776 572
+f 655 613 634
+f 911 917 905
+f 648 679 662
+f 727 771 713
+f 750 807 799
+f 639 190 144
+f 662 679 200
+f 702 748 572
+f 775 776 748
+f 628 718 655
+f 626 658 645
+f 791 778 790
+f 612 811 628
+f 613 514 634
+f 1380 1756 1673
+f 570 590 614
+f 720 741 719
+f 1074 795 835
+f 614 639 144
+f 612 775 811
+f 718 735 655
+f 655 735 613
+f 798 338 788
+f 636 652 676
+f 571 590 555
+f 528 730 687
+f 690 702 2312
+f 476 690 2312
+f 811 718 628
+f 721 778 727
+f 748 702 690
+f 735 686 613
+f 1517 2002 2127
+f 654 685 667
+f 569 588 606
+f 513 531 538
+f 538 549 548
+f 549 553 548
+f 550 588 549
+f 1903 869 870
+f 691 775 748
+f 691 600 775
+f 600 811 775
+f 811 563 718
+f 563 736 718
+f 718 736 735
+f 736 647 735
+f 735 647 686
+f 686 745 613
+f 745 514 613
+f 569 606 605
+f 654 667 638
+f 851 857 847
+f 588 569 549
+f 690 691 748
+f 680 514 745
+f 2127 2002 2094
+f 747 701 481
+f 400 373 529
+f 600 536 811
+f 536 563 811
+f 1306 227 1152
+f 522 24 18
+f 523 24 522
+f 865 857 851
+f 2031 2060 1540
+f 767 701 747
+f 618 652 609
+f 652 636 609
+f 573 22 710
+f 642 699 730
+f 1522 1518 2476
+f 500 629 691
+f 690 500 691
+f 691 629 600
+f 780 644 641
+f 579 578 561
+f 131 668 197
+f 197 668 814
+f 789 809 798
+f 622 760 150
+f 621 563 536
+f 673 745 686
+f 673 818 745
+f 818 680 745
+f 680 96 514
+f 2495 2462 1028
+f 1028 583 575
+f 663 794 664
+f 629 761 600
+f 761 757 600
+f 600 757 536
+f 621 696 563
+f 755 736 563
+f 696 755 563
+f 633 736 755
+f 633 647 736
+f 623 686 647
+f 633 623 647
+f 686 623 673
+f 819 680 818
+f 680 819 96
+f 1729 1677 1096
+f 2482 1899 2471
+f 537 536 757
+f 536 537 621
+f 673 819 818
+f 2428 222 230
+f 25 24 523
+f 25 557 24
+f 38 25 19
+f 710 22 272
+f 663 759 794
+f 1120 878 1195
+f 537 696 621
+f 696 633 755
+f 822 2215 2220
+f 97 96 1053
+f 750 784 743
+f 887 905 864
+f 768 784 373
+f 512 513 548
+f 573 664 22
+f 696 715 633
+f 673 521 819
+f 2454 2453 2445
+f 883 887 847
+f 306 812 76
+f 642 528 759
+f 798 809 235
+f 994 792 998
+f 587 626 586
+f 1900 1918 1937
+f 645 652 618
+f 537 786 696
+f 521 593 819
+f 515 19 523
+f 741 749 719
+f 789 326 809
+f 539 581 550
+f 657 777 723
+f 684 713 660
+f 692 712 720
+f 652 666 692
+f 507 761 629
+f 472 507 629
+f 507 757 761
+f 623 633 673
+f 724 521 673
+f 515 516 19
+f 304 675 674
+f 178 778 721
+f 947 1447 2358
+f 626 645 618
+f 586 626 618
+f 784 768 742
+f 753 537 757
+f 537 753 786
+f 724 981 521
+f 521 981 593
+f 979 559 850
+f 637 660 677
+f 787 631 576
+f 141 117 385
+f 809 399 235
+f 641 754 558
+f 542 553 561
+f 742 768 762
+f 444 416 533
+f 528 687 796
+f 813 598 566
+f 1490 1501 1557
+f 753 757 507
+f 786 715 696
+f 633 724 673
+f 2090 2062 2109
+f 646 653 660
+f 660 694 683
+f 677 660 683
+f 1872 839 838
+f 1224 18 30
+f 326 393 809
+f 799 529 373
+f 313 507 472
+f 715 774 633
+f 974 699 841
+f 703 820 816
+f 692 711 676
+f 1014 355 766
+f 875 752 1019
+f 627 646 660
+f 711 692 720
+f 652 692 676
+f 799 373 784
+f 813 566 567
+f 2462 2482 2475
+f 764 644 780
+f 1479 1924 1916
+f 753 738 786
+f 738 607 786
+f 786 607 715
+f 715 524 774
+f 633 774 724
+f 559 979 672
+f 758 798 783
+f 683 694 705
+f 820 703 562
+f 764 687 644
+f 744 743 725
+f 313 753 507
+f 607 524 715
+f 664 801 22
+f 646 627 610
+f 800 820 562
+f 750 769 807
+f 767 747 533
+f 578 586 604
+f 862 593 981
+f 688 2382 1083
+f 306 304 674
+f 738 584 607
+f 168 136 238
+f 773 552 765
+f 2473 2464 2458
+f 773 793 552
+f 626 619 658
+f 1007 1139 1013
+f 562 529 799
+f 744 750 743
+f 659 683 693
+f 677 683 659
+f 313 737 753
+f 753 737 738
+f 607 729 524
+f 27 518 28
+f 553 569 580
+f 657 163 777
+f 580 569 605
+f 789 798 758
+f 769 562 807
+f 820 671 816
+f 638 646 611
+f 1074 598 644
+f 750 799 784
+f 1931 907 898
+f 2483 2487 2461
+f 737 584 738
+f 1439 1438 1431
+f 2098 1213 544
+f 48 578 75
+f 796 631 787
+f 815 732 21
+f 581 588 550
+f 625 636 651
+f 778 1011 810
+f 693 705 725
+f 693 683 705
+f 236 1921 1966
+f 584 729 607
+f 2237 1866 2227
+f 530 541 28
+f 237 739 248
+f 512 530 28
+f 727 778 771
+f 684 727 713
+f 2237 2220 826
+f 542 561 560
+f 528 796 700
+f 808 785 671
+f 739 592 248
+f 895 905 896
+f 740 246 186
+f 272 137 979
+f 770 769 744
+f 712 742 720
+f 1213 2026 544
+f 1888 1235 2438
+f 555 554 2311
+f 737 313 1192
+f 1585 1612 1611
+f 695 721 685
+f 518 17 28
+f 769 770 562
+f 719 749 740
+f 648 669 679
+f 773 657 723
+f 606 637 619
+f 2072 2062 2042
+f 606 619 626
+f 549 569 553
+f 161 638 611
+f 910 917 942
+f 917 1103 942
+f 991 1026 992
+f 979 137 672
+f 785 163 657
+f 710 2488 2472
+f 611 581 119
+f 808 671 820
+f 1820 1900 1870
+f 759 700 591
+f 637 677 619
+f 2494 2490 2463
+f 671 765 816
+f 687 764 780
+f 1019 992 1026
+f 1726 1719 987
+f 713 771 694
+f 51 2355 78
+f 510 526 525
+f 525 526 1249
+f 526 33 1249
+f 2311 554 2335
+f 827 848 840
+f 603 591 649
+f 758 269 740
+f 1595 1612 1586
+f 1694 1048 1699
+f 682 740 186
+f 22 801 603
+f 555 570 554
+f 1053 110 97
+f 615 582 601
+f 814 668 188
+f 725 705 744
+f 528 700 759
+f 640 648 620
+f 703 701 562
+f 886 892 582
+f 631 731 576
+f 1087 1835 1747
+f 882 864 895
+f 956 950 1103
+f 1502 2500 2470
+f 205 190 200
+f 815 878 616
+f 616 878 995
+f 1183 878 815
+f 1601 1827 881
+f 527 535 526
+f 2184 2183 2175
+f 1142 1125 1133
+f 235 338 798
+f 160 339 792
+f 599 92 75
+f 598 1116 566
+f 631 558 731
+f 771 770 744
+f 730 528 642
+f 841 699 642
+f 668 401 188
+f 510 527 526
+f 749 758 740
+f 706 721 695
+f 694 726 705
+f 694 744 726
+f 906 911 905
+f 661 695 161
+f 708 815 616
+f 535 547 33
+f 794 759 591
+f 778 808 790
+f 269 758 783
+f 771 744 694
+f 800 808 820
+f 571 886 582
+f 854 948 1010
+f 906 905 887
+f 625 651 635
+f 2000 1226 534
+f 2140 1504 2016
+f 601 620 615
+f 620 601 640
+f 648 640 669
+f 698 452 439
+f 671 785 657
+f 1561 2356 545
+f 685 653 667
+f 685 727 684
+f 568 616 797
+f 708 732 815
+f 93 229 339
+f 865 851 839
+f 942 1103 950
+f 589 614 125
+f 606 610 627
+f 951 834 873
+f 92 599 625
+f 1878 830 1902
+f 2482 2098 1899
+f 568 708 616
+f 708 551 732
+f 2434 2487 2483
+f 160 964 665
+f 2316 2391 2309
+f 762 758 749
+f 570 614 589
+f 888 897 883
+f 2000 1517 1388
+f 685 721 727
+f 588 610 606
+f 653 685 684
+f 651 650 635
+f 760 1151 6
+f 793 622 150
+f 651 676 650
+f 744 769 750
+f 541 542 560
+f 476 500 690
+f 473 1064 1057
+f 561 578 560
+f 636 625 599
+f 876 995 949
+f 829 856 846
+f 682 704 740
+f 791 790 770
+f 2466 2500 2460
+f 579 587 586
+f 1352 1208 1095
+f 1684 1479 1916
+f 604 609 636
+f 751 721 706
+f 810 608 782
+f 672 603 649
+f 475 447 476
+f 794 591 801
+f 682 186 650
+f 808 800 790
+f 644 598 813
+f 704 719 740
+f 1011 608 810
+f 1192 584 737
+f 687 780 796
+f 2337 474 2312
+f 638 667 646
+f 706 1186 728
+f 733 575 568
+f 595 551 708
+f 595 540 551
+f 1308 501 1852
+f 665 339 160
+f 527 2447 535
+f 558 9 731
+f 723 793 773
+f 660 713 694
+f 693 725 666
+f 562 767 529
+f 550 538 531
+f 2267 2287 2233
+f 996 964 160
+f 2068 2470 2466
+f 704 711 719
+f 741 762 749
+f 605 606 626
+f 548 542 530
+f 995 878 709
+f 1898 1684 1916
+f 778 791 771
+f 782 163 785
+f 789 758 762
+f 857 883 847
+f 733 970 1028
+f 838 829 825
+f 2447 511 535
+f 22 603 137
+f 705 726 744
+f 605 587 580
+f 512 548 530
+f 743 784 742
+f 790 800 770
+f 778 810 808
+f 1014 998 355
+f 708 568 595
+f 656 697 551
+f 540 656 551
+f 143 125 614
+f 1000 1020 983
+f 778 178 1011
+f 676 704 682
+f 637 627 660
+f 606 627 637
+f 701 552 481
+f 808 810 785
+f 590 570 555
+f 716 595 568
+f 2355 2335 554
+f 912 1729 911
+f 1076 1456 1546
+f 697 68 492
+f 676 711 704
+f 839 851 838
+f 1028 575 733
+f 1020 844 982
+f 716 568 575
+f 844 781 982
+f 1238 2156 2034
+f 553 580 561
+f 580 579 561
+f 452 461 453
+f 560 578 48
+f 564 540 595
+f 632 656 540
+f 564 632 540
+f 75 578 599
+f 518 27 535
+f 511 518 535
+f 783 798 788
+f 642 759 663
+f 720 742 741
+f 605 626 587
+f 580 587 579
+f 725 712 666
+f 562 701 767
+f 1729 923 911
+f 712 743 742
+f 619 677 658
+f 161 695 654
+f 770 800 562
+f 2084 2489 2472
+f 575 559 716
+f 716 564 595
+f 654 695 685
+f 843 855 2064
+f 34 731 9
+f 527 510 1973
+f 723 622 793
+f 992 1726 987
+f 693 666 652
+f 2472 853 573
+f 624 159 148
+f 671 657 773
+f 681 188 498
+f 797 970 733
+f 565 656 632
+f 565 697 656
+f 565 731 697
+f 1949 951 920
+f 85 111 84
+f 662 200 190
+f 44 324 754
+f 33 547 40
+f 658 693 652
+f 658 652 645
+f 664 794 801
+f 666 712 692
+f 639 648 662
+f 611 646 610
+f 850 559 575
+f 1447 2490 1106
+f 1972 1955 1935
+f 582 615 590
+f 66 581 539
+f 780 641 631
+f 796 780 631
+f 1049 1192 83
+f 1348 13 1519
+f 799 807 562
+f 581 611 588
+f 687 795 644
+f 663 8 642
+f 1936 1972 1935
+f 650 676 682
+f 615 630 590
+f 730 795 687
+f 742 762 741
+f 548 553 542
+f 1048 1692 1074
+f 658 659 693
+f 37 52 30
+f 611 610 588
+f 649 632 564
+f 565 576 731
+f 2138 922 1058
+f 1204 854 965
+f 725 743 712
+f 644 813 641
+f 660 653 684
+f 771 791 770
+f 644 795 1074
+f 469 480 681
+f 559 672 564
+f 716 559 564
+f 672 649 564
+f 2161 1378 2171
+f 474 475 476
+f 816 765 701
+f 765 552 701
+f 513 538 548
+f 754 324 107
+f 609 586 618
+f 25 523 19
+f 677 659 658
+f 689 452 698
+f 1334 1115 1353
+f 700 565 632
+f 700 576 565
+f 481 552 793
+f 763 901 2458
+f 550 549 538
+f 781 964 996
+f 1596 1634 1595
+f 198 916 1124
+f 198 1124 341
+f 842 973 1025
+f 842 1025 836
+f 1009 1024 934
+f 573 710 2472
+f 1100 971 1002
+f 1501 1081 1557
+f 1225 1219 955
+f 413 2138 284
+f 955 1630 522
+f 341 1124 301
+f 2333 2376 2350
+f 1107 218 284
+f 398 925 1513
+f 1513 1442 1495
+f 1935 1455 1744
+f 1723 1935 1744
+f 825 1872 838
+f 1495 1442 1496
+f 963 1024 1009
+f 1511 1514 966
+f 1775 1729 912
+f 688 262 1067
+f 714 1007 1512
+f 919 1732 914
+f 2319 2331 2304
+f 2400 2407 2391
+f 1674 2164 1780
+f 843 927 899
+f 1660 988 1188
+f 1067 262 1640
+f 1381 1109 1483
+f 1437 1381 1483
+f 2495 1010 948
+f 1514 1289 1313
+f 899 374 961
+f 1438 1430 1422
+f 1634 1095 1632
+f 2487 973 2461
+f 1003 499 874
+f 849 848 827
+f 1430 1462 1453
+f 2496 2084 2471
+f 909 10 980
+f 730 927 835
+f 2031 1540 1536
+f 831 849 2178
+f 881 834 951
+f 1841 1722 1803
+f 1005 670 1020
+f 1021 670 1005
+f 1869 2059 2467
+f 903 902 1939
+f 2476 2502 1651
+f 853 8 573
+f 1850 831 2178
+f 934 746 247
+f 934 65 746
+f 301 285 1077
+f 968 944 977
+f 970 2495 1028
+f 974 2465 374
+f 899 927 374
+f 1882 1898 1916
+f 1613 1634 1596
+f 909 833 1396
+f 2492 247 1003
+f 919 914 1931
+f 1459 1299 1458
+f 1634 1632 1633
+f 844 670 228
+f 2494 2497 2467
+f 901 973 2487
+f 228 1772 734
+f 1701 1709 1666
+f 963 574 1024
+f 847 864 856
+f 1730 1736 2239
+f 870 859 848
+f 2074 2111 2103
+f 1140 1590 1483
+f 927 730 974
+f 2103 978 2074
+f 756 1745 1718
+f 848 859 840
+f 1296 1482 1320
+f 2331 51 66
+f 1067 988 962
+f 1396 833 1445
+f 1001 1005 1000
+f 901 1009 973
+f 1099 1077 817
+f 933 944 936
+f 952 958 1828
+f 988 1660 986
+f 833 1067 1445
+f 1067 1640 988
+f 218 413 284
+f 1843 180 347
+f 1846 1708 1798
+f 2469 2477 855
+f 1006 1021 1005
+f 381 382 250
+f 2369 828 531
+f 968 977 1001
+f 2460 1949 779
+f 1194 1441 1115
+f 1001 1000 968
+f 756 678 1745
+f 963 1009 901
+f 2471 2084 2472
+f 841 642 8
+f 982 991 1027
+f 670 844 1020
+f 1289 1514 945
+f 869 904 890
+f 1161 1115 1639
+f 823 2178 849
+f 746 12 499
+f 263 428 2366
+f 1685 1075 1692
+f 1002 926 806
+f 1799 1755 216
+f 944 968 993
+f 943 944 993
+f 31 38 19
+f 531 828 550
+f 1501 1078 1081
+f 1921 1149 431
+f 936 943 932
+f 1660 1489 1412
+f 301 980 285
+f 903 918 902
+f 869 890 868
+f 890 903 867
+f 1003 746 499
+f 951 1949 2500
+f 990 841 853
+f 1595 1634 1611
+f 374 927 974
+f 836 1025 247
+f 1653 1652 1638
+f 1303 1545 1142
+f 1616 1631 1638
+f 1629 1546 1628
+f 936 932 913
+f 513 506 531
+f 868 890 867
+f 2330 2369 2353
+f 924 918 914
+f 907 914 904
+f 1258 1421 1267
+f 301 939 980
+f 1472 1482 1296
+f 868 867 859
+f 472 491 313
+f 272 519 2488
+f 1471 1472 1296
+f 1025 934 247
+f 1634 1633 1611
+f 2176 1847 2177
+f 1310 1289 806
+f 924 933 918
+f 1969 1968 902
+f 2107 2128 2118
+f 1428 1436 1287
+f 1139 1564 1617
+f 2378 572 2384
+f 853 841 8
+f 2501 961 2465
+f 1221 1240 1408
+f 1069 1578 1627
+f 1006 1005 1001
+f 1617 1564 1578
+f 828 539 550
+f 1791 2168 2160
+f 1829 1718 1739
+f 1968 1939 902
+f 756 1718 665
+f 1998 2000 1388
+f 2451 545 2356
+f 178 997 1011
+f 1275 325 1270
+f 1709 872 1666
+f 2176 1959 1847
+f 944 943 936
+f 2424 518 511
+f 1445 1067 962
+f 2007 952 1828
+f 2052 2061 2081
+f 828 2303 539
+f 835 1699 1048
+f 1709 1706 872
+f 885 574 963
+f 1318 1296 1320
+f 859 867 1902
+f 1452 1448 1421
+f 943 993 976
+f 993 1000 983
+f 854 1010 876
+f 988 986 962
+f 2031 2052 2081
+f 924 1732 1828
+f 965 949 1060
+f 781 228 734
+f 1718 1765 665
+f 943 976 932
+f 1680 1794 1783
+f 1448 1471 1276
+f 1276 1267 1421
+f 1931 914 907
+f 991 781 996
+f 1276 1421 1448
+f 10 909 1396
+f 831 860 849
+f 1523 1762 1774
+f 924 1828 937
+f 307 994 1014
+f 946 963 901
+f 978 2103 977
+f 977 1006 1001
+f 1007 1161 1639
+f 1639 1294 1437
+f 885 1032 574
+f 1294 1381 1437
+f 733 568 797
+f 792 229 1112
+f 119 581 108
+f 843 835 927
+f 1889 860 831
+f 2211 2216 2204
+f 2400 2431 2422
+f 2103 1006 977
+f 840 1902 830
+f 827 840 830
+f 827 830 822
+f 1003 874 2492
+f 1432 1439 1431
+f 781 734 964
+f 1937 1936 1723
+f 918 913 902
+f 958 977 944
+f 1850 2178 2177
+f 1005 1020 1000
+f 991 996 307
+f 1396 1445 340
+f 2179 1763 889
+f 939 909 980
+f 1828 958 937
+f 978 977 958
+f 1590 1571 1563
+f 779 1949 920
+f 1551 1362 1573
+f 2103 2142 1006
+f 920 885 963
+f 946 920 963
+f 1584 1616 1583
+f 1453 1472 1452
+f 1647 1617 1578
+f 1578 1564 1627
+f 1628 938 1069
+f 869 868 859
+f 993 983 976
+f 912 1762 1775
+f 752 751 706
+f 1628 1546 938
+f 844 228 781
+f 840 859 1902
+f 898 907 904
+f 1025 973 1009
+f 663 664 573
+f 763 946 901
+f 898 904 869
+f 2172 889 1763
+f 1128 926 971
+f 860 848 849
+f 904 903 890
+f 2486 2459 2479
+f 577 782 608
+f 933 936 918
+f 2177 1847 1851
+f 665 1765 339
+f 937 958 944
+f 894 981 724
+f 968 1000 993
+f 2192 2195 2205
+f 1652 1099 817
+f 997 608 1011
+f 997 577 608
+f 577 163 782
+f 1112 998 792
+f 2177 1851 1850
+f 1257 1421 1258
+f 951 873 920
+f 822 830 2215
+f 1899 2496 2471
+f 1773 1668 1558
+f 904 914 903
+f 932 1671 913
+f 873 885 920
+f 1013 1617 1647
+f 873 1032 885
+f 894 862 981
+f 2469 855 961
+f 913 1671 1969
+f 2477 2064 855
+f 918 936 913
+f 860 870 848
+f 937 944 933
+f 1501 1013 1647
+f 824 178 751
+f 824 997 178
+f 824 577 997
+f 643 163 577
+f 863 856 882
+f 2128 2153 2134
+f 722 774 880
+f 722 894 774
+f 864 905 895
+f 850 575 583
+f 914 918 903
+f 924 937 933
+f 1501 717 1013
+f 1587 1324 928
+f 717 1512 1013
+f 602 577 824
+f 766 643 577
+f 894 709 862
+f 709 878 862
+f 976 975 932
+f 1324 1596 928
+f 880 524 1060
+f 2434 2459 2499
+f 1324 1613 1596
+f 752 824 751
+f 602 766 577
+f 1014 602 594
+f 1387 1226 2152
+f 2153 1387 2152
+f 669 930 950
+f 1710 1694 1699
+f 768 326 762
+f 582 892 601
+f 974 990 2465
+f 624 116 625
+f 835 795 730
+f 2458 2484 763
+f 989 602 824
+f 2064 2477 1710
+f 976 983 975
+f 949 722 880
+f 996 160 994
+f 2305 863 556
+f 556 863 886
+f 601 910 640
+f 2264 825 829
+f 989 824 752
+f 856 864 882
+f 1595 1586 2381
+f 1627 1629 1628
+f 2174 2180 2173
+f 2128 2134 2118
+f 137 272 22
+f 949 880 1060
+f 995 894 722
+f 894 995 709
+f 894 724 774
+f 886 895 892
+f 640 910 930
+f 871 870 860
+f 846 856 863
+f 1026 875 1019
+f 838 851 829
+f 1024 1171 934
+f 36 189 205
+f 863 882 886
+f 886 882 895
+f 875 1026 594
+f 52 1459 1269
+f 896 917 910
+f 1025 1009 934
+f 949 995 722
+f 2152 1226 1636
+f 895 896 892
+f 892 910 601
+f 942 950 930
+f 875 989 752
+f 594 602 989
+f 766 355 643
+f 355 260 643
+f 905 917 896
+f 965 1060 1162
+f 892 896 910
+f 1101 1052 1042
+f 1029 1031 834
+f 1101 1133 1118
+f 342 357 376
+f 516 515 2454
+f 1656 2494 2467
+f 1056 1303 1133
+f 1120 1130 862
+f 69 342 376
+f 1055 1056 1133
+f 499 69 165
+f 85 101 111
+f 1031 1032 834
+f 200 679 1166
+f 1031 1042 1032
+f 1171 65 934
+f 1822 1204 1177
+f 1096 956 1103
+f 514 96 97
+f 956 1145 1144
+f 1185 1166 1144
+f 1145 1185 1144
+f 1185 200 1166
+f 375 132 1041
+f 1153 1202 305
+f 32 1244 1249
+f 1096 1087 956
+f 554 78 2355
+f 1191 138 110
+f 65 35 432
+f 1087 1110 956
+f 1110 1146 956
+f 956 1146 1145
+f 1146 1156 1145
+f 1145 1156 1185
+f 950 956 1144
+f 2481 2495 948
+f 1156 1193 1185
+f 1050 1047 1051
+f 239 151 107
+f 1185 1193 36
+f 1747 1110 1087
+f 1134 1146 1110
+f 1146 1157 1156
+f 1156 1157 1193
+f 1041 1045 1034
+f 1397 1134 1110
+f 1157 1146 1134
+f 1157 1175 1193
+f 1193 199 36
+f 1090 1035 1196
+f 1456 1150 1051
+f 1175 199 1193
+f 1186 695 199
+f 1186 199 1175
+f 1175 1157 1134
+f 728 1186 1175
+f 197 760 6
+f 1130 593 862
+f 1167 1109 182
+f 1194 1115 1161
+f 2140 1928 1504
+f 921 922 2138
+f 1147 1134 1397
+f 1719 1147 1397
+f 1147 1175 1134
+f 1175 1147 728
+f 341 1654 1208
+f 754 151 9
+f 284 2138 1058
+f 1188 1557 1660
+f 1191 110 1053
+f 916 284 1189
+f 284 1058 1189
+f 2094 1465 2127
+f 1726 1019 1147
+f 1147 1019 728
+f 593 1130 96
+f 239 305 1038
+f 1036 1131 315
+f 397 1131 1120
+f 1053 96 1130
+f 2467 2485 1869
+f 517 1089 421
+f 834 1827 1029
+f 419 1047 1117
+f 1034 433 1306
+f 2239 1862 1730
+f 1453 1462 1472
+f 1408 1422 1399
+f 471 23 1111
+f 1205 1150 1456
+f 1205 1040 1150
+f 1131 1036 293
+f 293 1068 1044
+f 375 1041 138
+f 1205 1140 1046
+f 1040 1205 1046
+f 1140 1167 1046
+f 1104 1049 83
+f 1052 1085 1032
+f 1044 1068 1191
+f 1167 1483 1109
+f 208 1084 1035
+f 1040 132 375
+f 1834 20 3
+f 1050 1051 1070
+f 1133 1125 1174
+f 11 1440 1401
+f 420 208 1071
+f 1135 1079 1094
+f 1086 1101 1118
+f 1029 1030 1031
+f 1200 1061 294
+f 1191 1068 138
+f 1171 1141 65
+f 1141 1172 65
+f 1172 35 65
+f 1172 404 35
+f 404 99 35
+f 221 1104 1063
+f 802 398 1083
+f 20 1089 3
+f 2064 1699 835
+f 1042 1052 1032
+f 1433 1261 1432
+f 1323 2338 155
+f 1076 1205 1456
+f 1088 1402 1056
+f 1150 348 1070
+f 1200 1089 20
+f 1097 1162 100
+f 1032 873 834
+f 21 471 1111
+f 294 1097 1104
+f 1072 100 584
+f 1151 760 622
+f 132 1045 1041
+f 1050 1070 1135
+f 1088 1039 940
+f 650 159 635
+f 100 1170 729
+f 729 584 100
+f 1103 931 1096
+f 925 1443 1513
+f 138 1102 110
+f 1034 1306 1152
+f 1071 1035 1090
+f 100 1072 1097
+f 23 1158 315
+f 1068 375 138
+f 1586 1612 1585
+f 1819 1030 1029
+f 1041 1034 1102
+f 232 375 1068
+f 348 1079 1070
+f 1061 1097 294
+f 1513 1443 1442
+f 1200 294 1119
+f 376 1050 1062
+f 1094 1036 315
+f 1200 1119 1089
+f 1111 1183 21
+f 1044 1191 1053
+f 698 295 689
+f 1079 232 1036
+f 404 1117 99
+f 1495 1496 717
+f 1119 294 98
+f 3 1089 517
+f 1132 1063 83
+f 1132 83 175
+f 132 1046 182
+f 1111 1195 1183
+f 1131 1044 1037
+f 127 402 1804
+f 219 1272 1047
+f 1697 1135 1094
+f 2140 1854 2117
+f 1111 397 1195
+f 1177 1162 1097
+f 1061 1177 1097
+f 717 1509 714
+f 2 1300 433
+f 462 290 461
+f 98 294 221
+f 294 1104 221
+f 714 1161 1007
+f 1073 1152 1143
+f 1697 1094 1360
+f 1223 1423 1218
+f 836 2479 842
+f 1097 1072 1049
+f 348 1040 375
+f 3 517 316
+f 180 1061 1201
+f 348 375 232
+f 1432 1431 1415
+f 220 1513 1495
+f 1104 1097 1049
+f 306 674 596
+f 777 455 723
+f 2170 2151 1641
+f 1047 419 219
+f 1102 1034 1073
+f 1073 1034 1152
+f 1035 1054 1196
+f 1177 1204 1162
+f 746 65 12
+f 751 178 721
+f 1054 517 421
+f 1051 1150 1070
+f 1102 1073 110
+f 998 1136 355
+f 567 566 1163
+f 1111 315 397
+f 1048 1074 835
+f 1158 1094 315
+f 1374 1107 1252
+f 1112 1136 998
+f 472 629 500
+f 355 1136 260
+f 260 118 43
+f 1104 83 1063
+f 376 357 1050
+f 1463 1142 1545
+f 1036 232 293
+f 1030 1042 1031
+f 1079 348 232
+f 221 1063 1132
+f 1094 1079 1036
+f 1076 1629 1205
+f 1136 1197 260
+f 260 1197 118
+f 1204 965 1162
+f 293 232 1068
+f 1590 1205 1629
+f 1205 1590 1140
+f 250 382 392
+f 1296 1318 1311
+f 347 1201 20
+f 1201 1200 20
+f 132 182 1045
+f 1101 1086 1052
+f 1033 1039 1055
+f 138 1041 1102
+f 970 1010 2495
+f 455 777 43
+f 1992 1948 2023
+f 20 1834 347
+f 1072 584 1049
+f 584 1192 1049
+f 182 2 1045
+f 1163 324 44
+f 1360 1094 1158
+f 1450 1360 1158
+f 1091 1112 229
+f 509 723 455
+f 207 509 455
+f 1251 1257 1266
+f 1488 1489 1547
+f 2157 1541 1875
+f 305 107 324
+f 1045 2 433
+f 1070 1079 1135
+f 1136 1168 1197
+f 1197 359 118
+f 118 359 43
+f 359 356 43
+f 356 455 43
+f 356 207 455
+f 1240 1422 1408
+f 1163 1153 324
+f 1201 1061 1200
+f 1052 1086 1085
+f 1024 1141 1171
+f 1112 1105 1136
+f 1050 1135 1062
+f 1105 1168 1136
+f 1168 1178 1197
+f 1197 1178 359
+f 1173 404 1172
+f 465 356 359
+f 1174 1125 240
+f 1240 1431 1422
+f 1098 1113 1105
+f 1112 1098 1105
+f 1105 1178 1168
+f 1178 465 359
+f 1091 1098 1112
+f 1133 1174 1118
+f 98 221 1059
+f 487 1132 175
+f 980 1017 285
+f 465 207 356
+f 180 1201 347
+f 1060 524 1170
+f 445 127 316
+f 1431 1438 1422
+f 498 469 681
+f 940 1807 1759
+f 381 250 1290
+f 1113 1122 1105
+f 1105 1122 1178
+f 1151 509 207
+f 1236 2035 525
+f 1131 293 1044
+f 346 207 465
+f 346 1151 207
+f 1822 1796 1204
+f 1143 204 97
+f 123 1128 971
+f 2153 2152 2134
+f 126 1151 346
+f 517 445 316
+f 1450 1158 23
+f 1458 1462 1430
+f 1129 152 1182
+f 1122 1159 1178
+f 1178 1198 465
+f 79 346 465
+f 126 1155 1151
+f 1151 1155 6
+f 295 1129 689
+f 1073 1143 97
+f 1098 1123 1113
+f 1113 1123 1122
+f 1123 1169 1122
+f 1178 1159 1198
+f 1198 79 465
+f 392 383 152
+f 1822 1061 180
+f 116 92 625
+f 421 1089 1119
+f 1129 295 152
+f 110 1073 97
+f 1173 1172 1141
+f 1122 1169 1159
+f 79 126 346
+f 1155 181 6
+f 971 926 1002
+f 295 1043 152
+f 1039 1088 1056
+f 1428 1266 1436
+f 404 419 1117
+f 836 879 2479
+f 2464 2476 2458
+f 1198 317 79
+f 1124 939 301
+f 44 754 567
+f 1039 1056 1055
+f 1439 1459 1458
+f 1660 1412 986
+f 1169 1160 1159
+f 179 1155 126
+f 1155 131 181
+f 1061 1822 1177
+f 1153 305 324
+f 175 314 327
+f 1160 1187 1159
+f 1159 1187 1198
+f 1198 1187 317
+f 79 179 126
+f 1043 250 392
+f 152 1043 392
+f 96 819 593
+f 1123 1127 1169
+f 317 179 79
+f 1057 1155 179
+f 1155 391 131
+f 131 391 668
+f 2381 1586 1585
+f 12 69 499
+f 262 398 1640
+f 2107 2118 2060
+f 2130 2094 2002
+f 1187 249 317
+f 1155 1057 391
+f 1290 439 1265
+f 305 239 107
+f 1127 1160 1169
+f 317 473 179
+f 473 1057 179
+f 83 1192 314
+f 1043 1290 250
+f 1807 940 1030
+f 517 1084 445
+f 1057 1164 391
+f 2492 2480 2493
+f 163 643 43
+f 1056 1545 1303
+f 1069 1655 1023
+f 249 473 317
+f 1162 1060 1170
+f 1086 1118 1154
+f 82 68 16
+f 1989 1990 1536
+f 1633 1632 1611
+f 1487 2372 1305
+f 1494 1069 1023
+f 1137 1160 1127
+f 669 1166 679
+f 390 1285 426
+f 1955 1972 1971
+f 1219 1223 2437
+f 1254 1261 1223
+f 1319 1545 1056
+f 1320 1328 2443
+f 1261 1433 1223
+f 1219 1254 1223
+f 254 222 2428
+f 1237 1290 1265
+f 1284 1273 1263
+f 1277 1291 1301
+f 1314 102 1301
+f 1280 363 377
+f 1313 1353 1514
+f 468 451 439
+f 1918 1964 1956
+f 2026 29 2140
+f 1354 381 1279
+f 1224 30 1254
+f 147 158 173
+f 1247 1253 274
+f 1271 380 334
+f 2043 2072 2042
+f 274 300 267
+f 1356 1392 211
+f 13 240 1142
+f 1382 1330 1392
+f 1312 1323 155
+f 240 1125 1142
+f 2358 1573 1362
+f 1236 1249 1244
+f 1272 219 1348
+f 1271 1274 380
+f 191 2034 1982
+f 1992 2052 1990
+f 462 452 689
+f 2262 2286 2261
+f 183 489 1642
+f 2485 2480 1869
+f 84 111 1323
+f 1190 353 1354
+f 446 434 435
+f 1336 171 1341
+f 2021 430 2059
+f 862 878 1120
+f 1263 1273 1248
+f 1966 1921 2144
+f 1312 84 1323
+f 240 13 1348
+f 1359 1274 1271
+f 1392 1330 1247
+f 1520 1333 11
+f 1368 1253 1247
+f 1279 1285 1190
+f 2465 990 2489
+f 1272 1519 805
+f 1369 1272 805
+f 1317 95 1344
+f 1242 1248 1234
+f 1368 242 1363
+f 274 1262 1386
+f 532 597 1886
+f 2117 2026 2140
+f 1392 1247 274
+f 2162 508 985
+f 1964 1469 1965
+f 1315 104 1331
+f 1392 1356 1382
+f 128 1342 1336
+f 1285 427 426
+f 1219 1224 1254
+f 1320 1322 1321
+f 1320 1321 1328
+f 153 2443 1328
+f 1321 153 1328
+f 1235 1244 1243
+f 1225 1224 1219
+f 1359 353 1190
+f 1312 1473 1458
+f 1336 1342 147
+f 305 1333 1038
+f 1336 147 171
+f 516 31 19
+f 2479 2461 842
+f 1237 1265 427
+f 1263 1278 1284
+f 881 1827 834
+f 1237 427 1285
+f 1299 1312 1458
+f 1190 1285 1274
+f 1363 286 1253
+f 2330 2303 828
+f 427 442 426
+f 2493 2463 2492
+f 1285 380 1274
+f 522 18 1225
+f 2471 2472 2488
+f 2338 154 1321
+f 1423 1415 1218
+f 1225 18 1224
+f 1253 286 1262
+f 286 353 1359
+f 171 1368 1383
+f 1273 54 1234
+f 1973 2447 527
+f 1322 155 1321
+f 1203 1369 1413
+f 1307 363 1298
+f 1364 1375 1329
+f 1329 227 1306
+f 296 1298 1343
+f 947 2499 1447
+f 1203 1047 1272
+f 1098 1748 1123
+f 1519 1272 1348
+f 1277 70 1273
+f 1282 1337 1361
+f 286 302 353
+f 103 104 1315
+f 1377 435 434
+f 1449 1261 1345
+f 926 1310 806
+f 1263 1248 1242
+f 985 508 597
+f 1415 1222 1218
+f 88 1325 104
+f 170 111 156
+f 1384 1282 1361
+f 274 1253 1262
+f 1371 1317 1344
+f 1371 1366 1337
+f 1345 1459 1449
+f 171 1383 1341
+f 2438 1235 1227
+f 2134 1582 2118
+f 428 1260 1379
+f 1336 1341 1325
+f 1235 1242 1227
+f 1228 1687 2284
+f 1854 2140 2016
+f 1866 1887 1873
+f 1343 1298 1370
+f 1384 1361 2440
+f 171 242 1368
+f 1344 1309 1366
+f 1371 1344 1366
+f 1280 1377 1293
+f 200 1185 205
+f 1330 1383 1368
+f 1255 1264 1263
+f 543 1367 1876
+f 1343 1370 1260
+f 1293 1326 1370
+f 2440 1361 1302
+f 1282 1384 2406
+f 271 1337 1282
+f 170 2338 1323
+f 1528 1503 2470
+f 515 1347 2453
+f 1997 1705 1998
+f 2285 1228 2284
+f 1229 1250 1228
+f 1330 1368 1247
+f 1919 1619 2045
+f 1344 1364 1335
+f 1222 1240 1221
+f 1212 858 1741
+f 2388 1222 1221
+f 1528 2470 2068
+f 501 1308 2171
+f 1295 1311 1487
+f 2116 1619 1655
+f 1220 1229 1228
+f 8 663 573
+f 1343 1260 428
+f 1337 1366 1361
+f 1298 1280 1293
+f 1269 1345 1261
+f 1279 381 1290
+f 1230 1229 1220
+f 1230 1245 1229
+f 1245 1250 1229
+f 1227 1234 31
+f 1302 1361 1350
+f 1245 1266 1428
+f 1992 2023 2052
+f 2482 2471 2475
+f 452 462 461
+f 271 1282 1275
+f 1991 1989 1934
+f 1366 1309 1350
+f 1344 1335 1309
+f 730 699 974
+f 1374 1252 1208
+f 597 508 1912
+f 1363 1253 1368
+f 1386 1271 300
+f 1211 1218 1222
+f 1376 1377 434
+f 2399 2437 1211
+f 1284 1291 1277
+f 1230 1251 1245
+f 1251 1266 1245
+f 1317 1371 1337
+f 1288 1286 1095
+f 1095 1286 1352
+f 1241 1208 1352
+f 1241 1374 1208
+f 1284 1278 1291
+f 211 1392 267
+f 1344 1375 1364
+f 929 583 1028
+f 1361 1366 1350
+f 1115 1294 1639
+f 1291 103 1301
+f 1220 1231 1230
+f 1231 1251 1230
+f 1234 1248 1273
+f 1255 55 1264
+f 1360 1450 1702
+f 363 1280 1298
+f 1369 1203 1272
+f 1415 1240 1222
+f 1216 1231 1220
+f 1243 1263 1235
+f 1375 227 1329
+f 1264 1278 1263
+f 855 899 961
+f 1286 1241 1352
+f 2081 2128 2107
+f 1223 1433 1423
+f 1473 1312 155
+f 154 153 1321
+f 1377 1376 1293
+f 1392 274 267
+f 334 300 1271
+f 1955 1991 1934
+f 1613 1327 1288
+f 1327 1286 1288
+f 1349 1374 1241
+f 2370 2025 2367
+f 1315 1331 133
+f 434 446 1256
+f 1232 1251 1231
+f 1243 1244 1255
+f 1286 1304 1241
+f 1349 1107 1374
+f 1359 1271 1386
+f 1227 516 2431
+f 219 240 1348
+f 1270 271 1275
+f 1255 1263 1243
+f 2026 1926 29
+f 1683 2157 1212
+f 1326 1293 1376
+f 1255 32 55
+f 104 1325 1341
+f 519 2462 2475
+f 2154 2161 2137
+f 1376 434 1246
+f 1246 434 1256
+f 1257 1251 1232
+f 1262 1359 1386
+f 2195 2192 2186
+f 1308 534 1226
+f 2026 2117 544
+f 1327 1613 1324
+f 1327 1326 1286
+f 1286 1326 1304
+f 104 1341 1331
+f 774 524 880
+f 837 1517 534
+f 1127 1123 1567
+f 1279 1237 1285
+f 1297 1381 1294
+f 1217 1232 1216
+f 1142 1519 13
+f 1436 1267 1287
+f 1324 1372 1327
+f 1304 1246 1241
+f 1246 1349 1241
+f 1246 1373 1349
+f 286 1359 1262
+f 1382 1383 1330
+f 1284 1277 1273
+f 489 1998 1799
+f 1675 1116 1075
+f 106 1317 1337
+f 1311 1295 1281
+f 1292 1364 1329
+f 1335 1364 1292
+f 1334 1294 1115
+f 1334 1297 1294
+f 1300 1381 1297
+f 973 842 2461
+f 1217 1239 1232
+f 1232 1239 1257
+f 1258 1267 1436
+f 1359 1190 1274
+f 1862 1405 1877
+f 1372 1339 1327
+f 1339 1326 1327
+f 1373 1351 1349
+f 1276 1311 1281
+f 1256 2386 1351
+f 2 1109 1300
+f 482 1731 520
+f 803 1604 2022
+f 1223 1218 1211
+f 1341 1383 1382
+f 1298 1293 1370
+f 1190 1354 1279
+f 1324 2398 1372
+f 1714 1700 2173
+f 183 2000 489
+f 1701 1666 192
+f 1227 1242 1234
+f 1332 1289 1310
+f 1517 2005 2130
+f 1331 1341 1382
+f 525 1249 1236
+f 23 1268 1450
+f 1264 1291 1278
+f 1281 1287 1267
+f 1295 1305 1287
+f 1281 1295 1287
+f 1487 1305 1295
+f 1605 2097 2058
+f 1326 1376 1304
+f 1304 1376 1246
+f 1316 1919 1984
+f 2500 1949 2460
+f 1332 1313 1289
+f 2189 2181 2177
+f 1335 1334 1353
+f 1292 1297 1334
+f 1428 1250 1245
+f 969 958 952
+f 1217 1233 1239
+f 1233 1257 1239
+f 1876 1367 1338
+f 1379 1260 1372
+f 1372 1260 1339
+f 1128 1302 1310
+f 1310 1302 1332
+f 1335 1353 1313
+f 1292 1334 1335
+f 1297 1329 1300
+f 1279 1290 1237
+f 1301 103 1314
+f 70 1301 102
+f 23 1333 1268
+f 380 1285 390
+f 772 325 1275
+f 1314 103 1315
+f 2473 2458 2487
+f 1276 1281 1267
+f 1344 95 1375
+f 2053 1771 1572
+f 1246 1256 1373
+f 1373 1256 1351
+f 1340 1302 1128
+f 1350 1313 1332
+f 1329 1297 1292
+f 2434 2473 2487
+f 106 1337 271
+f 23 471 1333
+f 622 723 509
+f 1388 1517 2127
+f 1991 1990 1989
+f 183 1636 1226
+f 2133 1605 2151
+f 1260 1370 1339
+f 1339 1370 1326
+f 867 1894 1902
+f 390 426 412
+f 1235 1263 1242
+f 1399 1422 1233
+f 305 11 1333
+f 1300 1329 1306
+f 1302 1350 1332
+f 1350 1309 1313
+f 1309 1335 1313
+f 2470 2102 1502
+f 1787 1531 1599
+f 1724 1725 1691
+f 1827 1601 1927
+f 1678 1358 1476
+f 1823 1812 1846
+f 1805 1824 1708
+f 1746 1676 1797
+f 325 2395 429
+f 1835 1677 1826
+f 1507 1790 1722
+f 1526 1672 858
+f 158 147 1342
+f 1462 1473 1322
+f 1474 1414 1565
+f 1761 1900 1877
+f 940 1759 1008
+f 1565 1015 1008
+f 1924 1533 1933
+f 1878 826 830
+f 1565 1414 1015
+f 1402 1088 1008
+f 1538 1532 1651
+f 1015 1552 1008
+f 1538 1591 1474
+f 1532 1538 1474
+f 1474 1591 1414
+f 1484 1402 1008
+f 1552 1484 1008
+f 1414 1460 1015
+f 1015 1460 1552
+f 806 1289 945
+f 1597 1538 1659
+f 1484 1319 1402
+f 1056 1402 1319
+f 1538 1597 1591
+f 1591 960 1414
+f 1414 960 1460
+f 1925 1466 1455
+f 1552 1400 1484
+f 1484 1400 1319
+f 1400 113 1319
+f 1597 1580 1591
+f 1460 1400 1552
+f 1514 1441 966
+f 1597 1659 1409
+f 1657 113 1400
+f 1460 1657 1400
+f 1288 1095 1634
+f 1551 1597 1409
+f 1580 1598 1591
+f 1591 1598 960
+f 1536 1990 2031
+f 960 1657 1460
+f 1809 1746 1797
+f 1423 1433 1432
+f 2478 1362 1409
+f 1463 1545 113
+f 1657 1463 113
+f 1457 1287 1305
+f 1682 1716 1746
+f 1434 1761 1885
+f 1013 1139 1617
+f 2379 1362 2478
+f 1420 1597 1551
+f 1420 1580 1597
+f 1664 1808 1712
+f 2256 2250 2231
+f 1362 1551 1409
+f 2196 2214 2213
+f 1691 1725 1777
+f 1626 192 1666
+f 1534 1574 2058
+f 1574 1600 1605
+f 1600 1606 1605
+f 1606 1641 1605
+f 1573 1420 1551
+f 1657 1485 1463
+f 678 1806 1742
+f 1534 1553 1574
+f 1574 1575 1600
+f 1810 2170 585
+f 1623 1641 1606
+f 1407 1657 960
+f 1598 1407 960
+f 1485 1142 1463
+f 1716 1581 1676
+f 1738 1743 1733
+f 843 2064 835
+f 1539 1575 1574
+f 1553 1539 1574
+f 1575 1592 1600
+f 1592 1624 1606
+f 1600 1592 1606
+f 1642 585 1641
+f 1623 1642 1641
+f 1485 164 1142
+f 1738 1516 1743
+f 1809 1720 1798
+f 1533 1535 1534
+f 1592 1607 1624
+f 1624 1623 1606
+f 1163 566 1116
+f 1407 1485 1657
+f 1432 1449 1439
+f 1100 802 2382
+f 1743 1516 1722
+f 1746 1716 1676
+f 1535 1539 1534
+f 1534 1539 1553
+f 1642 1623 1624
+f 1095 1208 1654
+f 967 1407 1598
+f 1580 967 1598
+f 1809 1797 1720
+f 1924 1524 1535
+f 1533 1924 1535
+f 1539 1576 1575
+f 1642 216 585
+f 1407 1529 1485
+f 1485 1529 164
+f 1472 1462 1482
+f 1415 1431 1240
+f 966 1194 714
+f 383 1182 152
+f 474 2337 446
+f 1743 1841 1757
+f 1486 1524 1924
+f 1535 1525 1539
+f 1575 1576 1592
+f 1420 967 1580
+f 1288 1634 1613
+f 459 427 1265
+f 1404 2179 1393
+f 1404 1403 1800
+f 1404 1410 1403
+f 1410 1749 1403
+f 1349 1351 218
+f 1486 1498 1524
+f 1535 1524 1525
+f 1607 1636 1624
+f 183 1642 1624
+f 1636 183 1624
+f 1107 1349 218
+f 1351 845 218
+f 164 1519 1142
+f 845 413 218
+f 1525 1576 1539
+f 1576 1582 1592
+f 1592 2134 1607
+f 2134 1636 1607
+f 2147 1491 1401
+f 1407 1589 1529
+f 1529 1519 164
+f 1693 1763 1444
+f 1924 1479 1486
+f 1592 1582 2134
+f 499 165 874
+f 2176 1857 1959
+f 2327 2368 2326
+f 2358 821 953
+f 953 821 1573
+f 1824 1704 1464
+f 1731 1358 1678
+f 1394 1410 1404
+f 1394 1418 1410
+f 1466 1479 1839
+f 1486 1479 1498
+f 1498 1525 1524
+f 1576 2080 1582
+f 1785 1684 1898
+f 804 398 802
+f 804 925 398
+f 1447 1562 2358
+f 2358 1562 821
+f 821 1620 1573
+f 1620 1420 1573
+f 1420 1556 967
+f 1393 1394 1404
+f 1525 2080 1576
+f 1621 1420 1620
+f 1621 1556 1420
+f 967 1589 1407
+f 1505 5 1357
+f 1266 1258 1436
+f 1393 1395 1394
+f 2176 2175 1848
+f 1455 1466 1839
+f 1525 1540 2080
+f 1582 2080 2118
+f 1100 804 802
+f 1556 1589 967
+f 1589 1082 1529
+f 1093 1685 1357
+f 1504 1093 1357
+f 1425 1418 1394
+f 1475 1479 1466
+f 1479 1506 1498
+f 1789 1784 1730
+f 2501 2465 2489
+f 1438 1458 1430
+f 1462 1458 1473
+f 1454 805 1529
+f 1082 1454 1529
+f 1529 805 1519
+f 1425 1394 1395
+f 1425 1744 1418
+f 1479 1475 1506
+f 1540 2060 2080
+f 1556 1082 1589
+f 1443 945 1511
+f 1506 1536 1498
+f 1498 1536 1525
+f 1525 1536 1540
+f 1670 852 1672
+f 1998 1388 1389
+f 1511 966 1509
+f 1509 966 714
+f 1442 1443 1496
+f 1562 1635 821
+f 155 1322 1473
+f 1439 1458 1438
+f 1426 1425 1395
+f 1475 1499 1506
+f 1735 1588 1776
+f 2422 2454 2421
+f 1423 1432 1415
+f 1559 2101 2073
+f 845 866 413
+f 1429 1620 821
+f 1620 1429 1621
+f 1228 1250 1687
+f 1002 945 1443
+f 2382 802 1083
+f 1859 1411 1395
+f 1411 1426 1395
+f 1426 1744 1425
+f 1590 1437 1483
+f 1480 1475 1466
+f 1480 1499 1475
+f 1510 1733 1743
+f 1663 1696 1658
+f 1430 1453 1452
+f 1452 1472 1471
+f 1452 1471 1448
+f 1430 1452 1421
+f 1430 1421 1422
+f 1429 1082 1556
+f 1621 1429 1556
+f 1351 2386 845
+f 1126 1059 487
+f 1639 1437 1563
+f 1504 1928 1093
+f 1499 1536 1506
+f 1588 1770 1727
+f 1110 1747 1397
+f 1776 1588 1531
+f 1322 1320 1482
+f 1590 1629 1571
+f 1730 1877 1838
+f 1429 935 1082
+f 1082 935 1454
+f 804 1443 925
+f 1139 1007 1639
+f 1925 1480 1466
+f 1934 1989 1480
+f 1499 1989 1536
+f 1727 1526 1531
+f 1593 1614 502
+f 2455 2431 2400
+f 1755 1680 908
+f 1563 1571 1564
+f 1647 1078 1501
+f 2490 1635 1106
+f 1496 1511 717
+f 2454 2431 516
+f 1478 1153 1093
+f 1870 1426 1411
+f 1426 1723 1744
+f 962 986 1412
+f 717 1511 1509
+f 1825 1704 1824
+f 2225 2234 2253
+f 1490 1557 1188
+f 1635 80 821
+f 805 1454 935
+f 1186 706 695
+f 1194 1161 714
+f 1512 1007 1013
+f 592 97 204
+f 1258 1266 1257
+f 82 1333 471
+f 1694 1710 1505
+f 1643 490 1661
+f 1661 490 1114
+f 1518 2068 2484
+f 1750 1808 1664
+f 1656 1635 2490
+f 935 1521 805
+f 1546 1629 1076
+f 1301 70 1277
+f 966 1441 1194
+f 1148 1825 1824
+f 1614 1609 1643
+f 1114 1092 1921
+f 1770 1739 1670
+f 1631 1632 1646
+f 821 1016 1429
+f 1429 1016 935
+f 1632 1095 1654
+f 1083 262 688
+f 1724 1686 1725
+f 1644 490 1643
+f 1092 1149 1921
+f 3 893 1832
+f 988 1640 1188
+f 916 1107 284
+f 1656 80 1635
+f 1016 821 80
+f 1016 1521 935
+f 1478 1202 1153
+f 1401 1928 29
+f 1440 1478 1928
+f 1849 1700 1865
+f 1595 1611 1612
+f 1208 198 341
+f 1464 1704 1746
+f 2143 984 1721
+f 1848 1849 1868
+f 1662 1114 490
+f 1669 1787 1682
+f 1656 1618 80
+f 198 1208 916
+f 1440 1928 1401
+f 1521 1369 805
+f 1252 1107 916
+f 1745 678 1672
+f 1703 1779 1721
+f 1750 1465 1808
+f 1609 1644 1643
+f 1092 1114 1662
+f 1826 1523 1793
+f 2262 2261 2224
+f 1696 2166 1767
+f 1016 1648 1521
+f 1208 1252 916
+f 833 688 1067
+f 1794 1803 1558
+f 28 17 512
+f 1750 861 1566
+f 1594 1644 1609
+f 1644 1645 490
+f 490 1645 1662
+f 2229 2262 2224
+f 1602 861 1760
+f 1530 1777 1760
+f 872 1706 1673
+f 1696 1668 2166
+f 1708 1809 1798
+f 1581 1716 1814
+f 1709 1794 1680
+f 1233 1421 1257
+f 1724 1476 1686
+f 1469 1481 1965
+f 1965 1481 1492
+f 2073 1549 1559
+f 1594 1615 1644
+f 1799 1706 1755
+f 1725 1686 1837
+f 1720 1797 1572
+f 1618 2467 2022
+f 1618 1579 80
+f 1648 1016 80
+f 2134 2152 1636
+f 1611 1632 1631
+f 1761 1434 1470
+f 1559 1577 1594
+f 1603 1615 1594
+f 1615 1645 1644
+f 1637 1662 1645
+f 1662 1199 1092
+f 1199 1149 1092
+f 1451 1108 1149
+f 665 734 756
+f 1865 1700 1714
+f 1709 1841 1794
+f 1618 2022 1579
+f 1648 1413 1369
+f 1521 1648 1369
+f 1520 11 1401
+f 1446 1470 1434
+f 1798 1691 1754
+f 2063 1544 2073
+f 2073 1544 1549
+f 1594 1577 1603
+f 1615 1637 1645
+f 1637 1199 1662
+f 1427 1149 1199
+f 2167 1108 1451
+f 1997 1673 1705
+f 1706 1799 1705
+f 1841 1709 1757
+f 1604 1579 2022
+f 1579 707 80
+f 80 707 1648
+f 1520 1401 1491
+f 1649 1520 1491
+f 1435 1434 1885
+f 1470 1469 1461
+f 1481 1508 2024
+f 2370 1544 2063
+f 1549 1568 1559
+f 1559 1568 1577
+f 1603 1610 1615
+f 1615 1610 1637
+f 999 1199 1637
+f 1451 1149 1427
+f 1137 1825 1148
+f 1706 1705 1673
+f 1138 1604 2116
+f 1138 1579 1604
+f 1413 1648 707
+f 2360 2024 1508
+f 598 1075 1116
+f 229 93 1468
+f 1839 1479 1684
+f 2216 2229 2224
+f 1610 1625 1637
+f 329 999 1637
+f 1199 1017 1427
+f 1017 303 1427
+f 303 1451 1427
+f 1792 1754 1777
+f 2309 2391 2301
+f 1655 1138 2116
+f 1138 707 1579
+f 1649 1491 206
+f 1406 1885 1398
+f 1406 1419 1885
+f 1419 1435 1885
+f 1434 1435 1446
+f 1470 1481 1469
+f 1577 1583 1603
+f 999 1017 1199
+f 81 67 941
+f 67 1650 941
+f 1259 1815 2164
+f 1619 2116 2045
+f 1424 707 1138
+f 1702 1649 206
+f 1687 1406 1398
+f 1477 1481 1470
+f 1568 1569 1577
+f 1577 1569 1583
+f 1603 1583 1610
+f 1625 329 1637
+f 2167 340 273
+f 81 273 340
+f 81 962 67
+f 1547 1619 1488
+f 1830 1739 1770
+f 938 1424 1138
+f 1424 1413 707
+f 1527 1649 1702
+f 1527 1520 1649
+f 1527 1268 1520
+f 1250 1406 1687
+f 1441 1353 1115
+f 1203 1413 1051
+f 1250 1419 1406
+f 1477 2372 1481
+f 1481 2372 1508
+f 2449 1560 1568
+f 1549 2449 1568
+f 1568 1560 1569
+f 1569 1584 1583
+f 1652 329 1625
+f 329 817 999
+f 285 1017 999
+f 303 10 1451
+f 10 2167 1451
+f 1412 1650 67
+f 1412 1488 1650
+f 1547 1023 1619
+f 1023 1655 1619
+f 1655 938 1138
+f 1456 1413 1424
+f 1457 1470 1446
+f 1457 1477 1470
+f 329 1652 817
+f 10 340 2167
+f 938 1546 1424
+f 1546 1456 1424
+f 1259 1548 1779
+f 2052 2031 1990
+f 1440 1202 1478
+f 1428 1419 1250
+f 1428 1435 1419
+f 1428 1446 1435
+f 1934 1935 1955
+f 1560 1584 1569
+f 1610 1638 1625
+f 1638 1652 1625
+f 817 1077 999
+f 1077 285 999
+f 980 303 1017
+f 962 1412 67
+f 1494 1023 1547
+f 325 271 1270
+f 1443 1511 1496
+f 1450 1268 1527
+f 1514 1353 1441
+f 1287 1446 1428
+f 1446 1287 1457
+f 1305 2372 1477
+f 1992 1990 1991
+f 1992 1991 1971
+f 1971 1991 1955
+f 2449 1549 2418
+f 1583 1616 1610
+f 1610 1616 1638
+f 10 1396 340
+f 340 1445 81
+f 1445 962 81
+f 1790 984 1753
+f 984 2148 1753
+f 1588 1713 1770
+f 969 978 958
+f 1741 1779 1703
+f 1758 1846 1754
+f 1827 1819 1029
+f 1818 1530 1712
+f 1750 1566 2127
+f 2459 2434 2483
+f 1798 1720 1771
+f 1794 1841 1803
+f 216 1755 1810
+f 1098 1735 1748
+f 1735 1497 1748
+f 1502 2102 1601
+f 881 1502 1601
+f 1455 1839 1744
+f 1706 1709 1680
+f 1212 1741 1703
+f 1788 1969 1671
+f 1075 1074 1692
+f 951 2500 881
+f 2490 2486 2463
+f 1748 1497 1781
+f 1721 984 1840
+f 1815 1259 1741
+f 1626 1756 1837
+f 975 987 1542
+f 2230 2236 2235
+f 1772 678 734
+f 1542 1671 975
+f 1806 1772 1780
+f 678 1772 1806
+f 2218 2225 2268
+f 1828 1732 2007
+f 1526 1688 1531
+f 1752 1526 1554
+f 1844 1818 1712
+f 1823 1846 1804
+f 1781 1669 1704
+f 1721 1779 2143
+f 1770 1670 1526
+f 1497 1669 1781
+f 1098 1713 1735
+f 1742 1815 1741
+f 1526 858 1875
+f 1599 1531 1688
+f 1803 1790 1558
+f 1703 1721 1683
+f 1832 1766 957
+f 1542 1679 1671
+f 1679 1788 1671
+f 1927 1819 1827
+f 1718 1745 1739
+f 1684 1022 1839
+f 1459 1283 1299
+f 1022 1410 1418
+f 2368 2393 2326
+f 1669 1497 1776
+f 1875 858 1212
+f 1739 1745 852
+f 1964 1918 1461
+f 1356 133 1331
+f 1765 1829 1468
+f 858 1742 1741
+f 1006 1674 1021
+f 1723 1936 1935
+f 1468 1713 1098
+f 1724 1678 1476
+f 1680 1783 908
+f 1731 1543 520
+f 1683 1721 1840
+f 1467 1679 1542
+f 1812 1708 1846
+f 1679 1975 1788
+f 1713 1830 1770
+f 1803 1722 1790
+f 2301 2391 2349
+f 1713 1588 1735
+f 1836 1530 1818
+f 1837 1756 861
+f 886 571 556
+f 1181 1805 1812
+f 1706 1680 1755
+f 1677 1729 1775
+f 1776 1787 1669
+f 1526 1670 1672
+f 1727 1770 1526
+f 987 1467 1542
+f 1567 1704 1137
+f 1693 1865 1714
+f 897 1762 912
+f 1135 1697 1062
+f 1697 376 1062
+f 1543 1731 1678
+f 1793 1679 1467
+f 1777 1602 1760
+f 1846 1798 1754
+f 1835 1096 1677
+f 1033 1030 940
+f 1450 1527 1702
+f 1717 376 1697
+f 1711 1717 1697
+f 1717 165 376
+f 1840 984 1790
+f 1669 1746 1704
+f 1669 1682 1746
+f 2301 2349 2308
+f 1882 1444 1898
+f 1820 1789 1730
+f 861 1380 1566
+f 2301 2308 2266
+f 1771 1543 1691
+f 1958 1659 1651
+f 1697 1360 1711
+f 1711 1737 1717
+f 1717 1737 165
+f 1790 1753 1558
+f 1668 1696 1663
+f 1360 1702 1711
+f 1702 1707 1711
+f 1707 1737 1711
+f 1737 1751 165
+f 1444 1782 1693
+f 1716 1787 1599
+f 1744 1839 1022
+f 1898 1444 1785
+f 206 1707 1702
+f 1764 2468 1751
+f 316 1844 893
+f 893 1844 915
+f 1845 1804 1758
+f 1380 861 1756
+f 1780 670 1021
+f 1714 2172 1763
+f 1783 1558 1663
+f 1750 2127 1465
+f 1798 1771 1691
+f 1691 1543 1724
+f 1872 1910 839
+f 1737 2044 1751
+f 1751 2044 1764
+f 1757 1701 482
+f 1725 1602 1777
+f 1836 1845 1530
+f 2102 2470 1503
+f 2496 1899 544
+f 763 2484 946
+f 987 1719 1467
+f 1845 1758 1792
+f 1725 1837 1602
+f 1872 1866 1873
+f 1712 1530 1760
+f 489 1799 216
+f 1760 861 1750
+f 2068 2466 2460
+f 1696 2159 2168
+f 377 1377 1280
+f 1797 1676 1572
+f 1581 2053 1572
+f 1676 1581 1572
+f 1764 2498 2468
+f 2468 2498 1994
+f 1861 1695 1860
+f 2481 2004 2495
+f 1826 1677 1523
+f 1670 1739 852
+f 2234 2269 2253
+f 1724 1543 1678
+f 1658 2168 1791
+f 1397 1747 1719
+f 1696 2168 1658
+f 979 519 272
+f 1774 1975 1679
+f 975 1671 932
+f 1787 1716 1682
+f 1835 1826 1747
+f 2501 2469 961
+f 1810 908 1791
+f 1982 1768 191
+f 1137 1704 1825
+f 1804 1846 1758
+f 2004 2044 1737
+f 913 1969 902
+f 2498 1795 1801
+f 915 1844 1712
+f 1689 915 1712
+f 1740 1752 1541
+f 695 661 199
+f 1865 1693 1782
+f 1824 1464 1809
+f 1829 1765 1718
+f 1816 1768 1982
+f 1816 1622 1768
+f 1622 2165 1681
+f 1768 1622 1681
+f 670 1772 228
+f 1283 1459 52
+f 1785 1444 1749
+f 1675 1075 1685
+f 1567 1781 1704
+f 1858 1857 1848
+f 1526 1752 1688
+f 1791 2160 1810
+f 908 1658 1791
+f 1813 1773 1558
+f 1845 1792 1530
+f 69 376 165
+f 3 1832 1834
+f 1722 1516 1507
+f 1801 1821 1994
+f 1833 1982 2046
+f 1821 1833 2046
+f 1833 1816 1982
+f 1022 1785 1749
+f 2160 2170 1810
+f 1147 1719 1726
+f 1683 1840 1507
+f 1467 1719 1793
+f 1795 1802 1801
+f 1802 1811 1801
+f 1801 1811 1821
+f 1690 2165 1622
+f 1934 1480 1925
+f 229 1468 1091
+f 1780 2164 1742
+f 1672 1742 858
+f 1833 1417 1816
+f 1417 1622 1816
+f 1831 2165 1690
+f 1668 1663 1558
+f 1719 1747 1826
+f 1760 1750 1664
+f 1817 1690 1622
+f 1530 1792 1777
+f 948 1796 1802
+f 1796 1811 1802
+f 1515 1817 1622
+f 1695 1861 1831
+f 1783 1663 1658
+f 1749 1410 1022
+f 854 1796 948
+f 1811 1842 1833
+f 1821 1811 1833
+f 1833 1842 1417
+f 1622 1417 1515
+f 127 1804 1845
+f 1686 1626 1837
+f 1608 1690 1817
+f 1523 1775 1762
+f 127 1845 1836
+f 1812 1805 1708
+f 1523 1677 1775
+f 1780 1772 670
+f 1758 1754 1792
+f 1204 1796 854
+f 1822 1842 1811
+f 1608 1831 1690
+f 1822 1811 1796
+f 1842 1416 1417
+f 1417 1416 1515
+f 1515 1608 1817
+f 1728 1831 1608
+f 908 1783 1658
+f 127 1836 316
+f 1805 1148 1824
+f 852 1745 1672
+f 1478 1093 1928
+f 1822 1843 1842
+f 1843 959 1842
+f 1842 959 1416
+f 1728 1695 1831
+f 1728 1860 1695
+f 2346 446 2337
+f 1602 1837 861
+f 1087 1096 1835
+f 1708 1824 1809
+f 2004 1737 505
+f 1567 1748 1781
+f 520 1543 1883
+f 1760 1664 1712
+f 128 1336 72
+f 2053 1883 1543
+f 1822 180 1843
+f 1786 1608 1515
+f 929 2462 519
+f 512 2402 506
+f 1212 1703 1683
+f 1830 1829 1739
+f 2053 1543 1771
+f 1416 1769 1515
+f 1769 1786 1515
+f 1786 1728 1608
+f 1712 1808 1689
+f 1794 1558 1783
+f 1497 1735 1776
+f 1127 1567 1137
+f 1123 1748 1567
+f 36 205 1185
+f 959 1734 1416
+f 1738 1733 1541
+f 1774 1762 1974
+f 1752 1554 1541
+f 1752 1740 1688
+f 1526 1875 1554
+f 1468 1829 1830
+f 1755 908 1810
+f 1716 1599 1814
+f 1806 1780 1742
+f 2308 2349 2340
+f 1832 915 1689
+f 1713 1468 1830
+f 1814 1599 1346
+f 1832 1689 1766
+f 1022 1684 1785
+f 1093 1153 1116
+f 1672 678 1742
+f 1675 1685 1093
+f 1841 1743 1722
+f 1814 2053 1581
+f 1464 1746 1809
+f 2485 2497 2493
+f 1416 1734 1769
+f 1665 1728 1786
+f 1665 1951 1728
+f 1951 1860 1728
+f 1951 2094 1860
+f 1844 1836 1818
+f 316 1836 1844
+f 1776 1531 1787
+f 1719 1826 1793
+f 2147 1401 29
+f 2111 2121 1548
+f 1741 1259 1779
+f 1843 347 1834
+f 1843 1734 959
+f 1766 1769 1734
+f 957 1766 1734
+f 1766 1786 1769
+f 1766 1689 1786
+f 1689 1665 1786
+f 1754 1691 1777
+f 1507 1840 1790
+f 1761 1470 1461
+f 1523 1679 1793
+f 1091 1468 1098
+f 1820 1730 1838
+f 1843 1834 1734
+f 1808 1951 1665
+f 1588 1727 1531
+f 893 915 1832
+f 1523 1774 1679
+f 272 2488 710
+f 1093 1116 1675
+f 2340 2349 2348
+f 1832 1734 1834
+f 1832 957 1734
+f 1951 1808 2094
+f 1685 1692 1505
+f 1043 295 698
+f 2143 1779 2121
+f 1689 1808 1665
+f 1693 1714 1763
+f 1738 2157 1516
+f 1114 1921 236
+f 1268 1333 1520
+f 1149 1108 431
+f 508 2144 1912
+f 1957 1108 1537
+f 431 1108 1957
+f 1018 1108 2167
+f 1338 1957 1681
+f 2163 1957 1338
+f 1983 1390 2093
+f 30 557 37
+f 1714 2173 2172
+f 1983 1984 1390
+f 1984 2065 1390
+f 884 1762 897
+f 2065 1984 1214
+f 1950 1974 1762
+f 884 1950 1762
+f 2012 1698 1861
+f 1214 2116 803
+f 1950 1938 1974
+f 1938 1967 1974
+f 1900 1761 1461
+f 865 1929 884
+f 884 1929 1950
+f 2062 2071 2042
+f 919 1985 1732
+f 1593 502 2146
+f 1995 1213 2098
+f 1522 2476 1651
+f 2174 1849 2175
+f 1480 1989 1499
+f 1929 1938 1950
+f 1605 2058 1574
+f 2097 1605 2133
+f 1912 2014 1886
+f 2092 2082 2083
+f 206 1930 505
+f 2101 2100 2092
+f 2073 2101 2092
+f 839 1910 865
+f 1910 1901 1929
+f 865 1910 1929
+f 1967 1788 1975
+f 2073 2092 2063
+f 2101 1593 2100
+f 2015 1876 1698
+f 1853 1884 2014
+f 1831 1698 2165
+f 1316 273 81
+f 1901 1920 1929
+f 1929 1920 1938
+f 1920 1968 1967
+f 1938 1920 1967
+f 1849 2174 1700
+f 2173 1700 2174
+f 2062 2072 2091
+f 803 2467 2059
+f 2239 1736 2240
+f 1505 1357 1685
+f 1358 1686 1476
+f 1967 1968 1788
+f 1968 1969 1788
+f 2065 2110 2156
+f 2065 1214 2110
+f 2110 1214 503
+f 273 2093 1018
+f 273 1983 2093
+f 532 1886 2155
+f 2034 2021 1947
+f 216 1810 585
+f 1912 543 2014
+f 1390 2051 1537
+f 1872 1873 1910
+f 1984 2045 1214
+f 597 1912 1886
+f 1593 2146 2100
+f 2071 2062 2090
+f 2034 2046 1982
+f 2034 1947 2046
+f 1214 2045 2116
+f 1873 1887 1910
+f 1887 1901 1910
+f 1562 1447 1106
+f 2163 431 1957
+f 1948 1972 1936
+f 1972 1948 1992
+f 2014 2015 2013
+f 1853 2014 2013
+f 1550 1884 1853
+f 1947 2468 1994
+f 1355 1550 2154
+f 1355 1884 1550
+f 2081 2108 2128
+f 2024 1965 1492
+f 2024 2032 1965
+f 2116 1604 803
+f 1901 1911 1920
+f 1939 1968 1920
+f 1911 1939 1920
+f 872 1626 1666
+f 2062 2091 2120
+f 1819 1927 1759
+f 1021 1674 1780
+f 872 1673 1756
+f 1550 501 2171
+f 1378 1550 2171
+f 2146 2162 2145
+f 1358 482 192
+f 2109 2120 2119
+f 1866 1872 2227
+f 1391 2012 1860
+f 2136 2137 2161
+f 2162 1661 236
+f 1887 1894 1901
+f 1901 1894 1911
+f 505 1707 206
+f 2120 2137 2136
+f 2142 2164 1674
+f 1860 2012 1861
+f 1894 1939 1911
+f 2080 2060 2118
+f 2162 236 508
+f 2164 1815 1742
+f 1018 2093 1537
+f 2154 1378 2161
+f 2041 2098 2491
+f 2043 2042 2032
+f 1108 1018 1537
+f 1465 2094 1808
+f 502 1643 1661
+f 2467 1618 1656
+f 2119 2136 2135
+f 2119 2108 2071
+f 878 1183 1195
+f 2101 1594 1593
+f 2033 2370 2063
+f 2482 2491 2098
+f 1282 2406 1275
+f 2003 1948 1956
+f 2043 2032 2024
+f 2025 2043 2024
+f 2154 1550 1378
+f 1795 2498 1764
+f 2142 1548 2164
+f 2431 2454 2422
+f 1981 2011 1993
+f 2349 2391 2362
+f 502 2162 2146
+f 2025 2024 2360
+f 2129 2120 2091
+f 1732 1985 2007
+f 2171 1308 209
+f 1930 1995 2041
+f 1390 1238 2051
+f 1866 1878 1887
+f 1878 1894 1887
+f 1965 2032 2011
+f 874 2480 2492
+f 2071 2108 2069
+f 1358 1731 482
+f 430 2021 2034
+f 1965 2003 1964
+f 1855 1889 831
+f 1668 1773 2150
+f 1390 2156 1238
+f 898 869 1903
+f 2391 2407 2362
+f 2121 2111 2074
+f 1548 1259 2164
+f 2099 2129 2091
+f 1550 1853 501
+f 1853 1852 501
+f 952 2017 969
+f 2085 2121 2074
+f 2130 2006 1391
+f 2144 1367 543
+f 2100 2146 2099
+f 1545 1319 113
+f 1903 1922 898
+f 1922 1931 898
+f 585 2170 1641
+f 2007 2017 952
+f 2017 2074 969
+f 1558 1753 1813
+f 837 2005 1517
+f 2005 2006 2130
+f 1532 1474 1528
+f 2003 1981 1948
+f 2070 2071 2069
+f 1922 919 1931
+f 2017 2085 2074
+f 2085 2104 2121
+f 2100 2099 2082
+f 2156 2110 2034
+f 505 2474 2004
+f 1903 871 1922
+f 1922 1952 919
+f 919 1952 1985
+f 1985 2001 2007
+f 2001 2036 2017
+f 2007 2001 2017
+f 2017 2036 2085
+f 2036 2047 2085
+f 2047 2075 2085
+f 2075 2104 2085
+f 1948 1993 2023
+f 2400 2422 2407
+f 2011 2070 1993
+f 2033 2043 2025
+f 2012 2015 1698
+f 1876 1338 2165
+f 871 1940 1922
+f 1985 1976 2001
+f 2121 2104 2143
+f 1051 1413 1456
+f 2358 1362 2379
+f 1859 1789 1870
+f 2090 2109 2071
+f 1405 1398 1885
+f 1886 1884 1355
+f 1922 1960 1952
+f 1952 1960 1985
+f 1960 1976 1985
+f 1956 1948 1936
+f 2135 209 2128
+f 2157 1875 1212
+f 2160 2168 2169
+f 1900 1461 1918
+f 2001 2018 2036
+f 2075 2086 2104
+f 2111 2142 2103
+f 1937 1956 1936
+f 2023 2070 2061
+f 2135 2128 2108
+f 2042 2071 2011
+f 2138 413 2383
+f 2033 2072 2043
+f 1922 1940 1960
+f 2070 2069 2061
+f 2069 2108 2061
+f 2108 2119 2135
+f 1855 1904 1889
+f 1889 1904 871
+f 871 1904 1940
+f 1976 2018 2001
+f 2036 2018 2047
+f 2122 2143 2104
+f 216 1642 489
+f 2148 984 2143
+f 1975 1974 1967
+f 2157 1683 1516
+f 1614 1593 1594
+f 2269 2270 2276
+f 1926 2147 29
+f 2082 2091 2072
+f 430 503 2059
+f 1904 1905 1940
+f 1940 1961 1960
+f 1961 1976 1960
+f 2087 2086 2075
+f 2065 2156 1390
+f 1820 1838 1900
+f 534 1308 837
+f 2167 273 1018
+f 831 1850 1855
+f 2019 2037 2018
+f 2018 2037 2047
+f 2037 2075 2047
+f 2086 2095 2104
+f 2095 2122 2104
+f 2122 2148 2143
+f 1926 1213 1995
+f 1405 1885 1761
+f 2006 2013 2012
+f 2211 2233 2216
+f 1855 1890 1904
+f 1904 1895 1905
+f 1905 1932 1940
+f 1961 1977 1976
+f 1976 1986 2018
+f 2484 2476 1518
+f 1870 1411 1859
+f 1548 2142 2111
+f 1904 1890 1895
+f 1895 1932 1905
+f 1940 1932 1961
+f 1976 1977 1986
+f 1986 2008 2018
+f 2018 2008 2019
+f 2087 2075 2037
+f 2087 2095 2086
+f 2094 1391 1860
+f 1852 1853 2006
+f 1853 2013 2006
+f 929 979 850
+f 1855 1874 1890
+f 2008 2028 2019
+f 1993 2070 2023
+f 1705 1799 1998
+f 1491 2147 206
+f 1851 1856 1855
+f 1895 1890 1874
+f 2038 2019 2028
+f 2038 2048 2037
+f 2019 2038 2037
+f 2048 2067 2087
+f 2037 2048 2087
+f 2087 2067 2095
+f 2095 2149 2122
+f 2149 2148 2122
+f 1308 2005 837
+f 209 1308 1387
+f 1601 2102 1927
+f 254 170 201
+f 1800 1403 1763
+f 1510 1346 1740
+f 870 871 1903
+f 1919 1650 1619
+f 2148 1667 1753
+f 1932 1923 1961
+f 1977 1953 1986
+f 2067 2112 2095
+f 2112 2149 2095
+f 2148 2149 1667
+f 2422 2421 2407
+f 1926 2026 1213
+f 1912 2144 543
+f 2128 1387 2153
+f 1733 1510 1740
+f 990 853 2489
+f 503 1214 803
+f 1921 431 2163
+f 2146 2145 2129
+f 2144 1921 2163
+f 1855 1856 1874
+f 1895 1923 1932
+f 1923 1941 1961
+f 1961 1941 1977
+f 2048 2076 2067
+f 2076 2113 2067
+f 2067 2113 2112
+f 1723 1900 1937
+f 1870 1900 1723
+f 1367 2163 1338
+f 520 1346 1510
+f 1698 1831 1861
+f 1984 1919 2045
+f 1895 1891 1923
+f 2008 1986 2028
+f 1948 1981 1993
+f 1883 1346 520
+f 1883 1814 1346
+f 1930 206 2147
+f 2499 2486 1447
+f 1891 1906 1923
+f 1923 1953 1941
+f 1953 1977 1941
+f 1953 1987 1986
+f 2113 2123 2112
+f 2123 2149 2112
+f 1387 1308 1226
+f 1599 1688 1346
+f 2093 1390 1537
+f 2003 2011 1981
+f 1987 2028 1986
+f 2038 2049 2048
+f 2048 2049 2076
+f 1813 1667 2149
+f 2123 1813 2149
+f 1461 1469 1964
+f 1757 1510 1743
+f 505 1930 1999
+f 2223 1784 1789
+f 1532 1522 1651
+f 1906 1913 1923
+f 1913 1943 1923
+f 1943 1942 1923
+f 1923 1942 1953
+f 1942 1987 1953
+f 1308 1852 2005
+f 2053 1814 1883
+f 1733 1740 1541
+f 2154 1886 1355
+f 1503 1528 1474
+f 1874 1879 1895
+f 1895 1879 1891
+f 2076 2124 2113
+f 2113 2124 2123
+f 1896 1891 1879
+f 1891 1896 1906
+f 1942 1962 1987
+f 1962 2009 2028
+f 1987 1962 2028
+f 2009 2038 2028
+f 2109 2119 2071
+f 1918 1956 1937
+f 1851 1864 1856
+f 1896 1897 1906
+f 1906 1897 1913
+f 1943 1962 1942
+f 2049 2077 2076
+f 2124 2125 2123
+f 1930 2147 1926
+f 1902 1894 1878
+f 482 1510 1757
+f 2129 2137 2120
+f 503 803 2059
+f 1847 1857 1851
+f 1851 1857 1864
+f 2039 2038 2009
+f 2038 2039 2049
+f 2076 2077 2124
+f 2150 1813 2123
+f 482 520 1510
+f 1994 1821 2046
+f 2044 2004 1764
+f 1864 1867 1856
+f 1867 1874 1856
+f 1897 1944 1913
+f 1943 1944 1962
+f 2124 2126 2125
+f 2150 2123 2125
+f 2099 2146 2129
+f 2041 1995 2098
+f 1605 1641 2151
+f 1847 1959 1857
+f 1874 1867 1879
+f 1913 1944 1943
+f 1944 1963 1962
+f 2077 2096 2124
+f 2096 2126 2124
+f 2126 2150 2125
+f 941 1650 1919
+f 2135 2136 209
+f 1884 1886 2014
+f 2049 2029 2077
+f 1388 2127 1389
+f 1389 2127 1566
+f 1930 1926 1995
+f 941 1919 1316
+f 2110 503 430
+f 1867 1880 1879
+f 1879 1880 1896
+f 1897 1907 1944
+f 1963 1978 1962
+f 1962 1978 2009
+f 2039 2029 2049
+f 2077 2078 2096
+f 822 823 827
+f 2166 1668 2150
+f 81 941 1316
+f 2204 2216 2203
+f 2011 2071 2070
+f 1880 1892 1896
+f 1892 1907 1897
+f 1896 1892 1897
+f 1907 1914 1944
+f 1978 2010 2009
+f 2010 2039 2009
+f 1688 1740 1346
+f 1789 1820 1870
+f 2130 1391 2094
+f 1944 1945 1963
+f 2029 2078 2077
+f 1767 2150 2126
+f 1767 2166 2150
+f 803 2022 2467
+f 1503 1927 2102
+f 1914 1954 1944
+f 1944 1954 1945
+f 1963 1970 1978
+f 2078 2105 2096
+f 2105 2126 2096
+f 1965 2011 2003
+f 192 1626 1358
+f 2101 1559 1594
+f 1930 2041 1999
+f 1698 1876 2165
+f 1398 1871 891
+f 2165 1338 1681
+f 1970 2010 1978
+f 2010 2030 2029
+f 2039 2010 2029
+f 2030 2055 2078
+f 2029 2030 2078
+f 1849 1848 2175
+f 1871 1862 891
+f 543 2015 2014
+f 1857 1858 1864
+f 1864 1858 1867
+f 1963 1945 1970
+f 2055 2088 2078
+f 2078 2088 2105
+f 2105 2131 2126
+f 2126 2131 1767
+f 2063 2083 2033
+f 2161 2171 209
+f 2032 2042 2011
+f 1813 2150 1773
+f 1914 1908 1954
+f 1970 1979 2010
+f 2088 2131 2105
+f 2015 543 1876
+f 1694 1692 1048
+f 1395 2207 1859
+f 1395 1393 2207
+f 1730 1784 1736
+f 2500 2466 2470
+f 1709 1701 1757
+f 1945 1979 1970
+f 2030 2050 2055
+f 2350 2317 2286
+f 2154 2155 1886
+f 871 860 1889
+f 2161 209 2136
+f 2497 2463 2493
+f 2190 2204 2203
+f 1800 2179 1404
+f 2477 2469 1385
+f 1385 1715 2477
+f 2128 209 1387
+f 1858 1868 1867
+f 1867 1881 1880
+f 1893 1892 1880
+f 1881 1893 1880
+f 1893 1907 1892
+f 1907 1908 1914
+f 1954 1979 1945
+f 1979 1980 2010
+f 2131 2159 1767
+f 1765 93 339
+f 1761 1877 1405
+f 523 1347 515
+f 1541 2157 1738
+f 2144 2163 1367
+f 1380 1389 1566
+f 2317 2392 2316
+f 1994 2498 1801
+f 1867 1868 1881
+f 1980 2050 2030
+f 2010 1980 2030
+f 2050 2089 2055
+f 2055 2089 2088
+f 2088 2114 2131
+f 1538 1651 1659
+f 2145 2155 2129
+f 2140 29 1928
+f 2370 2033 2025
+f 2252 2239 2240
+f 2239 2252 1862
+f 2392 2391 2316
+f 2469 2501 1385
+f 2477 1715 1710
+f 502 1614 1643
+f 2438 1227 2431
+f 1915 1907 1893
+f 1915 1908 1907
+f 1954 1908 1979
+f 1908 1988 1979
+f 1979 1988 1980
+f 2114 2159 2131
+f 2155 2154 2129
+f 508 1966 2144
+f 872 1756 1626
+f 1710 1715 1505
+f 236 1966 508
+f 2272 2284 1398
+f 2325 2355 2319
+f 1548 2121 1779
+f 1532 1528 1522
+f 1980 2056 2050
+f 2050 2056 2089
+f 2013 2015 2012
+f 1964 2003 1956
+f 2006 2012 1391
+f 1565 1927 1503
+f 2244 2243 2226
+f 5 1715 1385
+f 1858 1848 1868
+f 1915 1946 1908
+f 1946 1988 1908
+f 1980 2020 2056
+f 2115 2159 2114
+f 2092 2083 2063
+f 1398 2284 1687
+f 2162 2155 2145
+f 519 2475 2488
+f 2158 5 1385
+f 5 1505 1715
+f 1692 1694 1505
+f 1988 2020 1980
+f 2115 2169 2159
+f 2169 2168 2159
+f 2083 2082 2072
+f 1316 1984 1983
+f 1488 1619 1650
+f 2083 2072 2033
+f 2361 1210 1233
+f 1933 1946 1915
+f 2056 2079 2089
+f 2088 2115 2114
+f 2099 2091 2082
+f 2162 532 2155
+f 1852 2006 2005
+f 2023 2061 2052
+f 2176 2184 2175
+f 2162 985 532
+f 1909 1893 1881
+f 1909 1915 1893
+f 1988 2040 2020
+f 2040 2056 2020
+f 2089 2079 2088
+f 2088 2079 2115
+f 1782 1444 1882
+f 1216 1215 2320
+f 867 1939 1894
+f 867 903 1939
+f 1372 2398 1379
+f 1863 504 2027
+f 2158 1385 504
+f 1868 1782 1881
+f 1909 1933 1915
+f 2040 1988 1946
+f 1481 2024 1492
+f 2120 2136 2119
+f 1522 1528 1518
+f 1871 1398 1405
+f 1221 1408 1399
+f 1357 5 2158
+f 2179 1800 1763
+f 1868 1865 1782
+f 1882 1881 1782
+f 1882 1909 1881
+f 2040 2057 2056
+f 2106 2079 2056
+f 2057 2106 2056
+f 2106 2132 2079
+f 2132 2115 2079
+f 2115 2132 2169
+f 532 985 597
+f 2092 2100 2082
+f 1210 1221 1399
+f 1399 1233 1210
+f 2130 2002 1517
+f 1849 1865 1868
+f 1933 2040 1946
+f 52 1269 30
+f 1667 1813 1753
+f 1997 1380 1673
+f 940 1008 1088
+f 1947 1994 2046
+f 1882 1916 1909
+f 1924 1933 1909
+f 1533 2040 1933
+f 1533 1534 2040
+f 2058 2040 1534
+f 2058 2057 2040
+f 1238 191 1768
+f 1997 1389 1380
+f 1875 1541 1554
+f 1854 504 1863
+f 1854 2158 504
+f 2396 1275 2406
+f 2426 2443 153
+f 1916 1924 1909
+f 1925 1935 1934
+f 1870 1723 1426
+f 2058 2097 2057
+f 2097 2106 2057
+f 2132 2151 2169
+f 2151 2160 2169
+f 1106 1635 1562
+f 1957 1768 1681
+f 1957 2051 1768
+f 526 535 33
+f 1614 1594 1609
+f 2233 2229 2216
+f 2496 2027 2084
+f 2496 1863 2027
+f 2117 1854 1863
+f 2016 2158 1854
+f 2016 1504 1357
+f 2158 2016 1357
+f 1114 236 1661
+f 2129 2154 2137
+f 2133 2106 2097
+f 2491 1999 2041
+f 2051 1238 1768
+f 2061 2108 2081
+f 2189 2195 2186
+f 2348 2349 2362
+f 1701 192 482
+f 505 1737 1707
+f 2133 2132 2106
+f 2132 2133 2151
+f 2151 2170 2160
+f 502 1661 2162
+f 1998 1389 1997
+f 2297 2352 2329
+f 2352 2364 2329
+f 2394 2414 2364
+f 2352 2394 2364
+f 2402 512 2415
+f 2255 2254 2243
+f 2446 1365 2456
+f 2271 2282 2298
+f 846 2283 2264
+f 2293 2310 2318
+f 2254 2295 2294
+f 2283 2290 2278
+f 2270 2294 2293
+f 2423 2455 2400
+f 2281 2287 2267
+f 2190 2191 2204
+f 2271 2263 2282
+f 2334 2329 2364
+f 2424 2432 2409
+f 2282 2263 2298
+f 1409 1659 1958
+f 2263 2302 2298
+f 2297 2329 2296
+f 1256 446 2346
+f 1958 2502 2478
+f 2437 2399 2444
+f 263 2366 2359
+f 849 827 823
+f 2311 2325 2290
+f 2499 2379 2434
+f 2446 2456 2423
+f 947 2358 2379
+f 2499 947 2379
+f 2205 2195 2212
+f 2245 2237 2227
+f 2245 2256 2237
+f 2256 2263 2271
+f 556 571 2305
+f 1528 2068 1518
+f 2424 2439 2432
+f 2302 2352 2297
+f 1866 2237 826
+f 2248 2242 2211
+f 2334 2364 2363
+f 2235 2244 2226
+f 2255 2295 2254
+f 2329 2324 2296
+f 2439 2447 1973
+f 2329 2334 2324
+f 2409 2432 2414
+f 2293 2318 2276
+f 866 2425 2416
+f 1487 1493 2372
+f 2237 2231 2230
+f 2415 512 17
+f 2035 1236 26
+f 921 2138 688
+f 2491 2482 2462
+f 6 181 197
+f 2481 948 1795
+f 2138 2383 2382
+f 2377 2394 2352
+f 2377 506 2394
+f 2394 506 2402
+f 2401 2402 2415
+f 2394 2402 2401
+f 2318 2326 2276
+f 2439 2457 2432
+f 2298 2302 2297
+f 2244 2249 2243
+f 2404 1100 2382
+f 2238 2245 2227
+f 2245 2257 2256
+f 2257 2263 2256
+f 2324 2334 2328
+f 2257 2289 2263
+f 2289 2302 2263
+f 2236 2231 2250
+f 2138 2382 688
+f 2383 2404 2382
+f 1100 2404 2343
+f 2353 2352 2302
+f 2353 2377 2352
+f 2237 2230 2220
+f 2335 2355 2325
+f 2308 2340 2315
+f 2253 2269 2276
+f 2311 2335 2325
+f 2439 2424 511
+f 2268 2267 2248
+f 2383 413 2404
+f 123 971 832
+f 2234 2243 2269
+f 2225 2213 2234
+f 2219 2213 2225
+f 2195 2196 2212
+f 1544 2418 1549
+f 413 866 2404
+f 2404 866 2416
+f 2416 2417 2404
+f 2404 2417 2343
+f 2415 2409 2401
+f 2196 2219 2212
+f 2268 2248 2218
+f 2206 2214 2197
+f 2417 2332 2343
+f 2343 2332 832
+f 2330 2302 2289
+f 2330 2353 2302
+f 2453 2454 515
+f 2218 2248 2217
+f 2218 2217 2205
+f 2276 2281 2268
+f 2178 2197 2177
+f 2197 2189 2177
+f 2332 2066 832
+f 832 2066 123
+f 2231 2236 2230
+f 669 950 1144
+f 2217 2211 2199
+f 1216 1209 1217
+f 2066 2365 123
+f 2230 2226 2214
+f 2290 2325 2304
+f 2325 2319 2304
+f 2217 2248 2211
+f 2191 2192 2199
+f 510 525 2035
+f 2417 1917 2332
+f 2332 1917 2066
+f 2408 2413 2341
+f 2248 2267 2242
+f 2326 2333 2281
+f 1340 2365 2066
+f 2440 1302 1340
+f 2226 2230 2235
+f 1153 1163 1116
+f 2431 2455 2438
+f 2416 2425 2417
+f 2495 2474 2462
+f 2290 2304 2277
+f 825 2227 1872
+f 151 239 1038
+f 9 151 1038
+f 545 928 2381
+f 2440 2406 1384
+f 928 1596 2381
+f 2186 2188 2185
+f 2456 26 1888
+f 2287 2333 2262
+f 2425 2342 2417
+f 2342 1917 2417
+f 1917 877 2066
+f 2336 1340 2066
+f 2336 2440 1340
+f 2328 2351 2327
+f 825 2238 2227
+f 2351 2368 2327
+f 1222 2388 1211
+f 678 756 734
+f 428 263 1343
+f 2188 2191 2190
+f 2341 2376 2333
+f 2066 877 2336
+f 2290 2277 2278
+f 739 634 592
+f 675 304 14
+f 2384 675 14
+f 2199 2211 2204
+f 2191 2199 2204
+f 2322 2318 2310
+f 2287 2262 2233
+f 2185 2188 2184
+f 2386 2425 845
+f 2384 572 675
+f 1128 123 2365
+f 832 971 2343
+f 2188 2186 2191
+f 2185 2184 2176
+f 2345 1917 2342
+f 2345 877 1917
+f 2336 2406 2440
+f 971 1100 2343
+f 2299 2289 2257
+f 2299 2303 2289
+f 2249 2255 2243
+f 506 513 512
+f 2437 955 1219
+f 1587 2398 1324
+f 877 2396 2336
+f 2336 2396 2406
+f 2463 2479 879
+f 2376 2412 2350
+f 2281 2267 2268
+f 2303 2330 2289
+f 624 635 159
+f 1996 2356 1561
+f 2449 2436 1996
+f 2356 2054 2451
+f 928 2398 1587
+f 2333 2350 2262
+f 2035 26 2456
+f 2346 2342 2425
+f 2346 2345 2342
+f 1544 2380 2418
+f 2412 2392 2350
+f 622 509 1151
+f 2436 2054 1996
+f 545 2451 928
+f 2326 2341 2333
+f 2346 2425 2386
+f 1365 2035 2456
+f 2369 2377 2353
+f 2369 506 2377
+f 2451 900 928
+f 900 2398 928
+f 1235 1888 1244
+f 2337 2345 2346
+f 877 772 2396
+f 772 1275 2396
+f 2432 2446 2414
+f 2294 2295 2310
+f 2369 2330 828
+f 2418 2419 2436
+f 2450 2429 2436
+f 2436 2429 2054
+f 2490 2494 1656
+f 1321 155 2338
+f 1256 2346 2386
+f 2448 877 2345
+f 877 2448 772
+f 2446 2423 2414
+f 2351 2334 2363
+f 2243 2254 2269
+f 2380 2419 2418
+f 2419 2450 2436
+f 2283 2278 2264
+f 822 2197 823
+f 1008 1759 1565
+f 2448 2345 2337
+f 2270 2293 2276
+f 2323 2324 2328
+f 2429 1012 2054
+f 2226 2243 2213
+f 2395 325 772
+f 2370 2367 2380
+f 2054 2435 2451
+f 2435 2397 2451
+f 2451 2397 900
+f 1774 1974 1975
+f 2305 2290 2283
+f 846 2305 2283
+f 2320 1215 2285
+f 2139 2448 2337
+f 2448 2395 772
+f 1232 1231 1216
+f 2272 2285 2284
+f 2367 2371 2380
+f 2371 2405 2380
+f 2380 2405 2419
+f 2419 2429 2450
+f 2429 176 1012
+f 2397 2373 900
+f 2373 2398 900
+f 2373 1379 2398
+f 2372 1500 1508
+f 1133 1303 1142
+f 2252 2273 2272
+f 891 2252 2272
+f 2419 2405 2429
+f 2405 2430 2429
+f 2429 2430 176
+f 2189 2186 2181
+f 2212 2219 2218
+f 2312 2139 2337
+f 2139 2384 2448
+f 2448 2384 2395
+f 899 855 843
+f 2272 2273 2285
+f 2331 2303 2299
+f 176 2435 2054
+f 1012 176 2054
+f 2177 2185 2176
+f 2218 2219 2225
+f 1216 1220 1215
+f 2378 2139 2312
+f 2384 14 2395
+f 2324 2295 2255
+f 2240 2273 2252
+f 2371 2387 2405
+f 2410 2430 2405
+f 2430 2442 176
+f 2435 2344 2397
+f 2397 2344 2373
+f 2456 1888 2455
+f 2242 2267 2233
+f 2233 2262 2229
+f 2378 2384 2139
+f 2323 2310 2295
+f 2323 2322 2310
+f 2240 2274 2273
+f 974 841 990
+f 2490 1447 2486
+f 2387 2410 2405
+f 2442 2141 176
+f 2344 1778 2373
+f 972 1379 2373
+f 1778 972 2373
+f 1379 972 428
+f 1211 2437 1223
+f 1228 1215 1220
+f 702 2378 2312
+f 17 518 2415
+f 1888 26 1244
+f 2324 2323 2295
+f 2305 2311 2290
+f 2307 2285 2273
+f 2274 2307 2273
+f 2307 2320 2285
+f 2369 531 506
+f 2435 2258 2344
+f 2296 2324 2288
+f 1233 1217 2361
+f 2360 2371 2367
+f 2410 2442 2430
+f 176 2141 2258
+f 176 2258 2435
+f 539 2331 66
+f 2350 2392 2317
+f 2268 2225 2253
+f 1508 1500 2371
+f 2360 1508 2371
+f 2371 1500 2387
+f 972 2366 428
+f 1626 1686 1358
+f 1759 1807 1819
+f 2277 2257 2245
+f 2277 2299 2257
+f 1784 2228 1736
+f 2265 2240 1736
+f 2228 2265 1736
+f 2265 2274 2240
+f 1209 2320 2307
+f 2320 1209 1216
+f 1555 1584 1560
+f 2387 1500 2372
+f 2410 2420 2442
+f 2433 972 1778
+f 2433 2366 972
+f 955 522 1225
+f 2339 2307 2274
+f 2372 1493 2387
+f 2411 2420 2410
+f 2420 954 2442
+f 2442 954 2141
+f 2344 2433 1778
+f 2205 2212 2218
+f 2328 2334 2351
+f 2394 2401 2414
+f 2250 2256 2271
+f 2339 1209 2307
+f 2328 2322 2323
+f 866 845 2425
+f 3 316 893
+f 2387 2411 2410
+f 2441 2141 954
+f 2141 2441 2258
+f 2354 2433 2344
+f 2254 2294 2270
+f 2269 2254 2270
+f 863 2305 846
+f 2441 2354 2258
+f 2258 2354 2344
+f 2319 2355 51
+f 2223 2228 1784
+f 1493 2411 2387
+f 1560 2449 1555
+f 2288 2324 2255
+f 825 2251 2238
+f 2251 2245 2238
+f 1299 84 1312
+f 2246 2265 2228
+f 2313 2274 2265
+f 2313 2339 2274
+f 2251 2277 2245
+f 2319 51 2331
+f 891 1862 2252
+f 2443 954 2420
+f 2443 2441 954
+f 511 2447 2439
+f 2242 2233 2211
+f 188 15 814
+f 2443 2426 2441
+f 2426 2354 2441
+f 2306 2403 2433
+f 2433 2403 2366
+f 539 2303 2331
+f 2246 2228 2223
+f 1030 1819 1807
+f 2354 2306 2433
+f 2413 2412 2376
+f 2438 2455 1888
+f 1848 1857 2176
+f 2207 2208 2223
+f 2208 2246 2223
+f 1209 2339 1217
+f 2339 2361 1217
+f 1221 1210 2388
+f 554 109 78
+f 386 1375 95
+f 2327 2326 2318
+f 2179 2182 1393
+f 2182 2208 1393
+f 1393 2208 2207
+f 2361 2399 2388
+f 2388 2399 1211
+f 2306 2354 2426
+f 2403 2359 2366
+f 2214 2226 2213
+f 2268 2253 2276
+f 889 2200 2179
+f 2200 2182 2179
+f 2200 2221 2182
+f 2221 2208 2182
+f 2314 2265 2246
+f 2314 2313 2265
+f 2339 2374 2361
+f 2478 2434 2379
+f 2205 2217 2199
+f 2208 2259 2246
+f 2259 2275 2246
+f 2314 2321 2313
+f 2313 2347 2339
+f 2347 2374 2339
+f 2374 2399 2361
+f 153 154 2426
+f 154 2306 2426
+f 2385 2359 2403
+f 2221 2259 2208
+f 2306 2357 2403
+f 2357 2385 2403
+f 2237 2256 2231
+f 2172 2180 889
+f 2180 2200 889
+f 2200 2201 2221
+f 2246 2291 2314
+f 2374 2444 2399
+f 571 555 2311
+f 2192 2205 2199
+f 2173 2180 2172
+f 2279 2246 2275
+f 2279 2291 2246
+f 2292 2314 2291
+f 2321 2362 2313
+f 2362 2347 2313
+f 2347 2389 2374
+f 2444 955 2437
+f 2292 2291 2279
+f 2452 2444 2374
+f 2054 2356 1996
+f 2338 2306 154
+f 2186 2192 2191
+f 2193 2201 2200
+f 2259 2221 2201
+f 2247 2259 2201
+f 2452 955 2444
+f 2278 2277 2251
+f 2338 2357 2306
+f 2181 2186 2185
+f 2276 2326 2281
+f 2432 2457 2446
+f 2198 2201 2193
+f 2198 2232 2201
+f 2232 2247 2201
+f 2389 2452 2374
+f 2452 1630 955
+f 1403 1749 1444
+f 1555 1996 1561
+f 2357 2427 2385
+f 2385 2428 230
+f 2409 2415 2424
+f 2304 2331 2299
+f 2193 2200 2180
+f 2445 2452 2389
+f 1565 1759 1927
+f 2380 1544 2370
+f 2338 2427 2357
+f 2427 2428 2385
+f 230 222 253
+f 2202 2198 2193
+f 2202 2209 2198
+f 2209 2241 2198
+f 2241 2232 2198
+f 2266 2275 2259
+f 2365 1340 1128
+f 2415 518 2424
+f 2338 170 2427
+f 170 2428 2427
+f 2181 2185 2177
+f 2196 2195 2189
+f 2183 2193 2180
+f 2453 1630 2452
+f 2197 2214 2189
+f 2401 2409 2414
+f 822 2220 2197
+f 1210 2361 2388
+f 2187 2193 2183
+f 2187 2202 2193
+f 2266 2279 2275
+f 2279 2300 2292
+f 2375 2347 2362
+f 2375 2390 2347
+f 2390 2389 2347
+f 2453 2452 2445
+f 1347 1630 2453
+f 1630 1347 522
+f 2220 2206 2197
+f 2262 2350 2286
+f 170 254 2428
+f 2457 1973 2446
+f 1973 1365 2446
+f 2174 2183 2180
+f 2194 2202 2187
+f 2222 2241 2209
+f 2222 2260 2241
+f 2266 2259 2247
+f 2390 2445 2389
+f 2264 2251 825
+f 2363 2368 2351
+f 2326 2393 2341
+f 1855 1850 1851
+f 2210 2209 2202
+f 2210 2222 2209
+f 2261 2260 2222
+f 2280 2279 2266
+f 2280 2300 2279
+f 251 263 2359
+f 2277 2304 2299
+f 2220 2230 2206
+f 2202 2194 2210
+f 2213 2243 2234
+f 2328 2327 2322
+f 2294 2310 2293
+f 2214 2196 2189
+f 2196 2213 2219
+f 2224 2222 2210
+f 2421 2390 2375
+f 2206 2230 2214
+f 2194 2203 2210
+f 2224 2261 2222
+f 2421 2445 2390
+f 2322 2327 2318
+f 2393 2408 2341
+f 1365 1973 510
+f 2216 2210 2203
+f 2216 2224 2210
+f 2266 2308 2280
+f 2280 2308 2300
+f 2407 2421 2375
+f 2175 2183 2174
+f 2194 2190 2203
+f 2454 2445 2421
+f 522 1347 523
+f 2456 2455 2423
+f 823 2197 2178
+f 2281 2333 2287
+f 2188 2187 2183
+f 2188 2190 2194
+f 2187 2188 2194
+f 2308 2315 2300
+f 2407 2375 2362
+f 2443 2420 2503
+f 2420 2411 2503
+f 2411 1493 2503
+f 1493 1487 2503
+f 1487 1318 2503
+f 1318 1320 2503
+f 1320 2443 2503
diff --git a/js/spa/public/static/img/Duck.glb b/js/spa/public/static/img/Duck.glb
new file mode 100644
index 0000000000..217170d2bd
Binary files /dev/null and b/js/spa/public/static/img/Duck.glb differ
diff --git a/js/spa/public/static/img/api-logo.svg b/js/spa/public/static/img/api-logo.svg
new file mode 100644
index 0000000000..bce49a58f0
--- /dev/null
+++ b/js/spa/public/static/img/api-logo.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/js/spa/public/static/img/camera.svg b/js/spa/public/static/img/camera.svg
new file mode 100644
index 0000000000..b46daebb74
--- /dev/null
+++ b/js/spa/public/static/img/camera.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/js/spa/public/static/img/clear.svg b/js/spa/public/static/img/clear.svg
new file mode 100644
index 0000000000..bea0330748
--- /dev/null
+++ b/js/spa/public/static/img/clear.svg
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/spa/public/static/img/edit.svg b/js/spa/public/static/img/edit.svg
new file mode 100644
index 0000000000..07fbe15983
--- /dev/null
+++ b/js/spa/public/static/img/edit.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
diff --git a/js/spa/public/static/img/javascript.svg b/js/spa/public/static/img/javascript.svg
new file mode 100644
index 0000000000..426b76c2fb
--- /dev/null
+++ b/js/spa/public/static/img/javascript.svg
@@ -0,0 +1,16 @@
+
+
+
+
diff --git a/js/app/test/files/gradio-logo.svg b/js/spa/public/static/img/logo.svg
similarity index 100%
rename from js/app/test/files/gradio-logo.svg
rename to js/spa/public/static/img/logo.svg
diff --git a/js/spa/public/static/img/logo_error.svg b/js/spa/public/static/img/logo_error.svg
new file mode 100644
index 0000000000..5662b67552
--- /dev/null
+++ b/js/spa/public/static/img/logo_error.svg
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ERROR
+
+
+
diff --git a/js/spa/public/static/img/python.svg b/js/spa/public/static/img/python.svg
new file mode 100644
index 0000000000..ae0065b857
--- /dev/null
+++ b/js/spa/public/static/img/python.svg
@@ -0,0 +1,20 @@
+
+
+
+
diff --git a/js/spa/public/static/img/undo-solid.svg b/js/spa/public/static/img/undo-solid.svg
new file mode 100644
index 0000000000..bbbc9670bb
--- /dev/null
+++ b/js/spa/public/static/img/undo-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/js/app/src/Index.svelte b/js/spa/src/Index.svelte
similarity index 96%
rename from js/app/src/Index.svelte
rename to js/spa/src/Index.svelte
index 4a33e8d06d..73b660abd2 100644
--- a/js/app/src/Index.svelte
+++ b/js/spa/src/Index.svelte
@@ -1,9 +1,10 @@