From d30c3120b62836dbf0b9f45b231861f83a3a60b7 Mon Sep 17 00:00:00 2001 From: Mickael Date: Mon, 13 Jan 2025 15:41:04 +1100 Subject: [PATCH] feature (plugins): expand and migrate plugin - #803 * chore (dockerfile): cleanup dockerfile * feature (plugin): extend plugin interface * chore (docker): setup new Dockerfile * chore (dockerfile): update dockerfile --- config/mime.json | 4 +- docker/Dockerfile | 74 +- public/assets/boot/ctrl_boot_frontoffice.js | 17 +- public/assets/helpers/loader_wasm.js | 282 +- public/assets/lib/vendor/three/3DMLoader.js | 1772 ----- public/assets/lib/vendor/three/EXRLoader.js | 2310 ------ public/assets/lib/vendor/three/README.md | 9 - .../lib/vendor/three/rhino3dm/rhino3dm.d.ts | 6961 ----------------- .../lib/vendor/three/rhino3dm/rhino3dm.js | 21 - .../lib/vendor/three/rhino3dm/rhino3dm.min.js | 1 - .../vendor/three/rhino3dm/rhino3dm.module.js | 16 - .../three/rhino3dm/rhino3dm.module.min.js | 1 - .../lib/vendor/three/rhino3dm/rhino3dm.wasm | Bin 2535180 -> 0 bytes public/assets/model/plugin.js | 28 + .../assets/pages/viewerpage/application_3d.js | 40 +- .../pages/viewerpage/application_3d/init.js | 134 +- .../viewerpage/application_3d/scene_cube.js | 2 +- .../viewerpage/application_3d/scene_light.js | 2 +- .../viewerpage/application_3d/toolbar.js | 15 +- .../pages/viewerpage/application_table.js | 179 +- .../viewerpage/application_table/Makefile | 2 - .../viewerpage/application_table/loader.js | 24 - .../application_table/loader_dbase.js | 26 - .../application_table/loader_symbol.wasm | Bin 15659 -> 0 bytes public/assets/pages/viewerpage/mimetype.js | 12 +- server/common/constants.go | 3 + server/ctrl/plugin.go | 57 + server/model/plugin.go | 115 + server/plugin/plg_application_3d/Makefile | 6 + server/plugin/plg_application_3d/index_fbx.js | 18 + .../plugin/plg_application_3d/index_gltf.js | 19 + server/plugin/plg_application_3d/index_obj.js | 33 + server/plugin/plg_application_3d/index_stl.js | 25 + server/plugin/plg_application_3d/index_svg.js | 76 + .../plugin/plg_application_3d/manifest.json | 36 + .../plg_application_3d/vendor}/FBXLoader.js | 2 +- .../plg_application_3d/vendor}/GLTFLoader.js | 2 +- .../plg_application_3d/vendor}/OBJLoader.js | 2 +- .../plg_application_3d/vendor}/STLLoader.js | 2 +- .../plg_application_3d/vendor}/SVGLoader.js | 2 +- .../vendor}/curves/NURBSCurve.js | 2 +- .../vendor}/curves/NURBSUtils.js | 2 +- .../vendor}/libs/fflate.module.js | 0 .../vendor}/utils/BufferGeometryUtils.js | 2 +- server/plugin/plg_application_dev/Makefile | 15 + .../plugin/plg_application_dev/index.js | 4 +- .../plg_application_dev}/loader_symbol.c | 3 +- .../plugin/plg_application_dev/manifest.json | 11 + server/routes.go | 2 + 49 files changed, 901 insertions(+), 11470 deletions(-) delete mode 100644 public/assets/lib/vendor/three/3DMLoader.js delete mode 100644 public/assets/lib/vendor/three/EXRLoader.js delete mode 100644 public/assets/lib/vendor/three/README.md delete mode 100644 public/assets/lib/vendor/three/rhino3dm/rhino3dm.d.ts delete mode 100644 public/assets/lib/vendor/three/rhino3dm/rhino3dm.js delete mode 100644 public/assets/lib/vendor/three/rhino3dm/rhino3dm.min.js delete mode 100644 public/assets/lib/vendor/three/rhino3dm/rhino3dm.module.js delete mode 100644 public/assets/lib/vendor/three/rhino3dm/rhino3dm.module.min.js delete mode 100644 public/assets/lib/vendor/three/rhino3dm/rhino3dm.wasm create mode 100644 public/assets/model/plugin.js delete mode 100644 public/assets/pages/viewerpage/application_table/Makefile delete mode 100644 public/assets/pages/viewerpage/application_table/loader.js delete mode 100644 public/assets/pages/viewerpage/application_table/loader_dbase.js delete mode 100755 public/assets/pages/viewerpage/application_table/loader_symbol.wasm create mode 100644 server/ctrl/plugin.go create mode 100644 server/model/plugin.go create mode 100644 server/plugin/plg_application_3d/Makefile create mode 100644 server/plugin/plg_application_3d/index_fbx.js create mode 100644 server/plugin/plg_application_3d/index_gltf.js create mode 100644 server/plugin/plg_application_3d/index_obj.js create mode 100644 server/plugin/plg_application_3d/index_stl.js create mode 100644 server/plugin/plg_application_3d/index_svg.js create mode 100644 server/plugin/plg_application_3d/manifest.json rename {public/assets/lib/vendor/three => server/plugin/plg_application_3d/vendor}/FBXLoader.js (99%) rename {public/assets/lib/vendor/three => server/plugin/plg_application_3d/vendor}/GLTFLoader.js (99%) rename {public/assets/lib/vendor/three => server/plugin/plg_application_3d/vendor}/OBJLoader.js (99%) rename {public/assets/lib/vendor/three => server/plugin/plg_application_3d/vendor}/STLLoader.js (99%) rename {public/assets/lib/vendor/three => server/plugin/plg_application_3d/vendor}/SVGLoader.js (99%) rename {public/assets/lib/vendor/three => server/plugin/plg_application_3d/vendor}/curves/NURBSCurve.js (96%) rename {public/assets/lib/vendor/three => server/plugin/plg_application_3d/vendor}/curves/NURBSUtils.js (99%) rename {public/assets/lib/vendor/three => server/plugin/plg_application_3d/vendor}/libs/fflate.module.js (100%) rename {public/assets/lib/vendor/three => server/plugin/plg_application_3d/vendor}/utils/BufferGeometryUtils.js (99%) create mode 100644 server/plugin/plg_application_dev/Makefile rename public/assets/pages/viewerpage/application_table/loader_symbol.js => server/plugin/plg_application_dev/index.js (91%) rename {public/assets/pages/viewerpage/application_table => server/plugin/plg_application_dev}/loader_symbol.c (96%) create mode 100644 server/plugin/plg_application_dev/manifest.json diff --git a/config/mime.json b/config/mime.json index df46627a..739e1b58 100644 --- a/config/mime.json +++ b/config/mime.json @@ -24,6 +24,7 @@ "crw": "image/x-canon-crw", "css": "text/css", "csv": "text/csv", + "dae": "model/vnd.collada+xml", "dbf": "application/dbf", "dcm": "image/dicom", "dcr": "image/x-kodak-dcr", @@ -54,7 +55,8 @@ "geojson": "application/geo+json", "gif": "image/gif", "gltf": "model/gltf+json", - "glb": "model/gtlt-binary", + "glb": "model/gltf-binary", + "gpx": "application/gpx+xml", "gz": "application/x-gzip", "heic": "image/heic", "heif": "image/heic", diff --git a/docker/Dockerfile b/docker/Dockerfile index cab811c1..42756eb6 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,74 +1,48 @@ # STEP1: CLONE THE CODE -FROM alpine:latest as builder_prepare +FROM alpine/git as builder_prepare WORKDIR /home/ ARG GIT_REPO=https://github.com/mickael-kerjean/filestash -ARG GIT_REF=master -RUN apk add --no-cache git && \ - git init filestash && \ - git -C filestash remote add origin ${GIT_REPO} && \ - git -C filestash fetch --depth 1 origin ${GIT_REF} && \ - git -C filestash checkout FETCH_HEAD +ARG GIT_BRANCH=master +RUN git clone --depth 1 --single-branch --branch ${GIT_BRANCH} ${GIT_REPO} -# STEP2: BUILD THE FRONTEND +# STEP2: BUILD FRONTEND FROM node:18-alpine AS builder_frontend -WORKDIR /home/ -COPY --from=builder_prepare /home/filestash/ ./ +WORKDIR /home/filestash/ +COPY --from=builder_prepare /home/filestash . RUN apk add make git gzip brotli && \ npm install --legacy-peer-deps && \ make build_frontend && \ cd public && make compress -# STEP3: BUILD THE BACKEND +# STEP3: BUILD BACKEND FROM golang:1.23-bookworm AS builder_backend -WORKDIR /home/ -COPY --from=builder_frontend /home/ ./ +WORKDIR /home/filestash/ +COPY --from=builder_frontend /home/filestash/ . RUN apt-get update > /dev/null && \ - apt-get install -y libvips-dev curl make > /dev/null 2>&1 && \ - apt-get install -y libjpeg-dev libtiff-dev libpng-dev libwebp-dev libraw-dev libheif-dev libgif-dev && \ + apt-get install -y curl make > /dev/null 2>&1 && \ + apt-get install -y libjpeg-dev libtiff-dev libpng-dev libwebp-dev libraw-dev libheif-dev libgif-dev libvips-dev > /dev/null 2>&1 && \ make build_init && \ make build_backend && \ mkdir -p ./dist/data/state/config/ && \ cp config/config.json ./dist/data/state/config/config.json -# STEP4: Create the prod image from the build +# STEP4: BUILD PLUGINS +FROM emscripten/emsdk AS builder_final +WORKDIR /home/filestash/ +COPY --from=builder_backend /home/filestash/ . +RUN mkdir -p /home/filestash/dist/data/state/plugins && \ + cd /home/filestash/server/plugin/plg_application_dev/ && make && \ + cd /home/filestash/server/plugin/plg_application_3d/ && make + +# STEP5: BUILD PROD IMAGE FROM debian:stable-slim MAINTAINER mickael@kerjean.me -COPY --from=builder_backend /home/dist/ /app/ -WORKDIR "/app" +WORKDIR /app/ +COPY --from=builder_final /home/filestash/dist/ . RUN apt-get update > /dev/null && \ apt-get install -y --no-install-recommends apt-utils && \ - apt-get install -y curl emacs-nox ffmpeg zip poppler-utils > /dev/null && \ - # org-mode: html export - curl https://raw.githubusercontent.com/mickael-kerjean/filestash/master/server/.assets/emacs/htmlize.el > /usr/share/emacs/site-lisp/htmlize.el && \ - # org-mode: markdown export - curl https://raw.githubusercontent.com/mickael-kerjean/filestash/master/server/.assets/emacs/ox-gfm.el > /usr/share/emacs/site-lisp/ox-gfm.el && \ - # org-mode: pdf export (with a light latex distribution) - cd && apt-get install -y wget perl > /dev/null && \ - export CTAN_REPO="http://mirror.las.iastate.edu/tex-archive/systems/texlive/tlnet" && \ - curl -sL "https://yihui.name/gh/tinytex/tools/install-unx.sh" | sh && \ - mv ~/.TinyTeX /usr/share/tinytex && \ - /usr/share/tinytex/bin/$(uname -m)-linux/tlmgr install wasy && \ - /usr/share/tinytex/bin/$(uname -m)-linux/tlmgr install ulem && \ - /usr/share/tinytex/bin/$(uname -m)-linux/tlmgr install marvosym && \ - /usr/share/tinytex/bin/$(uname -m)-linux/tlmgr install wasysym && \ - /usr/share/tinytex/bin/$(uname -m)-linux/tlmgr install xcolor && \ - /usr/share/tinytex/bin/$(uname -m)-linux/tlmgr install listings && \ - /usr/share/tinytex/bin/$(uname -m)-linux/tlmgr install parskip && \ - /usr/share/tinytex/bin/$(uname -m)-linux/tlmgr install float && \ - /usr/share/tinytex/bin/$(uname -m)-linux/tlmgr install wrapfig && \ - /usr/share/tinytex/bin/$(uname -m)-linux/tlmgr install sectsty && \ - /usr/share/tinytex/bin/$(uname -m)-linux/tlmgr install capt-of && \ - /usr/share/tinytex/bin/$(uname -m)-linux/tlmgr install epstopdf-pkg && \ - /usr/share/tinytex/bin/$(uname -m)-linux/tlmgr install cm-super && \ - ln -s /usr/share/tinytex/bin/$(uname -m)-linux/pdflatex /usr/local/bin/pdflatex && \ - apt-get purge -y --auto-remove perl wget && \ - # Cleanup - find /usr/share/ -name 'doc' | xargs rm -rf && \ - find /usr/share/emacs -name '*.pbm' | xargs rm -f && \ - find /usr/share/emacs -name '*.png' | xargs rm -f && \ - find /usr/share/emacs -name '*.xpm' | xargs rm -f - -RUN useradd filestash && \ + apt-get install -y curl ffmpeg libjpeg-dev libtiff-dev libpng-dev libwebp-dev libraw-dev libheif-dev libgif-dev && \ + useradd filestash && \ chown -R filestash:filestash /app/ && \ find /app/data/ -type d -exec chmod 770 {} \; && \ find /app/data/ -type f -exec chmod 760 {} \; && \ diff --git a/public/assets/boot/ctrl_boot_frontoffice.js b/public/assets/boot/ctrl_boot_frontoffice.js index 7bc5ccd2..fd417c16 100644 --- a/public/assets/boot/ctrl_boot_frontoffice.js +++ b/public/assets/boot/ctrl_boot_frontoffice.js @@ -2,28 +2,27 @@ import { toHref } from "../lib/skeleton/router.js"; import { loadJS } from "../helpers/loader.js"; import { init as setup_translation } from "../locales/index.js"; import { init as setup_config } from "../model/config.js"; +import { init as setup_plugin } from "../model/plugin.js"; import { init as setup_chromecast } from "../model/chromecast.js"; import { report } from "../helpers/log.js"; import { $error } from "./common.js"; export default async function main() { try { - await Promise.all([ // procedure with no outside dependencies - setup_config(), + await Promise.all([ + setup_config().then(() => Promise.all([ + setup_chromecast(), + setup_title(), + verify_origin(), + ])), setup_translation(), setup_xdg_open(), setup_device(), setup_blue_death_screen(), setup_history(), setup_polyfill(), + setup_plugin(), ]); - - await Promise.all([ // procedure with dependency on config - setup_chromecast(), - setup_title(), - verify_origin(), - ]); - window.dispatchEvent(new window.Event("pagechange")); } catch (err) { console.error(err); diff --git a/public/assets/helpers/loader_wasm.js b/public/assets/helpers/loader_wasm.js index 768f2712..8a859c53 100644 --- a/public/assets/helpers/loader_wasm.js +++ b/public/assets/helpers/loader_wasm.js @@ -1,4 +1,4 @@ -export default async function(baseURL, path) { +export default async function(baseURL, path, opts = {}) { const wasi = new Wasi(); const wasm = await WebAssembly.instantiateStreaming( fetch(new URL(path, baseURL)), { @@ -8,6 +8,7 @@ export default async function(baseURL, path) { env: { ...wasi, ...syscalls, + ...javascripts, }, }, ); @@ -17,28 +18,40 @@ export default async function(baseURL, path) { const FS = {}; let nextFd = 0; -writeFS(new Uint8Array(), 0); // stdin -writeFS(new Uint8Array(), 1); // stdout -writeFS(new Uint8Array(), 2); // stderr +writeFS(new Uint8Array(0), "/dev/stdin"); +writeFS(new Uint8Array(1024*8), "/dev/stdout"); +writeFS(new Uint8Array(1024*8), "/dev/stderr"); if (nextFd !== 3) throw new Error("Unexpected next fd"); -export function writeFS(buffer, fd) { - if (fd === undefined) fd = nextFd; - else if (!(buffer instanceof Uint8Array)) throw new Error("can only write Uint8Array"); - - FS[fd] = { +export function writeFS(buffer, path = "") { + if (!(buffer instanceof Uint8Array)) throw new Error("can only write Uint8Array"); + FS[nextFd] = { buffer, position: 0, + path, }; nextFd += 1; return nextFd - 1; } export function readFS(fd) { - if (fd < 3) throw new Error("cannot read from stdin, stdout or stderr"); const file = FS[fd]; if (!file) throw new Error("file does not exist"); - return file.buffer; + + let end = file.buffer.length; + while (end > 0 && file.buffer[end - 1] === 0) end--; + return file.buffer.subarray(0, end); +} + +function getFile(path) { + const allFds = Object.keys(FS); + for (let i=allFds.length - 1; i>0; i--) { + if (FS[allFds[i]].path === path) { + console.log(`fileopen fd=${i} path=${path}`); + return FS[allFds[i]]; + } + } + throw new Error("cannot get file"); } export const syscalls = { @@ -55,6 +68,64 @@ export const syscalls = { } return 0; }, + __syscall_unlinkat: (fd) => { + console.log(`Stubbed __syscall_unlinkat called with fd=${fd}`); + return -1; + }, + __syscall_rmdir: (fd) => { + console.log(`Stubbed __syscall_rmdir called with fd=${fd}`); + return -1; + }, + __syscall_fstat64: (pathPtr, bufPtr) => { + console.log(`Stubbed __syscall_stat64 called with pathPtr=${pathPtr}, bufPtr=${bufPtr}`); + return 0; // Return 0 for a successful call + }, + __syscall_newfstatat: (pathPtr, bufPtr) => { + console.log(`Stubbed __syscall_stat64 called with pathPtr=${pathPtr}, bufPtr=${bufPtr}`); + return 0; // Return 0 for a successful call + }, + __syscall_lstat64: () => { + console.log(`Stubbed __syscall_lstat64 called`); + return -1; + }, + __assert_fail: () => { + console.log(`Stubbed __assert_fail called`); + return -1; + }, + __syscall_ftruncate64: () => { + console.log(`Stubbed __syscall_ftruncate64`); + return -1; + }, + __syscall_renameat: () => { + console.log(`Stubbed __syscall_renameat`); + return -1; + }, +}; + +const javascripts = { + _tzset_js: () => { + console.log("Initializing time zone settings (stub)"); + }, + _abort_js: () => { + console.error("WebAssembly module called _abort_js!"); + throw new Error("_abort_js was called"); + }, + _mktime_js: () => { + console.error("WebAssembly module called _abort_js!"); + throw new Error("_abort_js was called"); + }, + _localtime_js: () => { + console.error("WebAssembly module called _localtime_js!"); + throw new Error("_localtime_js was called"); + }, + emscripten_date_now: () => { + console.error("WebAssembly module called emscripten_date_now!"); + throw new Error("_localtime_js was called"); + }, + emscripten_get_now: () => { + console.error("WebAssembly module called emscripten_get_now!"); + throw new Error("_localtime_js was called"); + }, }; export class Wasi { @@ -65,6 +136,16 @@ export class Wasi { this.fd_write = this.fd_write.bind(this); this.fd_seek = this.fd_seek.bind(this); this.fd_close = this.fd_close.bind(this); + + this._emscripten_memcpy_js = this._emscripten_memcpy_js.bind(this); + this.emscripten_resize_heap = this.emscripten_resize_heap.bind(this); + this.environ_sizes_get = this.environ_sizes_get.bind(this); + this.environ_get = this.environ_get.bind(this); + this.clock_time_get = this.clock_time_get.bind(this); + this.__syscall_openat = this.__syscall_openat.bind(this); + this.__syscall_stat64 = this.__syscall_stat64.bind(this); + this.__cxa_throw = this.__cxa_throw.bind(this); + this.random_get = this.random_get.bind(this); } set instance(val) { @@ -72,33 +153,36 @@ export class Wasi { } fd_write(fd, iovs, iovs_len, nwritten) { - if (!FS[fd]) { - console.error(`Invalid fd: ${fd}`); - return -1; - } - let output = FS[fd].buffer; + if (!FS[fd]) throw new Error(`File descriptor ${fd} does not exist.`); + const ioVecArray = new Uint32Array(this.#instance.exports.memory.buffer, iovs, iovs_len * 2); const memory = new Uint8Array(this.#instance.exports.memory.buffer); let totalBytesWritten = 0; - for (let i = 0; i < iovs_len * 2; i += 2) { - const sub = memory.subarray( - (ioVecArray[i] || 0), - (ioVecArray[i] || 0) + (ioVecArray[i+1] || 0), - ); - const tmp = new Uint8Array(output.byteLength + sub.byteLength); - tmp.set(output, 0); - tmp.set(sub, output.byteLength); - output = tmp; - totalBytesWritten += ioVecArray[i+1] || 0; - } - const dataView = new DataView(this.#instance.exports.memory.buffer); - dataView.setUint32(nwritten, totalBytesWritten, true); - FS[fd].buffer = output; - if (fd < 3 && fd >= 0) { - const msg = fd === 1 ? "stdout" : fd === 2 ? "stderr" : "stdxx"; - console.log(msg + ": " + (new TextDecoder()).decode(output)); - FS[fd].buffer = new ArrayBuffer(0); + for (let i = 0; i < iovs_len * 2; i += 2) { + const offset = ioVecArray[i]; + const length = ioVecArray[i + 1]; + while (FS[fd].buffer.byteLength - FS[fd].position < length) { + const newBuffer = new Uint8Array(FS[fd].buffer.byteLength + 1024 * 1024 * 5); + newBuffer.set(FS[fd].buffer, 0); + FS[fd].buffer = newBuffer; + } + FS[fd].buffer.set( + memory.subarray(offset, offset + length), + FS[fd].position + ); + FS[fd].position += length; + totalBytesWritten += length; + } + new DataView(this.#instance.exports.memory.buffer).setUint32( + nwritten, + totalBytesWritten, + true, + ); + if (fd === 1 || fd === 2) { + let msg = fd === 1? "stdout: " : "stderr: "; + msg += new TextDecoder().decode(readFS(fd)); + FS[fd] = { buffer: new Uint8Array(0), position: 0, path: "" }; } return 0; } @@ -130,9 +214,11 @@ export class Wasi { file.position += bytesToRead; totalBytesRead += bytesToRead; } - - const dataView = new DataView(this.#instance.exports.memory.buffer); - dataView.setUint32(nread, totalBytesRead, true); + new DataView(this.#instance.exports.memory.buffer).setUint32( + nread, + totalBytesRead, + true, + ); return 0; } @@ -169,4 +255,126 @@ export class Wasi { } return 0; } + + _emscripten_memcpy_js(dest, src, num) { + const memory = new Uint8Array(this.#instance.exports.memory.buffer); + memory.set(memory.subarray(src, src + num), dest); + return dest; + } + + emscripten_resize_heap() { + console.log("Stubbed emscripten_resize_heap called"); + throw new Error("Heap resize not supported"); + } + + environ_sizes_get() { + console.log(`Stubbed environ_sizes_get called`); + return 0; + } + + environ_get() { + console.log(`Stubbed environ_get called`); + return 0; + } + + clock_time_get() { + console.log(`Stubbed clock_time_get called`); + return -1; + } + + __syscall_openat(dirFd, pathPtr, flags, mode) { + console.debug(`openat called with dirFd=${dirFd}, pathPtr=${pathPtr}, flags=${flags}, mode=${mode}`); + const memory = new Uint8Array(this.#instance.exports.memory.buffer); + let path = ""; + for (let i = pathPtr; memory[i] !== 0; i++) { + path += String.fromCharCode(memory[i]); + } + const allFds = Object.keys(FS); + for (let i=allFds.length - 1; i>0; i--) { + if (FS[allFds[i]].path === path) { + console.log(`fileopen fd=${i} path=${path}`); + return i; + } + } + return -1; + } + + __syscall_stat64(pathPtr, buf) { + console.log(`stat64`); + const memory = new Uint8Array(this.#instance.exports.memory.buffer); + let path = ""; + for (let i = pathPtr; memory[i] !== 0; i++) { + path += String.fromCharCode(memory[i]); + } + const file = getFile(path); + const HEAP32 = new Int32Array(this.#instance.exports.memory.buffer); + const HEAPU32 = new Uint32Array(this.#instance.exports.memory.buffer); + + const tempI64 = [0, 0]; + const tempDouble = 0; + + // Dummy stat data + const stat = { + dev: 1, + ino: 42, + mode: 0o100644, + nlink: 1, + uid: 1000, + gid: 1000, + rdev: 0, + size: file.buffer.byteLength, + blksize: 4096, + blocks: 256, + atime: new Date(), + mtime: new Date(), + ctime: new Date(), + }; + // Fill the buffer + HEAP32[(buf >> 2)] = stat.dev; + HEAP32[((buf + 4) >> 2)] = stat.mode; + HEAPU32[((buf + 8) >> 2)] = stat.nlink; + HEAP32[((buf + 12) >> 2)] = stat.uid; + HEAP32[((buf + 16) >> 2)] = stat.gid; + HEAP32[((buf + 20) >> 2)] = stat.rdev; + HEAP32[((buf + 24) >> 2)] = stat.size & 0xFFFFFFFF; // Lower 32 bits + HEAP32[((buf + 28) >> 2)] = Math.floor(stat.size / 4294967296); // Upper 32 bits + HEAP32[((buf + 32) >> 2)] = stat.blksize; + HEAP32[((buf + 36) >> 2)] = stat.blocks; + + // Write timestamps + const atimeSeconds = Math.floor(stat.atime.getTime() / 1000); + const atimeNanos = (stat.atime.getTime() % 1000) * 1e6; + HEAP32[((buf + 40) >> 2)] = atimeSeconds; + HEAP32[((buf + 44) >> 2)] = 0; // Upper 32 bits of atime + HEAP32[((buf + 48) >> 2)] = atimeNanos; + + const mtimeSeconds = Math.floor(stat.mtime.getTime() / 1000); + const mtimeNanos = (stat.mtime.getTime() % 1000) * 1e6; + HEAP32[((buf + 56) >> 2)] = mtimeSeconds; + HEAP32[((buf + 60) >> 2)] = 0; // Upper 32 bits of mtime + HEAP32[((buf + 64) >> 2)] = mtimeNanos; + + const ctimeSeconds = Math.floor(stat.ctime.getTime() / 1000); + const ctimeNanos = (stat.ctime.getTime() % 1000) * 1e6; + HEAP32[((buf + 72) >> 2)] = ctimeSeconds; + HEAP32[((buf + 76) >> 2)] = 0; // Upper 32 bits of ctime + HEAP32[((buf + 80) >> 2)] = ctimeNanos; + + // Dummy inode + HEAP32[((buf + 88) >> 2)] = stat.ino & 0xFFFFFFFF; // Lower 32 bits + HEAP32[((buf + 92) >> 2)] = Math.floor(stat.ino / 4294967296); // Upper 32 bits + + console.debug(`Stubbed __syscall_stat64 called with pathPtr=${pathPtr}, bufPtr=${buf}`); + return 0; + } + + __cxa_throw(ptr, type, destructor) { + console.error(`Exception thrown at ptr=${ptr}, type=${type}, destructor=${destructor}`); + throw new Error("WebAssembly exception"); + } + + random_get() { + console.log(`Stubbed random_get called`); + return -1; + } } diff --git a/public/assets/lib/vendor/three/3DMLoader.js b/public/assets/lib/vendor/three/3DMLoader.js deleted file mode 100644 index 2c7cd4c2..00000000 --- a/public/assets/lib/vendor/three/3DMLoader.js +++ /dev/null @@ -1,1772 +0,0 @@ -// @ts-nocheck -import { - BufferGeometryLoader, - FileLoader, - Loader, - Object3D, - MeshStandardMaterial, - MeshPhysicalMaterial, - Mesh, - Color, - Points, - PointsMaterial, - Line, - LineBasicMaterial, - Matrix4, - DirectionalLight, - PointLight, - SpotLight, - RectAreaLight, - Sprite, - SpriteMaterial, - CanvasTexture, - LinearFilter, - ClampToEdgeWrapping, - RepeatWrapping, - TextureLoader, - DoubleSide -} from './three.module.js'; - -import { EXRLoader } from './EXRLoader.js'; - -const _taskCache = new WeakMap(); - -class Rhino3dmLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.libraryPath = ''; - this.libraryPending = null; - this.libraryBinary = null; - this.libraryConfig = {}; - - this.url = ''; - - this.workerLimit = 4; - this.workerPool = []; - this.workerNextTaskID = 1; - this.workerSourceURL = ''; - this.workerConfig = {}; - - this.materials = []; - this.warnings = []; - - } - - setLibraryPath( path ) { - - this.libraryPath = path; - - return this; - - } - - setWorkerLimit( workerLimit ) { - - this.workerLimit = workerLimit; - - return this; - - } - - load( url, onLoad, onProgress, onError ) { - - const loader = new FileLoader( this.manager ); - - loader.setPath( this.path ); - loader.setResponseType( 'arraybuffer' ); - loader.setRequestHeader( this.requestHeader ); - - this.url = url; - - loader.load( url, ( buffer ) => { - - // Check for an existing task using this buffer. A transferred buffer cannot be transferred - // again from this thread. - if ( _taskCache.has( buffer ) ) { - - const cachedTask = _taskCache.get( buffer ); - - return cachedTask.promise.then( onLoad ).catch( onError ); - - } - - this.decodeObjects( buffer, url ) - .then( result => { - - result.userData.warnings = this.warnings; - onLoad( result ); - - } ) - .catch( e => onError( e ) ); - - }, onProgress, onError ); - - } - - debug() { - - console.log( 'Task load: ', this.workerPool.map( ( worker ) => worker._taskLoad ) ); - - } - - decodeObjects( buffer, url ) { - - let worker; - let taskID; - - const taskCost = buffer.byteLength; - - const objectPending = this._getWorker( taskCost ) - .then( ( _worker ) => { - - worker = _worker; - taskID = this.workerNextTaskID ++; - - return new Promise( ( resolve, reject ) => { - - worker._callbacks[ taskID ] = { resolve, reject }; - - worker.postMessage( { type: 'decode', id: taskID, buffer }, [ buffer ] ); - - // this.debug(); - - } ); - - } ) - .then( ( message ) => this._createGeometry( message.data ) ) - .catch( e => { - - throw e; - - } ); - - // Remove task from the task list. - // Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416) - objectPending - .catch( () => true ) - .then( () => { - - if ( worker && taskID ) { - - this._releaseTask( worker, taskID ); - - //this.debug(); - - } - - } ); - - // Cache the task result. - _taskCache.set( buffer, { - - url: url, - promise: objectPending - - } ); - - return objectPending; - - } - - parse( data, onLoad, onError ) { - - this.decodeObjects( data, '' ) - .then( result => { - - result.userData.warnings = this.warnings; - onLoad( result ); - - } ) - .catch( e => onError( e ) ); - - } - - _compareMaterials( material ) { - - const mat = {}; - mat.name = material.name; - mat.color = {}; - mat.color.r = material.color.r; - mat.color.g = material.color.g; - mat.color.b = material.color.b; - mat.type = material.type; - - const json = JSON.stringify( mat ); - - for ( let i = 0; i < this.materials.length; i ++ ) { - - const m = this.materials[ i ]; - const _mat = {}; - _mat.name = m.name; - _mat.color = {}; - _mat.color.r = m.color.r; - _mat.color.g = m.color.g; - _mat.color.b = m.color.b; - _mat.type = m.type; - - if ( JSON.stringify( _mat ) === json ) { - - return m; - - } - - } - - this.materials.push( material ); - - return material; - - } - - _createMaterial( material, renderEnvironment ) { - - if ( material === undefined ) { - - return new MeshStandardMaterial( { - color: new Color( 1, 1, 1 ), - metalness: 0.8, - name: Loader.DEFAULT_MATERIAL_NAME, - side: DoubleSide - } ); - - } - - //console.log(material) - - let mat = new MeshPhysicalMaterial( { - - color: new Color( material.diffuseColor.r / 255.0, material.diffuseColor.g / 255.0, material.diffuseColor.b / 255.0 ), - emissive: new Color( material.emissionColor.r, material.emissionColor.g, material.emissionColor.b ), - flatShading: material.disableLighting, - ior: material.indexOfRefraction, - name: material.name, - reflectivity: material.reflectivity, - opacity: 1.0 - material.transparency, - side: DoubleSide, - specularColor: material.specularColor, - transparent: material.transparency > 0 ? true : false - - } ); - - mat.userData.id = material.id; - - if ( material.pbrSupported ) { - - const pbr = material.pbr; - - mat.anisotropy = pbr.anisotropy; - mat.anisotropyRotation = pbr.anisotropicRotation; - mat.color = new Color( pbr.baseColor.r, pbr.baseColor.g, pbr.baseColor.b ); - mat.clearCoat = pbr.clearCoat; - mat.clearCoatRoughness = pbr.clearCoatRoughness; - mat.metalness = pbr.metallic; - mat.transmission = 1 - pbr.opacity; - mat.roughness = pbr.roughness; - mat.sheen = pbr.sheen; - mat.specularIntensity = pbr.specular; - mat.thickness = pbr.subsurface; - - } - - if ( material.pbrSupported && material.pbr.opacity === 0 && material.transparency === 1 ) { - - //some compromises - - mat.opacity = 0.2; - mat.transmission = 1.00; - - } - - const textureLoader = new TextureLoader(); - - for ( let i = 0; i < material.textures.length; i ++ ) { - - const texture = material.textures[ i ]; - - if ( texture.image !== null ) { - - const map = textureLoader.load( texture.image ); - - //console.log(texture.type ) - - switch ( texture.type ) { - - case 'Bump': - - mat.bumpMap = map; - - break; - - case 'Diffuse': - - mat.map = map; - - break; - - case 'Emap': - - mat.envMap = map; - - break; - - case 'Opacity': - - mat.transmissionMap = map; - - break; - - case 'Transparency': - - mat.alphaMap = map; - mat.transparent = true; - - break; - - case 'PBR_Alpha': - - mat.alphaMap = map; - mat.transparent = true; - - break; - - case 'PBR_AmbientOcclusion': - - mat.aoMap = map; - - break; - - case 'PBR_Anisotropic': - - mat.anisotropyMap = map; - - break; - - case 'PBR_BaseColor': - - mat.map = map; - - break; - - case 'PBR_Clearcoat': - - mat.clearcoatMap = map; - - break; - - case 'PBR_ClearcoatBump': - - mat.clearcoatNormalMap = map; - - break; - - case 'PBR_ClearcoatRoughness': - - mat.clearcoatRoughnessMap = map; - - break; - - case 'PBR_Displacement': - - mat.displacementMap = map; - - break; - - case 'PBR_Emission': - - mat.emissiveMap = map; - - break; - - case 'PBR_Metallic': - - mat.metalnessMap = map; - - break; - - case 'PBR_Roughness': - - mat.roughnessMap = map; - - break; - - case 'PBR_Sheen': - - mat.sheenColorMap = map; - - break; - - case 'PBR_Specular': - - mat.specularColorMap = map; - - break; - - case 'PBR_Subsurface': - - mat.thicknessMap = map; - - break; - - default: - - this.warnings.push( { - message: `THREE.3DMLoader: No conversion exists for 3dm ${texture.type}.`, - type: 'no conversion' - } ); - - break; - - } - - map.wrapS = texture.wrapU === 0 ? RepeatWrapping : ClampToEdgeWrapping; - map.wrapT = texture.wrapV === 0 ? RepeatWrapping : ClampToEdgeWrapping; - - if ( texture.repeat ) { - - map.repeat.set( texture.repeat[ 0 ], texture.repeat[ 1 ] ); - - } - - } - - } - - if ( renderEnvironment ) { - - new EXRLoader().load( renderEnvironment.image, function ( texture ) { - - texture.mapping = THREE.EquirectangularReflectionMapping; - mat.envMap = texture; - - } ); - - } - - return mat; - - } - - _createGeometry( data ) { - - const object = new Object3D(); - const instanceDefinitionObjects = []; - const instanceDefinitions = []; - const instanceReferences = []; - - object.userData[ 'layers' ] = data.layers; - object.userData[ 'groups' ] = data.groups; - object.userData[ 'settings' ] = data.settings; - object.userData.settings[ 'renderSettings' ] = data.renderSettings; - object.userData[ 'objectType' ] = 'File3dm'; - object.userData[ 'materials' ] = null; - - object.name = this.url; - - let objects = data.objects; - const materials = data.materials; - - for ( let i = 0; i < objects.length; i ++ ) { - - const obj = objects[ i ]; - const attributes = obj.attributes; - - switch ( obj.objectType ) { - - case 'InstanceDefinition': - - instanceDefinitions.push( obj ); - - break; - - case 'InstanceReference': - - instanceReferences.push( obj ); - - break; - - default: - - let matId; - - switch( attributes.materialSource.name ) { - case 'ObjectMaterialSource_MaterialFromLayer': - //check layer index - if ( attributes.layerIndex >= 0 ) { - - matId = data.layers[ attributes.layerIndex ].renderMaterialIndex; - - } else { - - matId = null; - - } - - break; - - case 'ObjectMaterialSource_MaterialFromObject': - - if ( attributes.materialIndex >= 0 ) { - - matId = attributes.materialIndex; - - } else { - - matId = null; - - } - - break; - - } - - let material; - - if ( matId >= 0 ) { - - const rMaterial = materials[ matId ]; - material = this._createMaterial( rMaterial, data.renderEnvironment ); - - - } else { - - material = this._createMaterial(); - - } - - material = this._compareMaterials( material ); - const _object = this._createObject( obj, material ); - - if ( _object === undefined ) { - - continue; - - } - - const layer = data.layers[ attributes.layerIndex ]; - - _object.visible = layer ? data.layers[ attributes.layerIndex ].visible : true; - - if ( attributes.isInstanceDefinitionObject ) { - - instanceDefinitionObjects.push( _object ); - - } else { - - object.add( _object ); - - } - - break; - - } - - } - - for ( let i = 0; i < instanceDefinitions.length; i ++ ) { - - const iDef = instanceDefinitions[ i ]; - - objects = []; - - for ( let j = 0; j < iDef.attributes.objectIds.length; j ++ ) { - - const objId = iDef.attributes.objectIds[ j ]; - - for ( let p = 0; p < instanceDefinitionObjects.length; p ++ ) { - - const idoId = instanceDefinitionObjects[ p ].userData.attributes.id; - - if ( objId === idoId ) { - - objects.push( instanceDefinitionObjects[ p ] ); - - } - - } - - } - - // Currently clones geometry and does not take advantage of instancing - - for ( let j = 0; j < instanceReferences.length; j ++ ) { - - const iRef = instanceReferences[ j ]; - - if ( iRef.geometry.parentIdefId === iDef.attributes.id ) { - - const iRefObject = new Object3D(); - const xf = iRef.geometry.xform.array; - - const matrix = new Matrix4(); - matrix.set( ...xf ); - - iRefObject.applyMatrix4( matrix ); - - for ( let p = 0; p < objects.length; p ++ ) { - - iRefObject.add( objects[ p ].clone( true ) ); - - } - - object.add( iRefObject ); - - } - - } - - } - - object.userData[ 'materials' ] = this.materials; - object.name = ''; - return object; - - } - - _createObject( obj, mat ) { - - const loader = new BufferGeometryLoader(); - - const attributes = obj.attributes; - - let geometry, material, _color, color; - - switch ( obj.objectType ) { - - case 'Point': - case 'PointSet': - - geometry = loader.parse( obj.geometry ); - - if ( geometry.attributes.hasOwnProperty( 'color' ) ) { - - material = new PointsMaterial( { vertexColors: true, sizeAttenuation: false, size: 2 } ); - - } else { - - _color = attributes.drawColor; - color = new Color( _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 ); - material = new PointsMaterial( { color: color, sizeAttenuation: false, size: 2 } ); - - } - - material = this._compareMaterials( material ); - - const points = new Points( geometry, material ); - points.userData[ 'attributes' ] = attributes; - points.userData[ 'objectType' ] = obj.objectType; - - if ( attributes.name ) { - - points.name = attributes.name; - - } - - return points; - - case 'Mesh': - case 'Extrusion': - case 'SubD': - case 'Brep': - - if ( obj.geometry === null ) return; - - geometry = loader.parse( obj.geometry ); - - if ( geometry.attributes.hasOwnProperty( 'color' ) ) { - - mat.vertexColors = true; - - } - - if ( mat === null ) { - - mat = this._createMaterial(); - mat = this._compareMaterials( mat ); - - } - - const mesh = new Mesh( geometry, mat ); - mesh.castShadow = attributes.castsShadows; - mesh.receiveShadow = attributes.receivesShadows; - mesh.userData[ 'attributes' ] = attributes; - mesh.userData[ 'objectType' ] = obj.objectType; - - if ( attributes.name ) { - - mesh.name = attributes.name; - - } - - return mesh; - - case 'Curve': - - geometry = loader.parse( obj.geometry ); - - _color = attributes.drawColor; - color = new Color( _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 ); - - material = new LineBasicMaterial( { color: color } ); - material = this._compareMaterials( material ); - - const lines = new Line( geometry, material ); - lines.userData[ 'attributes' ] = attributes; - lines.userData[ 'objectType' ] = obj.objectType; - - if ( attributes.name ) { - - lines.name = attributes.name; - - } - - return lines; - - case 'TextDot': - - geometry = obj.geometry; - - const ctx = document.createElement( 'canvas' ).getContext( '2d' ); - const font = `${geometry.fontHeight}px ${geometry.fontFace}`; - ctx.font = font; - const width = ctx.measureText( geometry.text ).width + 10; - const height = geometry.fontHeight + 10; - - const r = window.devicePixelRatio; - - ctx.canvas.width = width * r; - ctx.canvas.height = height * r; - ctx.canvas.style.width = width + 'px'; - ctx.canvas.style.height = height + 'px'; - ctx.setTransform( r, 0, 0, r, 0, 0 ); - - ctx.font = font; - ctx.textBaseline = 'middle'; - ctx.textAlign = 'center'; - color = attributes.drawColor; - ctx.fillStyle = `rgba(${color.r},${color.g},${color.b},${color.a})`; - ctx.fillRect( 0, 0, width, height ); - ctx.fillStyle = 'white'; - ctx.fillText( geometry.text, width / 2, height / 2 ); - - const texture = new CanvasTexture( ctx.canvas ); - texture.minFilter = LinearFilter; - texture.wrapS = ClampToEdgeWrapping; - texture.wrapT = ClampToEdgeWrapping; - - material = new SpriteMaterial( { map: texture, depthTest: false } ); - const sprite = new Sprite( material ); - sprite.position.set( geometry.point[ 0 ], geometry.point[ 1 ], geometry.point[ 2 ] ); - sprite.scale.set( width / 10, height / 10, 1.0 ); - - sprite.userData[ 'attributes' ] = attributes; - sprite.userData[ 'objectType' ] = obj.objectType; - - if ( attributes.name ) { - - sprite.name = attributes.name; - - } - - return sprite; - - case 'Light': - - geometry = obj.geometry; - - let light; - - switch ( geometry.lightStyle.name ) { - - case 'LightStyle_WorldPoint': - - light = new PointLight(); - light.castShadow = attributes.castsShadows; - light.position.set( geometry.location[ 0 ], geometry.location[ 1 ], geometry.location[ 2 ] ); - light.shadow.normalBias = 0.1; - - break; - - case 'LightStyle_WorldSpot': - - light = new SpotLight(); - light.castShadow = attributes.castsShadows; - light.position.set( geometry.location[ 0 ], geometry.location[ 1 ], geometry.location[ 2 ] ); - light.target.position.set( geometry.direction[ 0 ], geometry.direction[ 1 ], geometry.direction[ 2 ] ); - light.angle = geometry.spotAngleRadians; - light.shadow.normalBias = 0.1; - - break; - - case 'LightStyle_WorldRectangular': - - light = new RectAreaLight(); - const width = Math.abs( geometry.width[ 2 ] ); - const height = Math.abs( geometry.length[ 0 ] ); - light.position.set( geometry.location[ 0 ] - ( height / 2 ), geometry.location[ 1 ], geometry.location[ 2 ] - ( width / 2 ) ); - light.height = height; - light.width = width; - light.lookAt( geometry.direction[ 0 ], geometry.direction[ 1 ], geometry.direction[ 2 ] ); - - break; - - case 'LightStyle_WorldDirectional': - - light = new DirectionalLight(); - light.castShadow = attributes.castsShadows; - light.position.set( geometry.location[ 0 ], geometry.location[ 1 ], geometry.location[ 2 ] ); - light.target.position.set( geometry.direction[ 0 ], geometry.direction[ 1 ], geometry.direction[ 2 ] ); - light.shadow.normalBias = 0.1; - - break; - - case 'LightStyle_WorldLinear': - // no conversion exists, warning has already been printed to the console - break; - - default: - break; - - } - - if ( light ) { - - light.intensity = geometry.intensity; - _color = geometry.diffuse; - color = new Color( _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 ); - light.color = color; - light.userData[ 'attributes' ] = attributes; - light.userData[ 'objectType' ] = obj.objectType; - - } - - return light; - - } - - } - - _initLibrary() { - - if ( ! this.libraryPending ) { - - // Load rhino3dm wrapper. - const jsLoader = new FileLoader( this.manager ); - jsLoader.setPath( this.libraryPath ); - const jsContent = new Promise( ( resolve, reject ) => { - - jsLoader.load( 'rhino3dm.js', resolve, undefined, reject ); - - } ); - - // Load rhino3dm WASM binary. - const binaryLoader = new FileLoader( this.manager ); - binaryLoader.setPath( this.libraryPath ); - binaryLoader.setResponseType( 'arraybuffer' ); - const binaryContent = new Promise( ( resolve, reject ) => { - - binaryLoader.load( 'rhino3dm.wasm', resolve, undefined, reject ); - - } ); - - this.libraryPending = Promise.all( [ jsContent, binaryContent ] ) - .then( ( [ jsContent, binaryContent ] ) => { - - //this.libraryBinary = binaryContent; - this.libraryConfig.wasmBinary = binaryContent; - - const fn = Rhino3dmWorker.toString(); - - const body = [ - '/* rhino3dm.js */', - jsContent, - '/* worker */', - fn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) ) - ].join( '\n' ); - - this.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) ); - - } ); - - } - - return this.libraryPending; - - } - - _getWorker( taskCost ) { - - return this._initLibrary().then( () => { - - if ( this.workerPool.length < this.workerLimit ) { - - const worker = new Worker( this.workerSourceURL ); - - worker._callbacks = {}; - worker._taskCosts = {}; - worker._taskLoad = 0; - - worker.postMessage( { - type: 'init', - libraryConfig: this.libraryConfig - } ); - - worker.onmessage = e => { - - const message = e.data; - - switch ( message.type ) { - - case 'warning': - this.warnings.push( message.data ); - console.warn( message.data ); - break; - - case 'decode': - worker._callbacks[ message.id ].resolve( message ); - break; - - case 'error': - worker._callbacks[ message.id ].reject( message ); - break; - - default: - console.error( 'THREE.Rhino3dmLoader: Unexpected message, "' + message.type + '"' ); - - } - - }; - - this.workerPool.push( worker ); - - } else { - - this.workerPool.sort( function ( a, b ) { - - return a._taskLoad > b._taskLoad ? - 1 : 1; - - } ); - - } - - const worker = this.workerPool[ this.workerPool.length - 1 ]; - - worker._taskLoad += taskCost; - - return worker; - - } ); - - } - - _releaseTask( worker, taskID ) { - - worker._taskLoad -= worker._taskCosts[ taskID ]; - delete worker._callbacks[ taskID ]; - delete worker._taskCosts[ taskID ]; - - } - - dispose() { - - for ( let i = 0; i < this.workerPool.length; ++ i ) { - - this.workerPool[ i ].terminate(); - - } - - this.workerPool.length = 0; - - return this; - - } - -} - -/* WEB WORKER */ - -function Rhino3dmWorker() { - - let libraryPending; - let libraryConfig; - let rhino; - let taskID; - - onmessage = function ( e ) { - - const message = e.data; - - switch ( message.type ) { - - case 'init': - - libraryConfig = message.libraryConfig; - const wasmBinary = libraryConfig.wasmBinary; - let RhinoModule; - libraryPending = new Promise( function ( resolve ) { - - /* Like Basis Loader */ - RhinoModule = { wasmBinary, onRuntimeInitialized: resolve }; - - rhino3dm( RhinoModule ); // eslint-disable-line no-undef - - } ).then( () => { - - rhino = RhinoModule; - - } ); - - break; - - case 'decode': - - taskID = message.id; - const buffer = message.buffer; - libraryPending.then( () => { - - try { - - const data = decodeObjects( rhino, buffer ); - self.postMessage( { type: 'decode', id: message.id, data } ); - - } catch ( error ) { - - self.postMessage( { type: 'error', id: message.id, error } ); - - } - - } ); - - break; - - } - - }; - - function decodeObjects( rhino, buffer ) { - - const arr = new Uint8Array( buffer ); - const doc = rhino.File3dm.fromByteArray( arr ); - - const objects = []; - const materials = []; - const layers = []; - const views = []; - const namedViews = []; - const groups = []; - const strings = []; - - //Handle objects - - const objs = doc.objects(); - const cnt = objs.count; - - for ( let i = 0; i < cnt; i ++ ) { - - const _object = objs.get( i ); - - const object = extractObjectData( _object, doc ); - - _object.delete(); - - if ( object ) { - - objects.push( object ); - - } - - } - - // Handle instance definitions - // console.log( `Instance Definitions Count: ${doc.instanceDefinitions().count()}` ); - - for ( let i = 0; i < doc.instanceDefinitions().count; i ++ ) { - - const idef = doc.instanceDefinitions().get( i ); - const idefAttributes = extractProperties( idef ); - idefAttributes.objectIds = idef.getObjectIds(); - - objects.push( { geometry: null, attributes: idefAttributes, objectType: 'InstanceDefinition' } ); - - } - - // Handle materials - - const textureTypes = [ - // rhino.TextureType.Bitmap, - rhino.TextureType.Diffuse, - rhino.TextureType.Bump, - rhino.TextureType.Transparency, - rhino.TextureType.Opacity, - rhino.TextureType.Emap - ]; - - const pbrTextureTypes = [ - rhino.TextureType.PBR_BaseColor, - rhino.TextureType.PBR_Subsurface, - rhino.TextureType.PBR_SubsurfaceScattering, - rhino.TextureType.PBR_SubsurfaceScatteringRadius, - rhino.TextureType.PBR_Metallic, - rhino.TextureType.PBR_Specular, - rhino.TextureType.PBR_SpecularTint, - rhino.TextureType.PBR_Roughness, - rhino.TextureType.PBR_Anisotropic, - rhino.TextureType.PBR_Anisotropic_Rotation, - rhino.TextureType.PBR_Sheen, - rhino.TextureType.PBR_SheenTint, - rhino.TextureType.PBR_Clearcoat, - rhino.TextureType.PBR_ClearcoatBump, - rhino.TextureType.PBR_ClearcoatRoughness, - rhino.TextureType.PBR_OpacityIor, - rhino.TextureType.PBR_OpacityRoughness, - rhino.TextureType.PBR_Emission, - rhino.TextureType.PBR_AmbientOcclusion, - rhino.TextureType.PBR_Displacement - ]; - - for ( let i = 0; i < doc.materials().count; i ++ ) { - - const _material = doc.materials().get( i ); - - let material = extractProperties( _material ); - - const textures = []; - - textures.push( ...extractTextures( _material, textureTypes, doc ) ); - - material.pbrSupported = _material.physicallyBased().supported; - - if ( material.pbrSupported ) { - - textures.push( ...extractTextures( _material, pbrTextureTypes, doc ) ); - material.pbr = extractProperties( _material.physicallyBased() ); - - } - - material.textures = textures; - - materials.push( material ); - - _material.delete(); - - } - - // Handle layers - - for ( let i = 0; i < doc.layers().count; i ++ ) { - - const _layer = doc.layers().get( i ); - const layer = extractProperties( _layer ); - - layers.push( layer ); - - _layer.delete(); - - } - - // Handle views - - for ( let i = 0; i < doc.views().count; i ++ ) { - - const _view = doc.views().get( i ); - const view = extractProperties( _view ); - - views.push( view ); - - _view.delete(); - - } - - // Handle named views - - for ( let i = 0; i < doc.namedViews().count; i ++ ) { - - const _namedView = doc.namedViews().get( i ); - const namedView = extractProperties( _namedView ); - - namedViews.push( namedView ); - - _namedView.delete(); - - } - - // Handle groups - - for ( let i = 0; i < doc.groups().count; i ++ ) { - - const _group = doc.groups().get( i ); - const group = extractProperties( _group ); - - groups.push( group ); - - _group.delete(); - - } - - // Handle settings - - const settings = extractProperties( doc.settings() ); - - //TODO: Handle other document stuff like dimstyles, instance definitions, bitmaps etc. - - // Handle dimstyles - // console.log( `Dimstyle Count: ${doc.dimstyles().count()}` ); - - // Handle bitmaps - // console.log( `Bitmap Count: ${doc.bitmaps().count()}` ); - - // Handle strings - // console.log( `Document Strings Count: ${doc.strings().count()}` ); - // Note: doc.strings().documentUserTextCount() counts any doc.strings defined in a section - // console.log( `Document User Text Count: ${doc.strings().documentUserTextCount()}` ); - - const strings_count = doc.strings().count; - - for ( let i = 0; i < strings_count; i ++ ) { - - strings.push( doc.strings().get( i ) ); - - } - - // Handle Render Environments for Material Environment - - // get the id of the active render environment skylight, which we'll use for environment texture - const reflectionId = doc.settings().renderSettings().renderEnvironments.reflectionId - - const rc = doc.renderContent() - - let renderEnvironment = null - - for( let i = 0; i < rc.count; i++ ) { - - const content = rc.get(i) - - switch( content.kind ) { - - case 'environment': - - const id = content.id - - // there could be multiple render environments in a 3dm file - if ( id !== reflectionId ) break; - - const renderTexture = content.findChild( 'texture' ) - const fileName = renderTexture.fileName - - for ( let j = 0; j < doc.embeddedFiles().count; j ++ ) { - - const _fileName = doc.embeddedFiles().get( j ).fileName - - if ( fileName === _fileName ) { - - const background = doc.getEmbeddedFileAsBase64( fileName ) - const backgroundImage = 'data:image/png;base64,' + background - renderEnvironment = { type: 'renderEnvironment', image: backgroundImage, name: fileName }; - - } - - } - - break; - - } - - } - - // Handle Render Settings - - const renderSettings = { - ambientLight: doc.settings().renderSettings().ambientLight, - backgroundColorTop: doc.settings().renderSettings().backgroundColorTop, - backgroundColorBottom: doc.settings().renderSettings().backgroundColorBottom, - useHiddenLights: doc.settings().renderSettings().useHiddenLights, - depthCue: doc.settings().renderSettings().depthCue, - flatShade: doc.settings().renderSettings().flatShade, - renderBackFaces: doc.settings().renderSettings().renderBackFaces, - renderPoints: doc.settings().renderSettings().renderPoints, - renderCurves: doc.settings().renderSettings().renderCurves, - renderIsoParams: doc.settings().renderSettings().renderIsoParams, - renderMeshEdges: doc.settings().renderSettings().renderMeshEdges, - renderAnnotations: doc.settings().renderSettings().renderAnnotations, - useViewportSize: doc.settings().renderSettings().useViewportSize, - scaleBackgroundToFit: doc.settings().renderSettings().scaleBackgroundToFit, - transparentBackground: doc.settings().renderSettings().transparentBackground, - imageDpi: doc.settings().renderSettings().imageDpi, - shadowMapLevel: doc.settings().renderSettings().shadowMapLevel, - namedView: doc.settings().renderSettings().namedView, - snapShot: doc.settings().renderSettings().snapShot, - specificViewport: doc.settings().renderSettings().specificViewport, - groundPlane: extractProperties( doc.settings().renderSettings().groundPlane ), - safeFrame: extractProperties( doc.settings().renderSettings().safeFrame ), - dithering: extractProperties( doc.settings().renderSettings().dithering ), - skylight: extractProperties( doc.settings().renderSettings().skylight ), - linearWorkflow: extractProperties( doc.settings().renderSettings().linearWorkflow ), - renderChannels: extractProperties( doc.settings().renderSettings().renderChannels ), - sun: extractProperties( doc.settings().renderSettings().sun ), - renderEnvironments: extractProperties( doc.settings().renderSettings().renderEnvironments ), - postEffects: extractProperties( doc.settings().renderSettings().postEffects ), - - } - - doc.delete(); - - return { objects, materials, layers, views, namedViews, groups, strings, settings, renderSettings, renderEnvironment }; - - } - - function extractTextures( m, tTypes, d ) { - - const textures = [] - - for ( let i = 0; i < tTypes.length; i ++ ) { - - const _texture = m.getTexture( tTypes[ i ] ); - if ( _texture ) { - - let textureType = tTypes[ i ].constructor.name; - textureType = textureType.substring( 12, textureType.length ); - const texture = extractTextureData( _texture, textureType, d ); - textures.push( texture ); - _texture.delete(); - - } - - } - - return textures; - - } - - function extractTextureData( t, tType, d ) { - - const texture = { type: tType }; - - const image = d.getEmbeddedFileAsBase64( t.fileName ); - - texture.wrapU = t.wrapU; - texture.wrapV = t.wrapV; - texture.wrapW = t.wrapW; - const uvw = t.uvwTransform.toFloatArray( true ); - - texture.repeat = [ uvw[ 0 ], uvw[ 5 ] ]; - - if ( image ) { - - texture.image = 'data:image/png;base64,' + image; - - } else { - - self.postMessage( { type: 'warning', id: taskID, data: { - message: `THREE.3DMLoader: Image for ${tType} texture not embedded in file.`, - type: 'missing resource' - } - - } ); - - texture.image = null; - - } - - return texture; - - } - - function extractObjectData( object, doc ) { - - const _geometry = object.geometry(); - const _attributes = object.attributes(); - let objectType = _geometry.objectType; - let geometry, attributes, position, data, mesh; - - // skip instance definition objects - //if( _attributes.isInstanceDefinitionObject ) { continue; } - - // TODO: handle other geometry types - switch ( objectType ) { - - case rhino.ObjectType.Curve: - - const pts = curveToPoints( _geometry, 100 ); - - position = {}; - attributes = {}; - data = {}; - - position.itemSize = 3; - position.type = 'Float32Array'; - position.array = []; - - for ( let j = 0; j < pts.length; j ++ ) { - - position.array.push( pts[ j ][ 0 ] ); - position.array.push( pts[ j ][ 1 ] ); - position.array.push( pts[ j ][ 2 ] ); - - } - - attributes.position = position; - data.attributes = attributes; - - geometry = { data }; - - break; - - case rhino.ObjectType.Point: - - const pt = _geometry.location; - - position = {}; - const color = {}; - attributes = {}; - data = {}; - - position.itemSize = 3; - position.type = 'Float32Array'; - position.array = [ pt[ 0 ], pt[ 1 ], pt[ 2 ] ]; - - const _color = _attributes.drawColor( doc ); - - color.itemSize = 3; - color.type = 'Float32Array'; - color.array = [ _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 ]; - - attributes.position = position; - attributes.color = color; - data.attributes = attributes; - - geometry = { data }; - - break; - - case rhino.ObjectType.PointSet: - case rhino.ObjectType.Mesh: - - geometry = _geometry.toThreejsJSON(); - - break; - - case rhino.ObjectType.Brep: - - const faces = _geometry.faces(); - mesh = new rhino.Mesh(); - - for ( let faceIndex = 0; faceIndex < faces.count; faceIndex ++ ) { - - const face = faces.get( faceIndex ); - const _mesh = face.getMesh( rhino.MeshType.Any ); - - if ( _mesh ) { - - mesh.append( _mesh ); - _mesh.delete(); - - } - - face.delete(); - - } - - if ( mesh.faces().count > 0 ) { - - mesh.compact(); - geometry = mesh.toThreejsJSON(); - faces.delete(); - - } - - mesh.delete(); - - break; - - case rhino.ObjectType.Extrusion: - - mesh = _geometry.getMesh( rhino.MeshType.Any ); - - if ( mesh ) { - - geometry = mesh.toThreejsJSON(); - mesh.delete(); - - } - - break; - - case rhino.ObjectType.TextDot: - - geometry = extractProperties( _geometry ); - - break; - - case rhino.ObjectType.Light: - - geometry = extractProperties( _geometry ); - - if ( geometry.lightStyle.name === 'LightStyle_WorldLinear' ) { - - self.postMessage( { type: 'warning', id: taskID, data: { - message: `THREE.3DMLoader: No conversion exists for ${objectType.constructor.name} ${geometry.lightStyle.name}`, - type: 'no conversion', - guid: _attributes.id - } - - } ); - - } - - break; - - case rhino.ObjectType.InstanceReference: - - geometry = extractProperties( _geometry ); - geometry.xform = extractProperties( _geometry.xform ); - geometry.xform.array = _geometry.xform.toFloatArray( true ); - - break; - - case rhino.ObjectType.SubD: - - // TODO: precalculate resulting vertices and faces and warn on excessive results - _geometry.subdivide( 3 ); - mesh = rhino.Mesh.createFromSubDControlNet( _geometry ); - if ( mesh ) { - - geometry = mesh.toThreejsJSON(); - mesh.delete(); - - } - - break; - - /* - case rhino.ObjectType.Annotation: - case rhino.ObjectType.Hatch: - case rhino.ObjectType.ClipPlane: - */ - - default: - - self.postMessage( { type: 'warning', id: taskID, data: { - message: `THREE.3DMLoader: Conversion not implemented for ${objectType.constructor.name}`, - type: 'not implemented', - guid: _attributes.id - } - - } ); - - break; - - } - - if ( geometry ) { - - attributes = extractProperties( _attributes ); - attributes.geometry = extractProperties( _geometry ); - - if ( _attributes.groupCount > 0 ) { - - attributes.groupIds = _attributes.getGroupList(); - - } - - if ( _attributes.userStringCount > 0 ) { - - attributes.userStrings = _attributes.getUserStrings(); - - } - - if ( _geometry.userStringCount > 0 ) { - - attributes.geometry.userStrings = _geometry.getUserStrings(); - - } - - if ( _attributes.decals().count > 0 ) { - - self.postMessage( { type: 'warning', id: taskID, data: { - message: `THREE.3DMLoader: No conversion exists for the decals associated with this object.`, - type: 'no conversion', - guid: _attributes.id - } - - } ); - - } - - attributes.drawColor = _attributes.drawColor( doc ); - - objectType = objectType.constructor.name; - objectType = objectType.substring( 11, objectType.length ); - - return { geometry, attributes, objectType }; - - } else { - - self.postMessage( { type: 'warning', id: taskID, data: { - message: `THREE.3DMLoader: ${objectType.constructor.name} has no associated mesh geometry.`, - type: 'missing mesh', - guid: _attributes.id - } - - } ); - - } - - } - - function extractProperties( object ) { - - const result = {}; - - for ( const property in object ) { - - const value = object[ property ]; - - if ( typeof value !== 'function' ) { - - if ( typeof value === 'object' && value !== null && value.hasOwnProperty( 'constructor' ) ) { - - result[ property ] = { name: value.constructor.name, value: value.value }; - - } else if ( typeof value === 'object' && value !== null ) { - - result[ property ] = extractProperties( value ); - - } else { - - result[ property ] = value; - - } - - } else { - - // these are functions that could be called to extract more data. - //console.log( `${property}: ${object[ property ].constructor.name}` ); - - } - - } - - return result; - - } - - function curveToPoints( curve, pointLimit ) { - - let pointCount = pointLimit; - let rc = []; - const ts = []; - - if ( curve instanceof rhino.LineCurve ) { - - return [ curve.pointAtStart, curve.pointAtEnd ]; - - } - - if ( curve instanceof rhino.PolylineCurve ) { - - pointCount = curve.pointCount; - for ( let i = 0; i < pointCount; i ++ ) { - - rc.push( curve.point( i ) ); - - } - - return rc; - - } - - if ( curve instanceof rhino.PolyCurve ) { - - const segmentCount = curve.segmentCount; - - for ( let i = 0; i < segmentCount; i ++ ) { - - const segment = curve.segmentCurve( i ); - const segmentArray = curveToPoints( segment, pointCount ); - rc = rc.concat( segmentArray ); - segment.delete(); - - } - - return rc; - - } - - if ( curve instanceof rhino.ArcCurve ) { - - pointCount = Math.floor( curve.angleDegrees / 5 ); - pointCount = pointCount < 2 ? 2 : pointCount; - // alternative to this hardcoded version: https://stackoverflow.com/a/18499923/2179399 - - } - - if ( curve instanceof rhino.NurbsCurve && curve.degree === 1 ) { - - const pLine = curve.tryGetPolyline(); - - for ( let i = 0; i < pLine.count; i ++ ) { - - rc.push( pLine.get( i ) ); - - } - - pLine.delete(); - - return rc; - - } - - const domain = curve.domain; - const divisions = pointCount - 1.0; - - for ( let j = 0; j < pointCount; j ++ ) { - - const t = domain[ 0 ] + ( j / divisions ) * ( domain[ 1 ] - domain[ 0 ] ); - - if ( t === domain[ 0 ] || t === domain[ 1 ] ) { - - ts.push( t ); - continue; - - } - - const tan = curve.tangentAt( t ); - const prevTan = curve.tangentAt( ts.slice( - 1 )[ 0 ] ); - - // Duplicated from THREE.Vector3 - // How to pass imports to worker? - - const tS = tan[ 0 ] * tan[ 0 ] + tan[ 1 ] * tan[ 1 ] + tan[ 2 ] * tan[ 2 ]; - const ptS = prevTan[ 0 ] * prevTan[ 0 ] + prevTan[ 1 ] * prevTan[ 1 ] + prevTan[ 2 ] * prevTan[ 2 ]; - - const denominator = Math.sqrt( tS * ptS ); - - let angle; - - if ( denominator === 0 ) { - - angle = Math.PI / 2; - - } else { - - const theta = ( tan.x * prevTan.x + tan.y * prevTan.y + tan.z * prevTan.z ) / denominator; - angle = Math.acos( Math.max( - 1, Math.min( 1, theta ) ) ); - - } - - if ( angle < 0.1 ) continue; - - ts.push( t ); - - } - - rc = ts.map( t => curve.pointAt( t ) ); - return rc; - - } - -} - -export { Rhino3dmLoader }; diff --git a/public/assets/lib/vendor/three/EXRLoader.js b/public/assets/lib/vendor/three/EXRLoader.js deleted file mode 100644 index deb77553..00000000 --- a/public/assets/lib/vendor/three/EXRLoader.js +++ /dev/null @@ -1,2310 +0,0 @@ -// @ts-nocheck -import { - DataTextureLoader, - DataUtils, - FloatType, - HalfFloatType, - NoColorSpace, - LinearFilter, - LinearSRGBColorSpace, - RedFormat, - RGBAFormat -} from './three.module.js'; -import * as fflate from './libs/fflate.module.js'; - -/** - * OpenEXR loader currently supports uncompressed, ZIP(S), RLE, PIZ and DWA/B compression. - * Supports reading as UnsignedByte, HalfFloat and Float type data texture. - * - * Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita - * implementation, so I have preserved their copyright notices. - */ - -// /* -// Copyright (c) 2014 - 2017, Syoyo Fujita -// All rights reserved. - -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// * Neither the name of the Syoyo Fujita nor the -// names of its contributors may be used to endorse or promote products -// derived from this software without specific prior written permission. - -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// */ - -// // TinyEXR contains some OpenEXR code, which is licensed under ------------ - -// /////////////////////////////////////////////////////////////////////////// -// // -// // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas -// // Digital Ltd. LLC -// // -// // All rights reserved. -// // -// // Redistribution and use in source and binary forms, with or without -// // modification, are permitted provided that the following conditions are -// // met: -// // * Redistributions of source code must retain the above copyright -// // notice, this list of conditions and the following disclaimer. -// // * Redistributions in binary form must reproduce the above -// // copyright notice, this list of conditions and the following disclaimer -// // in the documentation and/or other materials provided with the -// // distribution. -// // * Neither the name of Industrial Light & Magic nor the names of -// // its contributors may be used to endorse or promote products derived -// // from this software without specific prior written permission. -// // -// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// // -// /////////////////////////////////////////////////////////////////////////// - -// // End of OpenEXR license ------------------------------------------------- - -class EXRLoader extends DataTextureLoader { - - constructor( manager ) { - - super( manager ); - - this.type = HalfFloatType; - - } - - parse( buffer ) { - - const USHORT_RANGE = ( 1 << 16 ); - const BITMAP_SIZE = ( USHORT_RANGE >> 3 ); - - const HUF_ENCBITS = 16; // literal (value) bit length - const HUF_DECBITS = 14; // decoding bit size (>= 8) - - const HUF_ENCSIZE = ( 1 << HUF_ENCBITS ) + 1; // encoding table size - const HUF_DECSIZE = 1 << HUF_DECBITS; // decoding table size - const HUF_DECMASK = HUF_DECSIZE - 1; - - const NBITS = 16; - const A_OFFSET = 1 << ( NBITS - 1 ); - const MOD_MASK = ( 1 << NBITS ) - 1; - - const SHORT_ZEROCODE_RUN = 59; - const LONG_ZEROCODE_RUN = 63; - const SHORTEST_LONG_RUN = 2 + LONG_ZEROCODE_RUN - SHORT_ZEROCODE_RUN; - - const ULONG_SIZE = 8; - const FLOAT32_SIZE = 4; - const INT32_SIZE = 4; - const INT16_SIZE = 2; - const INT8_SIZE = 1; - - const STATIC_HUFFMAN = 0; - const DEFLATE = 1; - - const UNKNOWN = 0; - const LOSSY_DCT = 1; - const RLE = 2; - - const logBase = Math.pow( 2.7182818, 2.2 ); - - function reverseLutFromBitmap( bitmap, lut ) { - - let k = 0; - - for ( let i = 0; i < USHORT_RANGE; ++ i ) { - - if ( ( i == 0 ) || ( bitmap[ i >> 3 ] & ( 1 << ( i & 7 ) ) ) ) { - - lut[ k ++ ] = i; - - } - - } - - const n = k - 1; - - while ( k < USHORT_RANGE ) lut[ k ++ ] = 0; - - return n; - - } - - function hufClearDecTable( hdec ) { - - for ( let i = 0; i < HUF_DECSIZE; i ++ ) { - - hdec[ i ] = {}; - hdec[ i ].len = 0; - hdec[ i ].lit = 0; - hdec[ i ].p = null; - - } - - } - - const getBitsReturn = { l: 0, c: 0, lc: 0 }; - - function getBits( nBits, c, lc, uInt8Array, inOffset ) { - - while ( lc < nBits ) { - - c = ( c << 8 ) | parseUint8Array( uInt8Array, inOffset ); - lc += 8; - - } - - lc -= nBits; - - getBitsReturn.l = ( c >> lc ) & ( ( 1 << nBits ) - 1 ); - getBitsReturn.c = c; - getBitsReturn.lc = lc; - - } - - const hufTableBuffer = new Array( 59 ); - - function hufCanonicalCodeTable( hcode ) { - - for ( let i = 0; i <= 58; ++ i ) hufTableBuffer[ i ] = 0; - for ( let i = 0; i < HUF_ENCSIZE; ++ i ) hufTableBuffer[ hcode[ i ] ] += 1; - - let c = 0; - - for ( let i = 58; i > 0; -- i ) { - - const nc = ( ( c + hufTableBuffer[ i ] ) >> 1 ); - hufTableBuffer[ i ] = c; - c = nc; - - } - - for ( let i = 0; i < HUF_ENCSIZE; ++ i ) { - - const l = hcode[ i ]; - if ( l > 0 ) hcode[ i ] = l | ( hufTableBuffer[ l ] ++ << 6 ); - - } - - } - - function hufUnpackEncTable( uInt8Array, inOffset, ni, im, iM, hcode ) { - - const p = inOffset; - let c = 0; - let lc = 0; - - for ( ; im <= iM; im ++ ) { - - if ( p.value - inOffset.value > ni ) return false; - - getBits( 6, c, lc, uInt8Array, p ); - - const l = getBitsReturn.l; - c = getBitsReturn.c; - lc = getBitsReturn.lc; - - hcode[ im ] = l; - - if ( l == LONG_ZEROCODE_RUN ) { - - if ( p.value - inOffset.value > ni ) { - - throw new Error( 'Something wrong with hufUnpackEncTable' ); - - } - - getBits( 8, c, lc, uInt8Array, p ); - - let zerun = getBitsReturn.l + SHORTEST_LONG_RUN; - c = getBitsReturn.c; - lc = getBitsReturn.lc; - - if ( im + zerun > iM + 1 ) { - - throw new Error( 'Something wrong with hufUnpackEncTable' ); - - } - - while ( zerun -- ) hcode[ im ++ ] = 0; - - im --; - - } else if ( l >= SHORT_ZEROCODE_RUN ) { - - let zerun = l - SHORT_ZEROCODE_RUN + 2; - - if ( im + zerun > iM + 1 ) { - - throw new Error( 'Something wrong with hufUnpackEncTable' ); - - } - - while ( zerun -- ) hcode[ im ++ ] = 0; - - im --; - - } - - } - - hufCanonicalCodeTable( hcode ); - - } - - function hufLength( code ) { - - return code & 63; - - } - - function hufCode( code ) { - - return code >> 6; - - } - - function hufBuildDecTable( hcode, im, iM, hdecod ) { - - for ( ; im <= iM; im ++ ) { - - const c = hufCode( hcode[ im ] ); - const l = hufLength( hcode[ im ] ); - - if ( c >> l ) { - - throw new Error( 'Invalid table entry' ); - - } - - if ( l > HUF_DECBITS ) { - - const pl = hdecod[ ( c >> ( l - HUF_DECBITS ) ) ]; - - if ( pl.len ) { - - throw new Error( 'Invalid table entry' ); - - } - - pl.lit ++; - - if ( pl.p ) { - - const p = pl.p; - pl.p = new Array( pl.lit ); - - for ( let i = 0; i < pl.lit - 1; ++ i ) { - - pl.p[ i ] = p[ i ]; - - } - - } else { - - pl.p = new Array( 1 ); - - } - - pl.p[ pl.lit - 1 ] = im; - - } else if ( l ) { - - let plOffset = 0; - - for ( let i = 1 << ( HUF_DECBITS - l ); i > 0; i -- ) { - - const pl = hdecod[ ( c << ( HUF_DECBITS - l ) ) + plOffset ]; - - if ( pl.len || pl.p ) { - - throw new Error( 'Invalid table entry' ); - - } - - pl.len = l; - pl.lit = im; - - plOffset ++; - - } - - } - - } - - return true; - - } - - const getCharReturn = { c: 0, lc: 0 }; - - function getChar( c, lc, uInt8Array, inOffset ) { - - c = ( c << 8 ) | parseUint8Array( uInt8Array, inOffset ); - lc += 8; - - getCharReturn.c = c; - getCharReturn.lc = lc; - - } - - const getCodeReturn = { c: 0, lc: 0 }; - - function getCode( po, rlc, c, lc, uInt8Array, inOffset, outBuffer, outBufferOffset, outBufferEndOffset ) { - - if ( po == rlc ) { - - if ( lc < 8 ) { - - getChar( c, lc, uInt8Array, inOffset ); - c = getCharReturn.c; - lc = getCharReturn.lc; - - } - - lc -= 8; - - let cs = ( c >> lc ); - cs = new Uint8Array( [ cs ] )[ 0 ]; - - if ( outBufferOffset.value + cs > outBufferEndOffset ) { - - return false; - - } - - const s = outBuffer[ outBufferOffset.value - 1 ]; - - while ( cs -- > 0 ) { - - outBuffer[ outBufferOffset.value ++ ] = s; - - } - - } else if ( outBufferOffset.value < outBufferEndOffset ) { - - outBuffer[ outBufferOffset.value ++ ] = po; - - } else { - - return false; - - } - - getCodeReturn.c = c; - getCodeReturn.lc = lc; - - } - - function UInt16( value ) { - - return ( value & 0xFFFF ); - - } - - function Int16( value ) { - - const ref = UInt16( value ); - return ( ref > 0x7FFF ) ? ref - 0x10000 : ref; - - } - - const wdec14Return = { a: 0, b: 0 }; - - function wdec14( l, h ) { - - const ls = Int16( l ); - const hs = Int16( h ); - - const hi = hs; - const ai = ls + ( hi & 1 ) + ( hi >> 1 ); - - const as = ai; - const bs = ai - hi; - - wdec14Return.a = as; - wdec14Return.b = bs; - - } - - function wdec16( l, h ) { - - const m = UInt16( l ); - const d = UInt16( h ); - - const bb = ( m - ( d >> 1 ) ) & MOD_MASK; - const aa = ( d + bb - A_OFFSET ) & MOD_MASK; - - wdec14Return.a = aa; - wdec14Return.b = bb; - - } - - function wav2Decode( buffer, j, nx, ox, ny, oy, mx ) { - - const w14 = mx < ( 1 << 14 ); - const n = ( nx > ny ) ? ny : nx; - let p = 1; - let p2; - let py; - - while ( p <= n ) p <<= 1; - - p >>= 1; - p2 = p; - p >>= 1; - - while ( p >= 1 ) { - - py = 0; - const ey = py + oy * ( ny - p2 ); - const oy1 = oy * p; - const oy2 = oy * p2; - const ox1 = ox * p; - const ox2 = ox * p2; - let i00, i01, i10, i11; - - for ( ; py <= ey; py += oy2 ) { - - let px = py; - const ex = py + ox * ( nx - p2 ); - - for ( ; px <= ex; px += ox2 ) { - - const p01 = px + ox1; - const p10 = px + oy1; - const p11 = p10 + ox1; - - if ( w14 ) { - - wdec14( buffer[ px + j ], buffer[ p10 + j ] ); - - i00 = wdec14Return.a; - i10 = wdec14Return.b; - - wdec14( buffer[ p01 + j ], buffer[ p11 + j ] ); - - i01 = wdec14Return.a; - i11 = wdec14Return.b; - - wdec14( i00, i01 ); - - buffer[ px + j ] = wdec14Return.a; - buffer[ p01 + j ] = wdec14Return.b; - - wdec14( i10, i11 ); - - buffer[ p10 + j ] = wdec14Return.a; - buffer[ p11 + j ] = wdec14Return.b; - - } else { - - wdec16( buffer[ px + j ], buffer[ p10 + j ] ); - - i00 = wdec14Return.a; - i10 = wdec14Return.b; - - wdec16( buffer[ p01 + j ], buffer[ p11 + j ] ); - - i01 = wdec14Return.a; - i11 = wdec14Return.b; - - wdec16( i00, i01 ); - - buffer[ px + j ] = wdec14Return.a; - buffer[ p01 + j ] = wdec14Return.b; - - wdec16( i10, i11 ); - - buffer[ p10 + j ] = wdec14Return.a; - buffer[ p11 + j ] = wdec14Return.b; - - - } - - } - - if ( nx & p ) { - - const p10 = px + oy1; - - if ( w14 ) - wdec14( buffer[ px + j ], buffer[ p10 + j ] ); - else - wdec16( buffer[ px + j ], buffer[ p10 + j ] ); - - i00 = wdec14Return.a; - buffer[ p10 + j ] = wdec14Return.b; - - buffer[ px + j ] = i00; - - } - - } - - if ( ny & p ) { - - let px = py; - const ex = py + ox * ( nx - p2 ); - - for ( ; px <= ex; px += ox2 ) { - - const p01 = px + ox1; - - if ( w14 ) - wdec14( buffer[ px + j ], buffer[ p01 + j ] ); - else - wdec16( buffer[ px + j ], buffer[ p01 + j ] ); - - i00 = wdec14Return.a; - buffer[ p01 + j ] = wdec14Return.b; - - buffer[ px + j ] = i00; - - } - - } - - p2 = p; - p >>= 1; - - } - - return py; - - } - - function hufDecode( encodingTable, decodingTable, uInt8Array, inOffset, ni, rlc, no, outBuffer, outOffset ) { - - let c = 0; - let lc = 0; - const outBufferEndOffset = no; - const inOffsetEnd = Math.trunc( inOffset.value + ( ni + 7 ) / 8 ); - - while ( inOffset.value < inOffsetEnd ) { - - getChar( c, lc, uInt8Array, inOffset ); - - c = getCharReturn.c; - lc = getCharReturn.lc; - - while ( lc >= HUF_DECBITS ) { - - const index = ( c >> ( lc - HUF_DECBITS ) ) & HUF_DECMASK; - const pl = decodingTable[ index ]; - - if ( pl.len ) { - - lc -= pl.len; - - getCode( pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset ); - - c = getCodeReturn.c; - lc = getCodeReturn.lc; - - } else { - - if ( ! pl.p ) { - - throw new Error( 'hufDecode issues' ); - - } - - let j; - - for ( j = 0; j < pl.lit; j ++ ) { - - const l = hufLength( encodingTable[ pl.p[ j ] ] ); - - while ( lc < l && inOffset.value < inOffsetEnd ) { - - getChar( c, lc, uInt8Array, inOffset ); - - c = getCharReturn.c; - lc = getCharReturn.lc; - - } - - if ( lc >= l ) { - - if ( hufCode( encodingTable[ pl.p[ j ] ] ) == ( ( c >> ( lc - l ) ) & ( ( 1 << l ) - 1 ) ) ) { - - lc -= l; - - getCode( pl.p[ j ], rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset ); - - c = getCodeReturn.c; - lc = getCodeReturn.lc; - - break; - - } - - } - - } - - if ( j == pl.lit ) { - - throw new Error( 'hufDecode issues' ); - - } - - } - - } - - } - - const i = ( 8 - ni ) & 7; - - c >>= i; - lc -= i; - - while ( lc > 0 ) { - - const pl = decodingTable[ ( c << ( HUF_DECBITS - lc ) ) & HUF_DECMASK ]; - - if ( pl.len ) { - - lc -= pl.len; - - getCode( pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset ); - - c = getCodeReturn.c; - lc = getCodeReturn.lc; - - } else { - - throw new Error( 'hufDecode issues' ); - - } - - } - - return true; - - } - - function hufUncompress( uInt8Array, inDataView, inOffset, nCompressed, outBuffer, nRaw ) { - - const outOffset = { value: 0 }; - const initialInOffset = inOffset.value; - - const im = parseUint32( inDataView, inOffset ); - const iM = parseUint32( inDataView, inOffset ); - - inOffset.value += 4; - - const nBits = parseUint32( inDataView, inOffset ); - - inOffset.value += 4; - - if ( im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE ) { - - throw new Error( 'Something wrong with HUF_ENCSIZE' ); - - } - - const freq = new Array( HUF_ENCSIZE ); - const hdec = new Array( HUF_DECSIZE ); - - hufClearDecTable( hdec ); - - const ni = nCompressed - ( inOffset.value - initialInOffset ); - - hufUnpackEncTable( uInt8Array, inOffset, ni, im, iM, freq ); - - if ( nBits > 8 * ( nCompressed - ( inOffset.value - initialInOffset ) ) ) { - - throw new Error( 'Something wrong with hufUncompress' ); - - } - - hufBuildDecTable( freq, im, iM, hdec ); - - hufDecode( freq, hdec, uInt8Array, inOffset, nBits, iM, nRaw, outBuffer, outOffset ); - - } - - function applyLut( lut, data, nData ) { - - for ( let i = 0; i < nData; ++ i ) { - - data[ i ] = lut[ data[ i ] ]; - - } - - } - - function predictor( source ) { - - for ( let t = 1; t < source.length; t ++ ) { - - const d = source[ t - 1 ] + source[ t ] - 128; - source[ t ] = d; - - } - - } - - function interleaveScalar( source, out ) { - - let t1 = 0; - let t2 = Math.floor( ( source.length + 1 ) / 2 ); - let s = 0; - const stop = source.length - 1; - - while ( true ) { - - if ( s > stop ) break; - out[ s ++ ] = source[ t1 ++ ]; - - if ( s > stop ) break; - out[ s ++ ] = source[ t2 ++ ]; - - } - - } - - function decodeRunLength( source ) { - - let size = source.byteLength; - const out = new Array(); - let p = 0; - - const reader = new DataView( source ); - - while ( size > 0 ) { - - const l = reader.getInt8( p ++ ); - - if ( l < 0 ) { - - const count = - l; - size -= count + 1; - - for ( let i = 0; i < count; i ++ ) { - - out.push( reader.getUint8( p ++ ) ); - - } - - - } else { - - const count = l; - size -= 2; - - const value = reader.getUint8( p ++ ); - - for ( let i = 0; i < count + 1; i ++ ) { - - out.push( value ); - - } - - } - - } - - return out; - - } - - function lossyDctDecode( cscSet, rowPtrs, channelData, acBuffer, dcBuffer, outBuffer ) { - - let dataView = new DataView( outBuffer.buffer ); - - const width = channelData[ cscSet.idx[ 0 ] ].width; - const height = channelData[ cscSet.idx[ 0 ] ].height; - - const numComp = 3; - - const numFullBlocksX = Math.floor( width / 8.0 ); - const numBlocksX = Math.ceil( width / 8.0 ); - const numBlocksY = Math.ceil( height / 8.0 ); - const leftoverX = width - ( numBlocksX - 1 ) * 8; - const leftoverY = height - ( numBlocksY - 1 ) * 8; - - const currAcComp = { value: 0 }; - const currDcComp = new Array( numComp ); - const dctData = new Array( numComp ); - const halfZigBlock = new Array( numComp ); - const rowBlock = new Array( numComp ); - const rowOffsets = new Array( numComp ); - - for ( let comp = 0; comp < numComp; ++ comp ) { - - rowOffsets[ comp ] = rowPtrs[ cscSet.idx[ comp ] ]; - currDcComp[ comp ] = ( comp < 1 ) ? 0 : currDcComp[ comp - 1 ] + numBlocksX * numBlocksY; - dctData[ comp ] = new Float32Array( 64 ); - halfZigBlock[ comp ] = new Uint16Array( 64 ); - rowBlock[ comp ] = new Uint16Array( numBlocksX * 64 ); - - } - - for ( let blocky = 0; blocky < numBlocksY; ++ blocky ) { - - let maxY = 8; - - if ( blocky == numBlocksY - 1 ) - maxY = leftoverY; - - let maxX = 8; - - for ( let blockx = 0; blockx < numBlocksX; ++ blockx ) { - - if ( blockx == numBlocksX - 1 ) - maxX = leftoverX; - - for ( let comp = 0; comp < numComp; ++ comp ) { - - halfZigBlock[ comp ].fill( 0 ); - - // set block DC component - halfZigBlock[ comp ][ 0 ] = dcBuffer[ currDcComp[ comp ] ++ ]; - // set block AC components - unRleAC( currAcComp, acBuffer, halfZigBlock[ comp ] ); - - // UnZigZag block to float - unZigZag( halfZigBlock[ comp ], dctData[ comp ] ); - // decode float dct - dctInverse( dctData[ comp ] ); - - } - - if ( numComp == 3 ) { - - csc709Inverse( dctData ); - - } - - for ( let comp = 0; comp < numComp; ++ comp ) { - - convertToHalf( dctData[ comp ], rowBlock[ comp ], blockx * 64 ); - - } - - } // blockx - - let offset = 0; - - for ( let comp = 0; comp < numComp; ++ comp ) { - - const type = channelData[ cscSet.idx[ comp ] ].type; - - for ( let y = 8 * blocky; y < 8 * blocky + maxY; ++ y ) { - - offset = rowOffsets[ comp ][ y ]; - - for ( let blockx = 0; blockx < numFullBlocksX; ++ blockx ) { - - const src = blockx * 64 + ( ( y & 0x7 ) * 8 ); - - dataView.setUint16( offset + 0 * INT16_SIZE * type, rowBlock[ comp ][ src + 0 ], true ); - dataView.setUint16( offset + 1 * INT16_SIZE * type, rowBlock[ comp ][ src + 1 ], true ); - dataView.setUint16( offset + 2 * INT16_SIZE * type, rowBlock[ comp ][ src + 2 ], true ); - dataView.setUint16( offset + 3 * INT16_SIZE * type, rowBlock[ comp ][ src + 3 ], true ); - - dataView.setUint16( offset + 4 * INT16_SIZE * type, rowBlock[ comp ][ src + 4 ], true ); - dataView.setUint16( offset + 5 * INT16_SIZE * type, rowBlock[ comp ][ src + 5 ], true ); - dataView.setUint16( offset + 6 * INT16_SIZE * type, rowBlock[ comp ][ src + 6 ], true ); - dataView.setUint16( offset + 7 * INT16_SIZE * type, rowBlock[ comp ][ src + 7 ], true ); - - offset += 8 * INT16_SIZE * type; - - } - - } - - // handle partial X blocks - if ( numFullBlocksX != numBlocksX ) { - - for ( let y = 8 * blocky; y < 8 * blocky + maxY; ++ y ) { - - const offset = rowOffsets[ comp ][ y ] + 8 * numFullBlocksX * INT16_SIZE * type; - const src = numFullBlocksX * 64 + ( ( y & 0x7 ) * 8 ); - - for ( let x = 0; x < maxX; ++ x ) { - - dataView.setUint16( offset + x * INT16_SIZE * type, rowBlock[ comp ][ src + x ], true ); - - } - - } - - } - - } // comp - - } // blocky - - const halfRow = new Uint16Array( width ); - dataView = new DataView( outBuffer.buffer ); - - // convert channels back to float, if needed - for ( let comp = 0; comp < numComp; ++ comp ) { - - channelData[ cscSet.idx[ comp ] ].decoded = true; - const type = channelData[ cscSet.idx[ comp ] ].type; - - if ( channelData[ comp ].type != 2 ) continue; - - for ( let y = 0; y < height; ++ y ) { - - const offset = rowOffsets[ comp ][ y ]; - - for ( let x = 0; x < width; ++ x ) { - - halfRow[ x ] = dataView.getUint16( offset + x * INT16_SIZE * type, true ); - - } - - for ( let x = 0; x < width; ++ x ) { - - dataView.setFloat32( offset + x * INT16_SIZE * type, decodeFloat16( halfRow[ x ] ), true ); - - } - - } - - } - - } - - function unRleAC( currAcComp, acBuffer, halfZigBlock ) { - - let acValue; - let dctComp = 1; - - while ( dctComp < 64 ) { - - acValue = acBuffer[ currAcComp.value ]; - - if ( acValue == 0xff00 ) { - - dctComp = 64; - - } else if ( acValue >> 8 == 0xff ) { - - dctComp += acValue & 0xff; - - } else { - - halfZigBlock[ dctComp ] = acValue; - dctComp ++; - - } - - currAcComp.value ++; - - } - - } - - function unZigZag( src, dst ) { - - dst[ 0 ] = decodeFloat16( src[ 0 ] ); - dst[ 1 ] = decodeFloat16( src[ 1 ] ); - dst[ 2 ] = decodeFloat16( src[ 5 ] ); - dst[ 3 ] = decodeFloat16( src[ 6 ] ); - dst[ 4 ] = decodeFloat16( src[ 14 ] ); - dst[ 5 ] = decodeFloat16( src[ 15 ] ); - dst[ 6 ] = decodeFloat16( src[ 27 ] ); - dst[ 7 ] = decodeFloat16( src[ 28 ] ); - dst[ 8 ] = decodeFloat16( src[ 2 ] ); - dst[ 9 ] = decodeFloat16( src[ 4 ] ); - - dst[ 10 ] = decodeFloat16( src[ 7 ] ); - dst[ 11 ] = decodeFloat16( src[ 13 ] ); - dst[ 12 ] = decodeFloat16( src[ 16 ] ); - dst[ 13 ] = decodeFloat16( src[ 26 ] ); - dst[ 14 ] = decodeFloat16( src[ 29 ] ); - dst[ 15 ] = decodeFloat16( src[ 42 ] ); - dst[ 16 ] = decodeFloat16( src[ 3 ] ); - dst[ 17 ] = decodeFloat16( src[ 8 ] ); - dst[ 18 ] = decodeFloat16( src[ 12 ] ); - dst[ 19 ] = decodeFloat16( src[ 17 ] ); - - dst[ 20 ] = decodeFloat16( src[ 25 ] ); - dst[ 21 ] = decodeFloat16( src[ 30 ] ); - dst[ 22 ] = decodeFloat16( src[ 41 ] ); - dst[ 23 ] = decodeFloat16( src[ 43 ] ); - dst[ 24 ] = decodeFloat16( src[ 9 ] ); - dst[ 25 ] = decodeFloat16( src[ 11 ] ); - dst[ 26 ] = decodeFloat16( src[ 18 ] ); - dst[ 27 ] = decodeFloat16( src[ 24 ] ); - dst[ 28 ] = decodeFloat16( src[ 31 ] ); - dst[ 29 ] = decodeFloat16( src[ 40 ] ); - - dst[ 30 ] = decodeFloat16( src[ 44 ] ); - dst[ 31 ] = decodeFloat16( src[ 53 ] ); - dst[ 32 ] = decodeFloat16( src[ 10 ] ); - dst[ 33 ] = decodeFloat16( src[ 19 ] ); - dst[ 34 ] = decodeFloat16( src[ 23 ] ); - dst[ 35 ] = decodeFloat16( src[ 32 ] ); - dst[ 36 ] = decodeFloat16( src[ 39 ] ); - dst[ 37 ] = decodeFloat16( src[ 45 ] ); - dst[ 38 ] = decodeFloat16( src[ 52 ] ); - dst[ 39 ] = decodeFloat16( src[ 54 ] ); - - dst[ 40 ] = decodeFloat16( src[ 20 ] ); - dst[ 41 ] = decodeFloat16( src[ 22 ] ); - dst[ 42 ] = decodeFloat16( src[ 33 ] ); - dst[ 43 ] = decodeFloat16( src[ 38 ] ); - dst[ 44 ] = decodeFloat16( src[ 46 ] ); - dst[ 45 ] = decodeFloat16( src[ 51 ] ); - dst[ 46 ] = decodeFloat16( src[ 55 ] ); - dst[ 47 ] = decodeFloat16( src[ 60 ] ); - dst[ 48 ] = decodeFloat16( src[ 21 ] ); - dst[ 49 ] = decodeFloat16( src[ 34 ] ); - - dst[ 50 ] = decodeFloat16( src[ 37 ] ); - dst[ 51 ] = decodeFloat16( src[ 47 ] ); - dst[ 52 ] = decodeFloat16( src[ 50 ] ); - dst[ 53 ] = decodeFloat16( src[ 56 ] ); - dst[ 54 ] = decodeFloat16( src[ 59 ] ); - dst[ 55 ] = decodeFloat16( src[ 61 ] ); - dst[ 56 ] = decodeFloat16( src[ 35 ] ); - dst[ 57 ] = decodeFloat16( src[ 36 ] ); - dst[ 58 ] = decodeFloat16( src[ 48 ] ); - dst[ 59 ] = decodeFloat16( src[ 49 ] ); - - dst[ 60 ] = decodeFloat16( src[ 57 ] ); - dst[ 61 ] = decodeFloat16( src[ 58 ] ); - dst[ 62 ] = decodeFloat16( src[ 62 ] ); - dst[ 63 ] = decodeFloat16( src[ 63 ] ); - - } - - function dctInverse( data ) { - - const a = 0.5 * Math.cos( 3.14159 / 4.0 ); - const b = 0.5 * Math.cos( 3.14159 / 16.0 ); - const c = 0.5 * Math.cos( 3.14159 / 8.0 ); - const d = 0.5 * Math.cos( 3.0 * 3.14159 / 16.0 ); - const e = 0.5 * Math.cos( 5.0 * 3.14159 / 16.0 ); - const f = 0.5 * Math.cos( 3.0 * 3.14159 / 8.0 ); - const g = 0.5 * Math.cos( 7.0 * 3.14159 / 16.0 ); - - const alpha = new Array( 4 ); - const beta = new Array( 4 ); - const theta = new Array( 4 ); - const gamma = new Array( 4 ); - - for ( let row = 0; row < 8; ++ row ) { - - const rowPtr = row * 8; - - alpha[ 0 ] = c * data[ rowPtr + 2 ]; - alpha[ 1 ] = f * data[ rowPtr + 2 ]; - alpha[ 2 ] = c * data[ rowPtr + 6 ]; - alpha[ 3 ] = f * data[ rowPtr + 6 ]; - - beta[ 0 ] = b * data[ rowPtr + 1 ] + d * data[ rowPtr + 3 ] + e * data[ rowPtr + 5 ] + g * data[ rowPtr + 7 ]; - beta[ 1 ] = d * data[ rowPtr + 1 ] - g * data[ rowPtr + 3 ] - b * data[ rowPtr + 5 ] - e * data[ rowPtr + 7 ]; - beta[ 2 ] = e * data[ rowPtr + 1 ] - b * data[ rowPtr + 3 ] + g * data[ rowPtr + 5 ] + d * data[ rowPtr + 7 ]; - beta[ 3 ] = g * data[ rowPtr + 1 ] - e * data[ rowPtr + 3 ] + d * data[ rowPtr + 5 ] - b * data[ rowPtr + 7 ]; - - theta[ 0 ] = a * ( data[ rowPtr + 0 ] + data[ rowPtr + 4 ] ); - theta[ 3 ] = a * ( data[ rowPtr + 0 ] - data[ rowPtr + 4 ] ); - theta[ 1 ] = alpha[ 0 ] + alpha[ 3 ]; - theta[ 2 ] = alpha[ 1 ] - alpha[ 2 ]; - - gamma[ 0 ] = theta[ 0 ] + theta[ 1 ]; - gamma[ 1 ] = theta[ 3 ] + theta[ 2 ]; - gamma[ 2 ] = theta[ 3 ] - theta[ 2 ]; - gamma[ 3 ] = theta[ 0 ] - theta[ 1 ]; - - data[ rowPtr + 0 ] = gamma[ 0 ] + beta[ 0 ]; - data[ rowPtr + 1 ] = gamma[ 1 ] + beta[ 1 ]; - data[ rowPtr + 2 ] = gamma[ 2 ] + beta[ 2 ]; - data[ rowPtr + 3 ] = gamma[ 3 ] + beta[ 3 ]; - - data[ rowPtr + 4 ] = gamma[ 3 ] - beta[ 3 ]; - data[ rowPtr + 5 ] = gamma[ 2 ] - beta[ 2 ]; - data[ rowPtr + 6 ] = gamma[ 1 ] - beta[ 1 ]; - data[ rowPtr + 7 ] = gamma[ 0 ] - beta[ 0 ]; - - } - - for ( let column = 0; column < 8; ++ column ) { - - alpha[ 0 ] = c * data[ 16 + column ]; - alpha[ 1 ] = f * data[ 16 + column ]; - alpha[ 2 ] = c * data[ 48 + column ]; - alpha[ 3 ] = f * data[ 48 + column ]; - - beta[ 0 ] = b * data[ 8 + column ] + d * data[ 24 + column ] + e * data[ 40 + column ] + g * data[ 56 + column ]; - beta[ 1 ] = d * data[ 8 + column ] - g * data[ 24 + column ] - b * data[ 40 + column ] - e * data[ 56 + column ]; - beta[ 2 ] = e * data[ 8 + column ] - b * data[ 24 + column ] + g * data[ 40 + column ] + d * data[ 56 + column ]; - beta[ 3 ] = g * data[ 8 + column ] - e * data[ 24 + column ] + d * data[ 40 + column ] - b * data[ 56 + column ]; - - theta[ 0 ] = a * ( data[ column ] + data[ 32 + column ] ); - theta[ 3 ] = a * ( data[ column ] - data[ 32 + column ] ); - - theta[ 1 ] = alpha[ 0 ] + alpha[ 3 ]; - theta[ 2 ] = alpha[ 1 ] - alpha[ 2 ]; - - gamma[ 0 ] = theta[ 0 ] + theta[ 1 ]; - gamma[ 1 ] = theta[ 3 ] + theta[ 2 ]; - gamma[ 2 ] = theta[ 3 ] - theta[ 2 ]; - gamma[ 3 ] = theta[ 0 ] - theta[ 1 ]; - - data[ 0 + column ] = gamma[ 0 ] + beta[ 0 ]; - data[ 8 + column ] = gamma[ 1 ] + beta[ 1 ]; - data[ 16 + column ] = gamma[ 2 ] + beta[ 2 ]; - data[ 24 + column ] = gamma[ 3 ] + beta[ 3 ]; - - data[ 32 + column ] = gamma[ 3 ] - beta[ 3 ]; - data[ 40 + column ] = gamma[ 2 ] - beta[ 2 ]; - data[ 48 + column ] = gamma[ 1 ] - beta[ 1 ]; - data[ 56 + column ] = gamma[ 0 ] - beta[ 0 ]; - - } - - } - - function csc709Inverse( data ) { - - for ( let i = 0; i < 64; ++ i ) { - - const y = data[ 0 ][ i ]; - const cb = data[ 1 ][ i ]; - const cr = data[ 2 ][ i ]; - - data[ 0 ][ i ] = y + 1.5747 * cr; - data[ 1 ][ i ] = y - 0.1873 * cb - 0.4682 * cr; - data[ 2 ][ i ] = y + 1.8556 * cb; - - } - - } - - function convertToHalf( src, dst, idx ) { - - for ( let i = 0; i < 64; ++ i ) { - - dst[ idx + i ] = DataUtils.toHalfFloat( toLinear( src[ i ] ) ); - - } - - } - - function toLinear( float ) { - - if ( float <= 1 ) { - - return Math.sign( float ) * Math.pow( Math.abs( float ), 2.2 ); - - } else { - - return Math.sign( float ) * Math.pow( logBase, Math.abs( float ) - 1.0 ); - - } - - } - - function uncompressRAW( info ) { - - return new DataView( info.array.buffer, info.offset.value, info.size ); - - } - - function uncompressRLE( info ) { - - const compressed = info.viewer.buffer.slice( info.offset.value, info.offset.value + info.size ); - - const rawBuffer = new Uint8Array( decodeRunLength( compressed ) ); - const tmpBuffer = new Uint8Array( rawBuffer.length ); - - predictor( rawBuffer ); // revert predictor - - interleaveScalar( rawBuffer, tmpBuffer ); // interleave pixels - - return new DataView( tmpBuffer.buffer ); - - } - - function uncompressZIP( info ) { - - const compressed = info.array.slice( info.offset.value, info.offset.value + info.size ); - - const rawBuffer = fflate.unzlibSync( compressed ); - const tmpBuffer = new Uint8Array( rawBuffer.length ); - - predictor( rawBuffer ); // revert predictor - - interleaveScalar( rawBuffer, tmpBuffer ); // interleave pixels - - return new DataView( tmpBuffer.buffer ); - - } - - function uncompressPIZ( info ) { - - const inDataView = info.viewer; - const inOffset = { value: info.offset.value }; - - const outBuffer = new Uint16Array( info.width * info.scanlineBlockSize * ( info.channels * info.type ) ); - const bitmap = new Uint8Array( BITMAP_SIZE ); - - // Setup channel info - let outBufferEnd = 0; - const pizChannelData = new Array( info.channels ); - for ( let i = 0; i < info.channels; i ++ ) { - - pizChannelData[ i ] = {}; - pizChannelData[ i ][ 'start' ] = outBufferEnd; - pizChannelData[ i ][ 'end' ] = pizChannelData[ i ][ 'start' ]; - pizChannelData[ i ][ 'nx' ] = info.width; - pizChannelData[ i ][ 'ny' ] = info.lines; - pizChannelData[ i ][ 'size' ] = info.type; - - outBufferEnd += pizChannelData[ i ].nx * pizChannelData[ i ].ny * pizChannelData[ i ].size; - - } - - // Read range compression data - - const minNonZero = parseUint16( inDataView, inOffset ); - const maxNonZero = parseUint16( inDataView, inOffset ); - - if ( maxNonZero >= BITMAP_SIZE ) { - - throw new Error( 'Something is wrong with PIZ_COMPRESSION BITMAP_SIZE' ); - - } - - if ( minNonZero <= maxNonZero ) { - - for ( let i = 0; i < maxNonZero - minNonZero + 1; i ++ ) { - - bitmap[ i + minNonZero ] = parseUint8( inDataView, inOffset ); - - } - - } - - // Reverse LUT - const lut = new Uint16Array( USHORT_RANGE ); - const maxValue = reverseLutFromBitmap( bitmap, lut ); - - const length = parseUint32( inDataView, inOffset ); - - // Huffman decoding - hufUncompress( info.array, inDataView, inOffset, length, outBuffer, outBufferEnd ); - - // Wavelet decoding - for ( let i = 0; i < info.channels; ++ i ) { - - const cd = pizChannelData[ i ]; - - for ( let j = 0; j < pizChannelData[ i ].size; ++ j ) { - - wav2Decode( - outBuffer, - cd.start + j, - cd.nx, - cd.size, - cd.ny, - cd.nx * cd.size, - maxValue - ); - - } - - } - - // Expand the pixel data to their original range - applyLut( lut, outBuffer, outBufferEnd ); - - // Rearrange the pixel data into the format expected by the caller. - let tmpOffset = 0; - const tmpBuffer = new Uint8Array( outBuffer.buffer.byteLength ); - for ( let y = 0; y < info.lines; y ++ ) { - - for ( let c = 0; c < info.channels; c ++ ) { - - const cd = pizChannelData[ c ]; - - const n = cd.nx * cd.size; - const cp = new Uint8Array( outBuffer.buffer, cd.end * INT16_SIZE, n * INT16_SIZE ); - - tmpBuffer.set( cp, tmpOffset ); - tmpOffset += n * INT16_SIZE; - cd.end += n; - - } - - } - - return new DataView( tmpBuffer.buffer ); - - } - - function uncompressPXR( info ) { - - const compressed = info.array.slice( info.offset.value, info.offset.value + info.size ); - - const rawBuffer = fflate.unzlibSync( compressed ); - - const sz = info.lines * info.channels * info.width; - const tmpBuffer = ( info.type == 1 ) ? new Uint16Array( sz ) : new Uint32Array( sz ); - - let tmpBufferEnd = 0; - let writePtr = 0; - const ptr = new Array( 4 ); - - for ( let y = 0; y < info.lines; y ++ ) { - - for ( let c = 0; c < info.channels; c ++ ) { - - let pixel = 0; - - switch ( info.type ) { - - case 1: - - ptr[ 0 ] = tmpBufferEnd; - ptr[ 1 ] = ptr[ 0 ] + info.width; - tmpBufferEnd = ptr[ 1 ] + info.width; - - for ( let j = 0; j < info.width; ++ j ) { - - const diff = ( rawBuffer[ ptr[ 0 ] ++ ] << 8 ) | rawBuffer[ ptr[ 1 ] ++ ]; - - pixel += diff; - - tmpBuffer[ writePtr ] = pixel; - writePtr ++; - - } - - break; - - case 2: - - ptr[ 0 ] = tmpBufferEnd; - ptr[ 1 ] = ptr[ 0 ] + info.width; - ptr[ 2 ] = ptr[ 1 ] + info.width; - tmpBufferEnd = ptr[ 2 ] + info.width; - - for ( let j = 0; j < info.width; ++ j ) { - - const diff = ( rawBuffer[ ptr[ 0 ] ++ ] << 24 ) | ( rawBuffer[ ptr[ 1 ] ++ ] << 16 ) | ( rawBuffer[ ptr[ 2 ] ++ ] << 8 ); - - pixel += diff; - - tmpBuffer[ writePtr ] = pixel; - writePtr ++; - - } - - break; - - } - - } - - } - - return new DataView( tmpBuffer.buffer ); - - } - - function uncompressDWA( info ) { - - const inDataView = info.viewer; - const inOffset = { value: info.offset.value }; - const outBuffer = new Uint8Array( info.width * info.lines * ( info.channels * info.type * INT16_SIZE ) ); - - // Read compression header information - const dwaHeader = { - - version: parseInt64( inDataView, inOffset ), - unknownUncompressedSize: parseInt64( inDataView, inOffset ), - unknownCompressedSize: parseInt64( inDataView, inOffset ), - acCompressedSize: parseInt64( inDataView, inOffset ), - dcCompressedSize: parseInt64( inDataView, inOffset ), - rleCompressedSize: parseInt64( inDataView, inOffset ), - rleUncompressedSize: parseInt64( inDataView, inOffset ), - rleRawSize: parseInt64( inDataView, inOffset ), - totalAcUncompressedCount: parseInt64( inDataView, inOffset ), - totalDcUncompressedCount: parseInt64( inDataView, inOffset ), - acCompression: parseInt64( inDataView, inOffset ) - - }; - - if ( dwaHeader.version < 2 ) - throw new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' version ' + dwaHeader.version + ' is unsupported' ); - - // Read channel ruleset information - const channelRules = new Array(); - let ruleSize = parseUint16( inDataView, inOffset ) - INT16_SIZE; - - while ( ruleSize > 0 ) { - - const name = parseNullTerminatedString( inDataView.buffer, inOffset ); - const value = parseUint8( inDataView, inOffset ); - const compression = ( value >> 2 ) & 3; - const csc = ( value >> 4 ) - 1; - const index = new Int8Array( [ csc ] )[ 0 ]; - const type = parseUint8( inDataView, inOffset ); - - channelRules.push( { - name: name, - index: index, - type: type, - compression: compression, - } ); - - ruleSize -= name.length + 3; - - } - - // Classify channels - const channels = EXRHeader.channels; - const channelData = new Array( info.channels ); - - for ( let i = 0; i < info.channels; ++ i ) { - - const cd = channelData[ i ] = {}; - const channel = channels[ i ]; - - cd.name = channel.name; - cd.compression = UNKNOWN; - cd.decoded = false; - cd.type = channel.pixelType; - cd.pLinear = channel.pLinear; - cd.width = info.width; - cd.height = info.lines; - - } - - const cscSet = { - idx: new Array( 3 ) - }; - - for ( let offset = 0; offset < info.channels; ++ offset ) { - - const cd = channelData[ offset ]; - - for ( let i = 0; i < channelRules.length; ++ i ) { - - const rule = channelRules[ i ]; - - if ( cd.name == rule.name ) { - - cd.compression = rule.compression; - - if ( rule.index >= 0 ) { - - cscSet.idx[ rule.index ] = offset; - - } - - cd.offset = offset; - - } - - } - - } - - let acBuffer, dcBuffer, rleBuffer; - - // Read DCT - AC component data - if ( dwaHeader.acCompressedSize > 0 ) { - - switch ( dwaHeader.acCompression ) { - - case STATIC_HUFFMAN: - - acBuffer = new Uint16Array( dwaHeader.totalAcUncompressedCount ); - hufUncompress( info.array, inDataView, inOffset, dwaHeader.acCompressedSize, acBuffer, dwaHeader.totalAcUncompressedCount ); - break; - - case DEFLATE: - - const compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.totalAcUncompressedCount ); - const data = fflate.unzlibSync( compressed ); - acBuffer = new Uint16Array( data.buffer ); - inOffset.value += dwaHeader.totalAcUncompressedCount; - break; - - } - - - } - - // Read DCT - DC component data - if ( dwaHeader.dcCompressedSize > 0 ) { - - const zlibInfo = { - array: info.array, - offset: inOffset, - size: dwaHeader.dcCompressedSize - }; - dcBuffer = new Uint16Array( uncompressZIP( zlibInfo ).buffer ); - inOffset.value += dwaHeader.dcCompressedSize; - - } - - // Read RLE compressed data - if ( dwaHeader.rleRawSize > 0 ) { - - const compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.rleCompressedSize ); - const data = fflate.unzlibSync( compressed ); - rleBuffer = decodeRunLength( data.buffer ); - - inOffset.value += dwaHeader.rleCompressedSize; - - } - - // Prepare outbuffer data offset - let outBufferEnd = 0; - const rowOffsets = new Array( channelData.length ); - for ( let i = 0; i < rowOffsets.length; ++ i ) { - - rowOffsets[ i ] = new Array(); - - } - - for ( let y = 0; y < info.lines; ++ y ) { - - for ( let chan = 0; chan < channelData.length; ++ chan ) { - - rowOffsets[ chan ].push( outBufferEnd ); - outBufferEnd += channelData[ chan ].width * info.type * INT16_SIZE; - - } - - } - - // Lossy DCT decode RGB channels - lossyDctDecode( cscSet, rowOffsets, channelData, acBuffer, dcBuffer, outBuffer ); - - // Decode other channels - for ( let i = 0; i < channelData.length; ++ i ) { - - const cd = channelData[ i ]; - - if ( cd.decoded ) continue; - - switch ( cd.compression ) { - - case RLE: - - let row = 0; - let rleOffset = 0; - - for ( let y = 0; y < info.lines; ++ y ) { - - let rowOffsetBytes = rowOffsets[ i ][ row ]; - - for ( let x = 0; x < cd.width; ++ x ) { - - for ( let byte = 0; byte < INT16_SIZE * cd.type; ++ byte ) { - - outBuffer[ rowOffsetBytes ++ ] = rleBuffer[ rleOffset + byte * cd.width * cd.height ]; - - } - - rleOffset ++; - - } - - row ++; - - } - - break; - - case LOSSY_DCT: // skip - - default: - throw new Error( 'EXRLoader.parse: unsupported channel compression' ); - - } - - } - - return new DataView( outBuffer.buffer ); - - } - - function parseNullTerminatedString( buffer, offset ) { - - const uintBuffer = new Uint8Array( buffer ); - let endOffset = 0; - - while ( uintBuffer[ offset.value + endOffset ] != 0 ) { - - endOffset += 1; - - } - - const stringValue = new TextDecoder().decode( - uintBuffer.slice( offset.value, offset.value + endOffset ) - ); - - offset.value = offset.value + endOffset + 1; - - return stringValue; - - } - - function parseFixedLengthString( buffer, offset, size ) { - - const stringValue = new TextDecoder().decode( - new Uint8Array( buffer ).slice( offset.value, offset.value + size ) - ); - - offset.value = offset.value + size; - - return stringValue; - - } - - function parseRational( dataView, offset ) { - - const x = parseInt32( dataView, offset ); - const y = parseUint32( dataView, offset ); - - return [ x, y ]; - - } - - function parseTimecode( dataView, offset ) { - - const x = parseUint32( dataView, offset ); - const y = parseUint32( dataView, offset ); - - return [ x, y ]; - - } - - function parseInt32( dataView, offset ) { - - const Int32 = dataView.getInt32( offset.value, true ); - - offset.value = offset.value + INT32_SIZE; - - return Int32; - - } - - function parseUint32( dataView, offset ) { - - const Uint32 = dataView.getUint32( offset.value, true ); - - offset.value = offset.value + INT32_SIZE; - - return Uint32; - - } - - function parseUint8Array( uInt8Array, offset ) { - - const Uint8 = uInt8Array[ offset.value ]; - - offset.value = offset.value + INT8_SIZE; - - return Uint8; - - } - - function parseUint8( dataView, offset ) { - - const Uint8 = dataView.getUint8( offset.value ); - - offset.value = offset.value + INT8_SIZE; - - return Uint8; - - } - - const parseInt64 = function ( dataView, offset ) { - - let int; - - if ( 'getBigInt64' in DataView.prototype ) { - - int = Number( dataView.getBigInt64( offset.value, true ) ); - - } else { - - int = dataView.getUint32( offset.value + 4, true ) + Number( dataView.getUint32( offset.value, true ) << 32 ); - - } - - offset.value += ULONG_SIZE; - - return int; - - }; - - function parseFloat32( dataView, offset ) { - - const float = dataView.getFloat32( offset.value, true ); - - offset.value += FLOAT32_SIZE; - - return float; - - } - - function decodeFloat32( dataView, offset ) { - - return DataUtils.toHalfFloat( parseFloat32( dataView, offset ) ); - - } - - // https://stackoverflow.com/questions/5678432/decompressing-half-precision-floats-in-javascript - function decodeFloat16( binary ) { - - const exponent = ( binary & 0x7C00 ) >> 10, - fraction = binary & 0x03FF; - - return ( binary >> 15 ? - 1 : 1 ) * ( - exponent ? - ( - exponent === 0x1F ? - fraction ? NaN : Infinity : - Math.pow( 2, exponent - 15 ) * ( 1 + fraction / 0x400 ) - ) : - 6.103515625e-5 * ( fraction / 0x400 ) - ); - - } - - function parseUint16( dataView, offset ) { - - const Uint16 = dataView.getUint16( offset.value, true ); - - offset.value += INT16_SIZE; - - return Uint16; - - } - - function parseFloat16( buffer, offset ) { - - return decodeFloat16( parseUint16( buffer, offset ) ); - - } - - function parseChlist( dataView, buffer, offset, size ) { - - const startOffset = offset.value; - const channels = []; - - while ( offset.value < ( startOffset + size - 1 ) ) { - - const name = parseNullTerminatedString( buffer, offset ); - const pixelType = parseInt32( dataView, offset ); - const pLinear = parseUint8( dataView, offset ); - offset.value += 3; // reserved, three chars - const xSampling = parseInt32( dataView, offset ); - const ySampling = parseInt32( dataView, offset ); - - channels.push( { - name: name, - pixelType: pixelType, - pLinear: pLinear, - xSampling: xSampling, - ySampling: ySampling - } ); - - } - - offset.value += 1; - - return channels; - - } - - function parseChromaticities( dataView, offset ) { - - const redX = parseFloat32( dataView, offset ); - const redY = parseFloat32( dataView, offset ); - const greenX = parseFloat32( dataView, offset ); - const greenY = parseFloat32( dataView, offset ); - const blueX = parseFloat32( dataView, offset ); - const blueY = parseFloat32( dataView, offset ); - const whiteX = parseFloat32( dataView, offset ); - const whiteY = parseFloat32( dataView, offset ); - - return { redX: redX, redY: redY, greenX: greenX, greenY: greenY, blueX: blueX, blueY: blueY, whiteX: whiteX, whiteY: whiteY }; - - } - - function parseCompression( dataView, offset ) { - - const compressionCodes = [ - 'NO_COMPRESSION', - 'RLE_COMPRESSION', - 'ZIPS_COMPRESSION', - 'ZIP_COMPRESSION', - 'PIZ_COMPRESSION', - 'PXR24_COMPRESSION', - 'B44_COMPRESSION', - 'B44A_COMPRESSION', - 'DWAA_COMPRESSION', - 'DWAB_COMPRESSION' - ]; - - const compression = parseUint8( dataView, offset ); - - return compressionCodes[ compression ]; - - } - - function parseBox2i( dataView, offset ) { - - const xMin = parseUint32( dataView, offset ); - const yMin = parseUint32( dataView, offset ); - const xMax = parseUint32( dataView, offset ); - const yMax = parseUint32( dataView, offset ); - - return { xMin: xMin, yMin: yMin, xMax: xMax, yMax: yMax }; - - } - - function parseLineOrder( dataView, offset ) { - - const lineOrders = [ - 'INCREASING_Y' - ]; - - const lineOrder = parseUint8( dataView, offset ); - - return lineOrders[ lineOrder ]; - - } - - function parseV2f( dataView, offset ) { - - const x = parseFloat32( dataView, offset ); - const y = parseFloat32( dataView, offset ); - - return [ x, y ]; - - } - - function parseV3f( dataView, offset ) { - - const x = parseFloat32( dataView, offset ); - const y = parseFloat32( dataView, offset ); - const z = parseFloat32( dataView, offset ); - - return [ x, y, z ]; - - } - - function parseValue( dataView, buffer, offset, type, size ) { - - if ( type === 'string' || type === 'stringvector' || type === 'iccProfile' ) { - - return parseFixedLengthString( buffer, offset, size ); - - } else if ( type === 'chlist' ) { - - return parseChlist( dataView, buffer, offset, size ); - - } else if ( type === 'chromaticities' ) { - - return parseChromaticities( dataView, offset ); - - } else if ( type === 'compression' ) { - - return parseCompression( dataView, offset ); - - } else if ( type === 'box2i' ) { - - return parseBox2i( dataView, offset ); - - } else if ( type === 'lineOrder' ) { - - return parseLineOrder( dataView, offset ); - - } else if ( type === 'float' ) { - - return parseFloat32( dataView, offset ); - - } else if ( type === 'v2f' ) { - - return parseV2f( dataView, offset ); - - } else if ( type === 'v3f' ) { - - return parseV3f( dataView, offset ); - - } else if ( type === 'int' ) { - - return parseInt32( dataView, offset ); - - } else if ( type === 'rational' ) { - - return parseRational( dataView, offset ); - - } else if ( type === 'timecode' ) { - - return parseTimecode( dataView, offset ); - - } else if ( type === 'preview' ) { - - offset.value += size; - return 'skipped'; - - } else { - - offset.value += size; - return undefined; - - } - - } - - function parseHeader( dataView, buffer, offset ) { - - const EXRHeader = {}; - - if ( dataView.getUint32( 0, true ) != 20000630 ) { // magic - - throw new Error( 'THREE.EXRLoader: Provided file doesn\'t appear to be in OpenEXR format.' ); - - } - - EXRHeader.version = dataView.getUint8( 4 ); - - const spec = dataView.getUint8( 5 ); // fullMask - - EXRHeader.spec = { - singleTile: !! ( spec & 2 ), - longName: !! ( spec & 4 ), - deepFormat: !! ( spec & 8 ), - multiPart: !! ( spec & 16 ), - }; - - // start of header - - offset.value = 8; // start at 8 - after pre-amble - - let keepReading = true; - - while ( keepReading ) { - - const attributeName = parseNullTerminatedString( buffer, offset ); - - if ( attributeName == 0 ) { - - keepReading = false; - - } else { - - const attributeType = parseNullTerminatedString( buffer, offset ); - const attributeSize = parseUint32( dataView, offset ); - const attributeValue = parseValue( dataView, buffer, offset, attributeType, attributeSize ); - - if ( attributeValue === undefined ) { - - console.warn( `THREE.EXRLoader: Skipped unknown header attribute type \'${attributeType}\'.` ); - - } else { - - EXRHeader[ attributeName ] = attributeValue; - - } - - } - - } - - if ( ( spec & ~ 0x04 ) != 0 ) { // unsupported tiled, deep-image, multi-part - - console.error( 'THREE.EXRHeader:', EXRHeader ); - throw new Error( 'THREE.EXRLoader: Provided file is currently unsupported.' ); - - } - - return EXRHeader; - - } - - function setupDecoder( EXRHeader, dataView, uInt8Array, offset, outputType ) { - - const EXRDecoder = { - size: 0, - viewer: dataView, - array: uInt8Array, - offset: offset, - width: EXRHeader.dataWindow.xMax - EXRHeader.dataWindow.xMin + 1, - height: EXRHeader.dataWindow.yMax - EXRHeader.dataWindow.yMin + 1, - channels: EXRHeader.channels.length, - bytesPerLine: null, - lines: null, - inputSize: null, - type: EXRHeader.channels[ 0 ].pixelType, - uncompress: null, - getter: null, - format: null, - colorSpace: LinearSRGBColorSpace, - }; - - switch ( EXRHeader.compression ) { - - case 'NO_COMPRESSION': - EXRDecoder.lines = 1; - EXRDecoder.uncompress = uncompressRAW; - break; - - case 'RLE_COMPRESSION': - EXRDecoder.lines = 1; - EXRDecoder.uncompress = uncompressRLE; - break; - - case 'ZIPS_COMPRESSION': - EXRDecoder.lines = 1; - EXRDecoder.uncompress = uncompressZIP; - break; - - case 'ZIP_COMPRESSION': - EXRDecoder.lines = 16; - EXRDecoder.uncompress = uncompressZIP; - break; - - case 'PIZ_COMPRESSION': - EXRDecoder.lines = 32; - EXRDecoder.uncompress = uncompressPIZ; - break; - - case 'PXR24_COMPRESSION': - EXRDecoder.lines = 16; - EXRDecoder.uncompress = uncompressPXR; - break; - - case 'DWAA_COMPRESSION': - EXRDecoder.lines = 32; - EXRDecoder.uncompress = uncompressDWA; - break; - - case 'DWAB_COMPRESSION': - EXRDecoder.lines = 256; - EXRDecoder.uncompress = uncompressDWA; - break; - - default: - throw new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' is unsupported' ); - - } - - EXRDecoder.scanlineBlockSize = EXRDecoder.lines; - - if ( EXRDecoder.type == 1 ) { - - // half - switch ( outputType ) { - - case FloatType: - EXRDecoder.getter = parseFloat16; - EXRDecoder.inputSize = INT16_SIZE; - break; - - case HalfFloatType: - EXRDecoder.getter = parseUint16; - EXRDecoder.inputSize = INT16_SIZE; - break; - - } - - } else if ( EXRDecoder.type == 2 ) { - - // float - switch ( outputType ) { - - case FloatType: - EXRDecoder.getter = parseFloat32; - EXRDecoder.inputSize = FLOAT32_SIZE; - break; - - case HalfFloatType: - EXRDecoder.getter = decodeFloat32; - EXRDecoder.inputSize = FLOAT32_SIZE; - - } - - } else { - - throw new Error( 'EXRLoader.parse: unsupported pixelType ' + EXRDecoder.type + ' for ' + EXRHeader.compression + '.' ); - - } - - EXRDecoder.blockCount = ( EXRHeader.dataWindow.yMax + 1 ) / EXRDecoder.scanlineBlockSize; - - for ( let i = 0; i < EXRDecoder.blockCount; i ++ ) - parseInt64( dataView, offset ); // scanlineOffset - - // we should be passed the scanline offset table, ready to start reading pixel data. - - // RGB images will be converted to RGBA format, preventing software emulation in select devices. - EXRDecoder.outputChannels = ( ( EXRDecoder.channels == 3 ) ? 4 : EXRDecoder.channels ); - const size = EXRDecoder.width * EXRDecoder.height * EXRDecoder.outputChannels; - - switch ( outputType ) { - - case FloatType: - EXRDecoder.byteArray = new Float32Array( size ); - - // Fill initially with 1s for the alpha value if the texture is not RGBA, RGB values will be overwritten - if ( EXRDecoder.channels < EXRDecoder.outputChannels ) - EXRDecoder.byteArray.fill( 1, 0, size ); - - break; - - case HalfFloatType: - EXRDecoder.byteArray = new Uint16Array( size ); - - if ( EXRDecoder.channels < EXRDecoder.outputChannels ) - EXRDecoder.byteArray.fill( 0x3C00, 0, size ); // Uint16Array holds half float data, 0x3C00 is 1 - - break; - - default: - console.error( 'THREE.EXRLoader: unsupported type: ', outputType ); - break; - - } - - EXRDecoder.bytesPerLine = EXRDecoder.width * EXRDecoder.inputSize * EXRDecoder.channels; - - if ( EXRDecoder.outputChannels == 4 ) { - - EXRDecoder.format = RGBAFormat; - EXRDecoder.colorSpace = LinearSRGBColorSpace; - - } else { - - EXRDecoder.format = RedFormat; - EXRDecoder.colorSpace = NoColorSpace; - - } - - return EXRDecoder; - - } - - // start parsing file [START] - - const bufferDataView = new DataView( buffer ); - const uInt8Array = new Uint8Array( buffer ); - const offset = { value: 0 }; - - // get header information and validate format. - const EXRHeader = parseHeader( bufferDataView, buffer, offset ); - - // get input compression information and prepare decoding. - const EXRDecoder = setupDecoder( EXRHeader, bufferDataView, uInt8Array, offset, this.type ); - - const tmpOffset = { value: 0 }; - const channelOffsets = { R: 0, G: 1, B: 2, A: 3, Y: 0 }; - - for ( let scanlineBlockIdx = 0; scanlineBlockIdx < EXRDecoder.height / EXRDecoder.scanlineBlockSize; scanlineBlockIdx ++ ) { - - const line = parseUint32( bufferDataView, offset ); // line_no - EXRDecoder.size = parseUint32( bufferDataView, offset ); // data_len - EXRDecoder.lines = ( ( line + EXRDecoder.scanlineBlockSize > EXRDecoder.height ) ? ( EXRDecoder.height - line ) : EXRDecoder.scanlineBlockSize ); - - const isCompressed = EXRDecoder.size < EXRDecoder.lines * EXRDecoder.bytesPerLine; - const viewer = isCompressed ? EXRDecoder.uncompress( EXRDecoder ) : uncompressRAW( EXRDecoder ); - - offset.value += EXRDecoder.size; - - for ( let line_y = 0; line_y < EXRDecoder.scanlineBlockSize; line_y ++ ) { - - const true_y = line_y + scanlineBlockIdx * EXRDecoder.scanlineBlockSize; - if ( true_y >= EXRDecoder.height ) break; - - for ( let channelID = 0; channelID < EXRDecoder.channels; channelID ++ ) { - - const cOff = channelOffsets[ EXRHeader.channels[ channelID ].name ]; - - for ( let x = 0; x < EXRDecoder.width; x ++ ) { - - tmpOffset.value = ( line_y * ( EXRDecoder.channels * EXRDecoder.width ) + channelID * EXRDecoder.width + x ) * EXRDecoder.inputSize; - const outIndex = ( EXRDecoder.height - 1 - true_y ) * ( EXRDecoder.width * EXRDecoder.outputChannels ) + x * EXRDecoder.outputChannels + cOff; - EXRDecoder.byteArray[ outIndex ] = EXRDecoder.getter( viewer, tmpOffset ); - - } - - } - - } - - } - - return { - header: EXRHeader, - width: EXRDecoder.width, - height: EXRDecoder.height, - data: EXRDecoder.byteArray, - format: EXRDecoder.format, - colorSpace: EXRDecoder.colorSpace, - type: this.type, - }; - - } - - setDataType( value ) { - - this.type = value; - return this; - - } - - load( url, onLoad, onProgress, onError ) { - - function onLoadCallback( texture, texData ) { - - texture.colorSpace = texData.colorSpace; - texture.minFilter = LinearFilter; - texture.magFilter = LinearFilter; - texture.generateMipmaps = false; - texture.flipY = false; - - if ( onLoad ) onLoad( texture, texData ); - - } - - return super.load( url, onLoadCallback, onProgress, onError ); - - } - -} - -export { EXRLoader }; diff --git a/public/assets/lib/vendor/three/README.md b/public/assets/lib/vendor/three/README.md deleted file mode 100644 index 30398dda..00000000 --- a/public/assets/lib/vendor/three/README.md +++ /dev/null @@ -1,9 +0,0 @@ -reference: -- https://threejs.org/docs/index.html#examples/en/loaders/MTLLoader - -example: -- https://unpkg.com/three@0.160.0/build/three.module.js -- https://unpkg.com/three@0.160.0/examples/jsm/controls/OrbitControls.js -- https://unpkg.com/three@0.160.0/examples/jsm/loaders/GLTFLoader.js - -*note*: update the file to get the right import location diff --git a/public/assets/lib/vendor/three/rhino3dm/rhino3dm.d.ts b/public/assets/lib/vendor/three/rhino3dm/rhino3dm.d.ts deleted file mode 100644 index 579ee880..00000000 --- a/public/assets/lib/vendor/three/rhino3dm/rhino3dm.d.ts +++ /dev/null @@ -1,6961 +0,0 @@ -declare module 'rhino3dm' { - - export default function rhino3dm() : Promise; - - enum ActiveSpace { - None, - ModelSpace, - PageSpace - } - - enum BasepointZero { - GroundLevel, - MeanSeaLevel, - CenterOfEarth - } - - enum ComponentIndexType { - InvalidType, - BrepVertex, - BrepEdge, - BrepFace, - BrepTrim, - BrepLoop, - MeshVertex, - MeshTopologyVertex, - MeshTopologyEdge, - MeshFace, - MeshNgon, - InstanceDefinitionPart, - PolycurveSegment, - PointCloudPoint, - GroupMember, - ExtrusionBottomProfile, - ExtrusionTopProfile, - ExtrusionWallEdge, - ExtrusionWallSurface, - ExtrusionCapSurface, - ExtrusionPath, - SubdVertex, - SubdEdge, - SubdFace, - DimLinearPoint, - DimRadialPoint, - DimAngularPoint, - DimOrdinatePoint, - DimTextPoint, - NoType - } - - enum CoordinateSystem { - World, - Camera, - Clip, - Screen - } - - enum CurvePipingCapTypes { - None, - Flat, - Box, - Dome - } - - enum DecalMappings { - None, - Planar, - Cylindrical, - Spherical, - UV - } - - enum DecalProjections { - None, - Forward, - Backward, - Both - } - - enum DisplacementSweepResolutionFormulas { - Default, - AbsoluteToleranceDependent - } - - enum DitheringMethods { - SimpleNoise, - FloydSteinberg - } - - enum EnvironmentBackgroundProjections { - Planar, - Spherical, - Emap, - Box, - Automatic, - LightProbe, - CubeMap, - VerticalCrossCubeMap, - HorizontalCrossCubeMap, - Hemispherical - } - - enum InstanceDefinitionUpdateType { - Static, - Embedded, - LinkedAndEmbedded, - Linked - } - - enum LightStyle { - None, - CameraDirectional, - CameraPoint, - CameraSpot, - WorldDirectional, - WorldPoint, - WorldSpot, - Ambient, - WorldLinear, - WorldRectangular - } - - enum LineCircleIntersection { - None, - Single, - Multiple - } - - enum LineCylinderIntersection { - None, - Single, - Multiple, - Overlap - } - - enum LineSphereIntersection { - None, - Single, - Multiple - } - - enum Mappings { - None, - Planar, - Cylindrical, - Spherical, - UV - } - - enum MeshType { - Default, - Render, - Analysis, - Preview, - Any - } - - enum ObjectColorSource { - ColorFromLayer, - ColorFromObject, - ColorFromMaterial, - ColorFromParent - } - - enum ObjectDecoration { - None, - StartArrowhead, - EndArrowhead, - BothArrowhead - } - - enum ObjectLinetypeSource { - LinetypeFromLayer, - LinetypeFromObject, - LinetypeFromParent - } - - enum ObjectMaterialSource { - MaterialFromLayer, - MaterialFromObject, - MaterialFromParent - } - - enum ObjectMode { - Normal, - Hidden, - Locked, - InstanceDefinitionObject - } - - enum ObjectPlotColorSource { - PlotColorFromLayer, - PlotColorFromObject, - PlotColorFromDisplay, - PlotColorFromParent - } - - enum ObjectPlotWeightSource { - PlotWeightFromLayer, - PlotWeightFromObject, - PlotWeightFromParent - } - - enum ObjectType { - None, - Point, - PointSet, - Curve, - Surface, - Brep, - Mesh, - Light, - Annotation, - InstanceDefinition, - InstanceReference, - TextDot, - Grip, - Detail, - Hatch, - MorphControl, - SubD, - BrepLoop, - PolysrfFilter, - EdgeFilter, - PolyedgeFilter, - MeshVertex, - MeshEdge, - MeshFace, - Cage, - Phantom, - ClipPlane, - Extrusion, - AnyObject - } - - enum PlaneSphereIntersection { - None, - Point, - Circle - } - - enum PostEffectTypes { - Early, - ToneMapping, - Late - } - - enum Projections { - None, - Forward, - Backward, - Both - } - - enum RenderChannelsModes { - Automatic, - Custom - } - - enum SphereSphereIntersection { - None, - Point, - Circle, - Overlap - } - - enum TextureType { - None, - Bitmap, - Diffuse, - Bump, - Transparency, - Opacity, - Emap, - PBR_BaseColor, - PBR_Subsurface, - PBR_SubsurfaceScattering, - PBR_SubsurfaceScatteringRadius, - PBR_Metallic, - PBR_Specular, - PBR_SpecularTint, - PBR_Roughness, - PBR_Anisotropic, - PBR_Anisotropic_Rotation, - PBR_Sheen, - PBR_SheenTint, - PBR_Clearcoat, - PBR_ClearcoatRoughness, - PBR_OpacityIor, - PBR_OpacityRoughness, - PBR_Emission, - PBR_AmbientOcclusion, - PBR_Displacement, - PBR_ClearcoatBump - } - - enum TextureUvwWrapping { - Repeat, - Clamp - } - - enum TransformRigidType { - RigidReversing, - NotRigid, - Rigid - } - - enum TransformSimilarityType { - OrientationReversing, - NotSimilarity, - OrientationPreserving - } - - enum UnitSystem { - None, - Angstroms, - Nanometers, - Microns, - Millimeters, - Centimeters, - Decimeters, - Meters, - Dekameters, - Hectometers, - Kilometers, - Megameters, - Gigameters, - Microinches, - Mils, - Inches, - Feet, - Yards, - Miles, - PrinterPoints, - PrinterPicas, - NauticalMiles, - AstronomicalUnits, - LightYears, - Parsecs, - CustomUnits, - Unset - } - - class RhinoModule { - ActiveSpace: typeof ActiveSpace - BasepointZero: typeof BasepointZero - ComponentIndexType: typeof ComponentIndexType - CoordinateSystem: typeof CoordinateSystem - CurvePipingCapTypes: typeof CurvePipingCapTypes - DecalMappings: typeof DecalMappings - DecalProjections: typeof DecalProjections - DisplacementSweepResolutionFormulas: typeof DisplacementSweepResolutionFormulas - DitheringMethods: typeof DitheringMethods - EnvironmentBackgroundProjections: typeof EnvironmentBackgroundProjections - InstanceDefinitionUpdateType: typeof InstanceDefinitionUpdateType - LightStyle: typeof LightStyle - LineCircleIntersection: typeof LineCircleIntersection - LineCylinderIntersection: typeof LineCylinderIntersection - LineSphereIntersection: typeof LineSphereIntersection - Mappings: typeof Mappings - MeshType: typeof MeshType - ObjectColorSource: typeof ObjectColorSource - ObjectDecoration: typeof ObjectDecoration - ObjectLinetypeSource: typeof ObjectLinetypeSource - ObjectMaterialSource: typeof ObjectMaterialSource - ObjectMode: typeof ObjectMode - ObjectPlotColorSource: typeof ObjectPlotColorSource - ObjectPlotWeightSource: typeof ObjectPlotWeightSource - ObjectType: typeof ObjectType - PlaneSphereIntersection: typeof PlaneSphereIntersection - PostEffectTypes: typeof PostEffectTypes - Projections: typeof Projections - RenderChannelsModes: typeof RenderChannelsModes - SphereSphereIntersection: typeof SphereSphereIntersection - TextureType: typeof TextureType - TextureUvwWrapping: typeof TextureUvwWrapping - TransformRigidType: typeof TransformRigidType - TransformSimilarityType: typeof TransformSimilarityType - UnitSystem: typeof UnitSystem - AnnotationBase: typeof AnnotationBase; - Arc: typeof Arc; - ArcCurve: typeof ArcCurve; - ArchivableDictionary: typeof ArchivableDictionary; - BezierCurve: typeof BezierCurve; - Bitmap: typeof Bitmap; - BoundingBox: typeof BoundingBox; - Box: typeof Box; - Brep: typeof Brep; - BrepEdge: typeof BrepEdge; - BrepEdgeList: typeof BrepEdgeList; - BrepFace: typeof BrepFace; - BrepFaceList: typeof BrepFaceList; - BrepSurfaceList: typeof BrepSurfaceList; - BrepVertex: typeof BrepVertex; - BrepVertexList: typeof BrepVertexList; - Circle: typeof Circle; - CommonObject: typeof CommonObject; - ComponentIndex: typeof ComponentIndex; - Cone: typeof Cone; - ConstructionPlane: typeof ConstructionPlane; - Curve: typeof Curve; - CurvePiping: typeof CurvePiping; - CurveProxy: typeof CurveProxy; - Cylinder: typeof Cylinder; - Decal: typeof Decal; - DimensionStyle: typeof DimensionStyle; - Displacement: typeof Displacement; - Dithering: typeof Dithering; - DracoCompression: typeof DracoCompression; - DracoCompressionOptions: typeof DracoCompressionOptions; - EarthAnchorPoint: typeof EarthAnchorPoint; - EdgeSoftening: typeof EdgeSoftening; - Ellipse: typeof Ellipse; - EmbeddedFile: typeof EmbeddedFile; - Environment: typeof Environment; - Extrusion: typeof Extrusion; - File3dm: typeof File3dm; - File3dmBitmapTable: typeof File3dmBitmapTable; - File3dmDecalTable: typeof File3dmDecalTable; - File3dmDimStyleTable: typeof File3dmDimStyleTable; - File3dmEmbeddedFileTable: typeof File3dmEmbeddedFileTable; - File3dmGroupTable: typeof File3dmGroupTable; - File3dmInstanceDefinitionTable: typeof File3dmInstanceDefinitionTable; - File3dmLayerTable: typeof File3dmLayerTable; - File3dmLinetypeTable: typeof File3dmLinetypeTable; - File3dmMaterialTable: typeof File3dmMaterialTable; - File3dmMeshModifiers: typeof File3dmMeshModifiers; - File3dmObject: typeof File3dmObject; - File3dmObjectTable: typeof File3dmObjectTable; - File3dmPlugInData: typeof File3dmPlugInData; - File3dmPlugInDataTable: typeof File3dmPlugInDataTable; - File3dmPostEffectTable: typeof File3dmPostEffectTable; - File3dmRdkDocumentData: typeof File3dmRdkDocumentData; - File3dmRenderContentTable: typeof File3dmRenderContentTable; - File3dmSettings: typeof File3dmSettings; - File3dmShutLiningCurveTable: typeof File3dmShutLiningCurveTable; - File3dmStringTable: typeof File3dmStringTable; - File3dmViewTable: typeof File3dmViewTable; - File3dmWriteOptions: typeof File3dmWriteOptions; - FileReference: typeof FileReference; - Font: typeof Font; - GeometryBase: typeof GeometryBase; - GroundPlane: typeof GroundPlane; - Group: typeof Group; - Hatch: typeof Hatch; - InstanceDefinition: typeof InstanceDefinition; - InstanceReference: typeof InstanceReference; - Intersection: typeof Intersection; - Layer: typeof Layer; - Light: typeof Light; - Line: typeof Line; - LinearWorkflow: typeof LinearWorkflow; - LineCurve: typeof LineCurve; - Linetype: typeof Linetype; - Material: typeof Material; - Mesh: typeof Mesh; - MeshFaceList: typeof MeshFaceList; - MeshingParameters: typeof MeshingParameters; - MeshNormalList: typeof MeshNormalList; - MeshTextureCoordinateList: typeof MeshTextureCoordinateList; - MeshTopologyEdgeList: typeof MeshTopologyEdgeList; - MeshVertexColorList: typeof MeshVertexColorList; - MeshVertexList: typeof MeshVertexList; - ModelComponent: typeof ModelComponent; - NurbsCurve: typeof NurbsCurve; - NurbsCurveKnotList: typeof NurbsCurveKnotList; - NurbsCurvePointList: typeof NurbsCurvePointList; - NurbsSurface: typeof NurbsSurface; - NurbsSurfaceKnotList: typeof NurbsSurfaceKnotList; - NurbsSurfacePointList: typeof NurbsSurfacePointList; - ObjectAttributes: typeof ObjectAttributes; - PhysicallyBasedMaterial: typeof PhysicallyBasedMaterial; - Plane: typeof Plane; - PlaneSurface: typeof PlaneSurface; - Point: typeof Point; - Point3d: typeof Point3d; - Point3dList: typeof Point3dList; - PointCloud: typeof PointCloud; - PointCloudItem: typeof PointCloudItem; - PointGrid: typeof PointGrid; - PolyCurve: typeof PolyCurve; - Polyline: typeof Polyline; - PolylineCurve: typeof PolylineCurve; - PostEffect: typeof PostEffect; - RenderChannels: typeof RenderChannels; - RenderContent: typeof RenderContent; - RenderEnvironment: typeof RenderEnvironment; - RenderEnvironments: typeof RenderEnvironments; - RenderMaterial: typeof RenderMaterial; - RenderSettings: typeof RenderSettings; - RenderTexture: typeof RenderTexture; - RevSurface: typeof RevSurface; - SafeFrame: typeof SafeFrame; - ShutLining: typeof ShutLining; - ShutLiningCurve: typeof ShutLiningCurve; - Skylight: typeof Skylight; - Sphere: typeof Sphere; - SubD: typeof SubD; - Sun: typeof Sun; - Surface: typeof Surface; - SurfaceProxy: typeof SurfaceProxy; - TextDot: typeof TextDot; - Texture: typeof Texture; - TextureMapping: typeof TextureMapping; - Thickening: typeof Thickening; - Transform: typeof Transform; - ViewInfo: typeof ViewInfo; - ViewportInfo: typeof ViewportInfo; - } - - class AnnotationBase extends GeometryBase { - /** - * Text including additional RTF formatting information - */ - richText: string; - /** - * Text stripped of RTF formatting information - */ - plainText: string; - } - - class Arc { - /** - * Gets a value indicating whether or not this arc is valid. - * Detail: - * Radius>0 and 0 center + cos(t)*radius*xaxis + sin(t)*radius*yaxis. - * @param {number} t Parameter of point to evaluate. - * @returns {number[]} The point on the circle at the given parameter. - */ - pointAt(t:number): number[]; - /** - * @description Circles use trigonometric parameterization: - t -> center + cos(t)*radius*xaxis + sin(t)*radius*yaxis. - * @param {number} t Parameter of tangent to evaluate. - * @returns {number[]} The tangent at the circle at the given parameter. - */ - tangentAt(t:number): number[]; - /** - * @description Determines the value of the Nth derivative at a parameter. - * @param {number} derivative Which order of derivative is wanted. - * @param {number} t Parameter to evaluate derivative. Valid values are 0, 1, 2 and 3. - * @returns {number[]} The derivative of the circle at the given parameter. - */ - derivativeAt(derivative:number,t:number): number[]; - /** - * @description Gets the parameter on the circle which is closest to a test point. - * @param {number[]} testPoint Point to project onto the circle. - * @returns {Array} [boolean, number] - * (boolean) true on success, false on failure. - * (number) Parameter on circle closes to testPoint. - */ - closestParameter(testPoint:number[]): object; - /** - * @description Gets the point on the circle which is closest to a test point. - * @param {number[]} testPoint Point to project onto the circle. - * @returns {number[]} The point on the circle that is closest to testPoint or - Point3d.Unset on failure. - */ - closestPoint(testPoint:number[]): number[]; - /** - * @description Transforms this circle using an transformation matrix. - * @param {Transform} xform Transformation to apply. - * @returns {boolean} true on success, false on failure. - */ - transform(xform:Transform): boolean; - /** - * @description Moves the circle. - * @param {number[]} delta Translation vector. - * @returns {boolean} true on success, false on failure. - */ - translate(delta:number[]): boolean; - /** - * @description Reverse the orientation of the circle. Changes the domain from [a,b] - to [-b,-a]. - * @returns {void} - */ - reverse(): void; - /** - * @description Constructs a nurbs curve representation of this circle. - This amounts to the same as calling NurbsCurve.CreateFromCircle(). - * @returns {NurbsCurve} A nurbs curve representation of this circle or null if no such representation could be made. - */ - toNurbsCurve(): NurbsCurve; - } - - class CommonObject { - /** - * Tests an object to see if it is valid. - */ - isValid: boolean; - /** - */ - userStringCount: any; - /** ... */ - encode(): void; - /** - * @description Create a JSON string representation of this object - * @returns {string} - */ - toJSON(): string; - /** ... */ - static decode(): void; - /** ... */ - setUserString(): void; - /** ... */ - getUserString(): void; - /** ... */ - getUserStrings(): void; - /** ... */ - rdkXml(): void; - } - - class ComponentIndex { - /** - * The interpretation of Index depends on the Type value. - * Type m_index interpretation (0 based indices) - * no_type used when context makes it clear what array is being index - * brep_vertex Brep.m_V[] array index - * brep_edge Brep.m_E[] array index - * brep_face Brep.m_F[] array index - * brep_trim Brep.m_T[] array index - * brep_loop Brep.m_L[] array index - * mesh_vertex Mesh.m_V[] array index - * meshtop_vertex MeshTopology.m_topv[] array index - * meshtop_edge MeshTopology.m_tope[] array index - * mesh_face Mesh.m_F[] array index - * idef_part InstanceDefinition.m_object_uuid[] array index - * polycurve_segment PolyCurve::m_segment[] array index - * dim_linear_point LinearDimension2::POINT_INDEX - * dim_radial_point RadialDimension2::POINT_INDEX - * dim_angular_point AngularDimension2::POINT_INDEX - * dim_ordinate_point OrdinateDimension2::POINT_INDEX - * dim_text_point TextEntity2 origin point. - */ - componentIndexType: ComponentIndexType; - /** - * The interpretation of m_index depends on the m_type value. - * m_type m_index interpretation (0 based indices) - * no_type used when context makes it clear what array is being index - * brep_vertex Brep.m_V[] array index - * brep_edge Brep.m_E[] array index - * brep_face Brep.m_F[] array index - * brep_trim Brep.m_T[] array index - * brep_loop Brep.m_L[] array index - * mesh_vertex Mesh.m_V[] array index - * meshtop_vertex MeshTopology.m_topv[] array index - * meshtop_edge MeshTopology.m_tope[] array index - * mesh_face Mesh.m_F[] array index - * idef_part InstanceDefinition.m_object_uuid[] array index - * polycurve_segment PolyCurve::m_segment[] array index - * dim_linear_point LinearDimension2::POINT_INDEX - * dim_radial_point RadialDimension2::POINT_INDEX - * dim_angular_point AngularDimension2::POINT_INDEX - * dim_ordinate_point OrdinateDimension2::POINT_INDEX - * dim_text_point TextEntity2 origin point. - */ - index: number; - } - - class Cone { - /** - * Gets or sets the height of the circular right cone. - */ - height: number; - /** - * Gets or sets the radius of the cone. - */ - radius: number; - /** - * true if plane is valid, height is not zero and radius is not zero. - */ - isValid: boolean; - /** - * Center of base circle. - */ - basePoint: number[]; - /** - * Point at tip of the cone. - */ - apexPoint: number[]; - /** - * Unit vector axis of cone. - */ - axis: number[]; - /** - */ - angleInRadians: any; - /** - */ - angleInDegrees: any; - /** - * @description Constructs a Nurbs surface representation of this Cone. - This is synonymous with calling NurbsSurface.CreateFromCone(). - * @returns {NurbsSurface} A Nurbs surface representation of the cone or null. - */ - toNurbsSurface(): NurbsSurface; - /** - * @description Gets a Brep representation of the cone with a single - face for the cone, an edge along the cone seam, - and vertices at the base and apex ends of this seam edge. - The optional cap is a single face with one circular edge - starting and ending at the base vertex. - * @param {boolean} capBottom true if the bottom should be filled with a surface. false otherwise. - * @returns {Brep} A brep (polysurface) representation of this cone values. - */ - toBrep(capBottom:boolean): Brep; - } - - class ConstructionPlane { - /** - * Gets or sets the geometric plane to use for construction. - */ - plane: Plane; - /** - * Gets or sets the distance between grid lines. - */ - gridSpacing: number; - /** - * when "grid snap" is enabled, the distance between snap points. - * Typically this is the same distance as grid spacing. - */ - snapSpacing: number; - /** - * Gets or sets the total amount of grid lines in each direction. - */ - gridLineCount: number; - /** - * Gets or sets the recurrence of a wider line on the grid. - * 0: No lines are thick, all are drawn thin.1: All lines are thick.2: Every other line is thick.3: One line in three lines is thick (and two are thin).4: ... - */ - thickLineFrequency: number; - /** - * Gets or sets whether the grid is drawn on top of geometry. - * false=grid is always drawn behind 3d geometrytrue=grid is drawn at its depth as a 3d plane and grid lines obscure things behind the grid. - */ - depthBuffered: boolean; - /** - * Gets or sets the name of the construction plane. - */ - name: string; - } - - class Curve extends GeometryBase { - /** - * Gets or sets the domain of the curve. - */ - domain: number[]; - /** - * Gets the dimension of the object. - * The dimension is typically three. For parameter space trimming - * curves the dimension is two. In rare cases the dimension can - * be one or greater than three. - */ - dimension: number; - /** - * Gets the number of non-empty smooth (c-infinity) spans in the curve. - */ - spanCount: number; - /** - * Gets the maximum algebraic degree of any span - * or a good estimate if curve spans are not algebraic. - */ - degree: number; - /** - * Gets a value indicating whether or not this curve is a closed curve. - */ - isClosed: boolean; - /** - * Gets a value indicating whether or not this curve is considered to be Periodic. - */ - isPeriodic: boolean; - /** - * Evaluates point at the start of the curve. - */ - pointAtStart: number[]; - /** - * Evaluates point at the end of the curve. - */ - pointAtEnd: number[]; - /** - * Evaluates the unit tangent vector at the start of the curve. - */ - tangentAtStart: number[]; - /** - * Evaluate unit tangent vector at the end of the curve. - */ - tangentAtEnd: number[]; - /** ... */ - static createControlPointCurve(): void; - /** - * @description Changes the dimension of a curve. - * @param {number} desiredDimension The desired dimension. - * @returns {boolean} true if the curve's dimension was already desiredDimension - or if the curve's dimension was successfully changed to desiredDimension; - otherwise false. - */ - changeDimension(desiredDimension:number): boolean; - /** - * @description Test a curve to see if it is linear to within RhinoMath.ZeroTolerance units (1e-12). - * @returns {boolean} true if the curve is linear. - */ - isLinear(): boolean; - /** - * @description Several types of Curve can have the form of a polyline - including a degree 1 NurbsCurve, a PolylineCurve, - and a PolyCurve all of whose segments are some form of - polyline. IsPolyline tests a curve to see if it can be - represented as a polyline. - * @returns {boolean} true if this curve can be represented as a polyline; otherwise, false. - */ - isPolyline(): boolean; - /** - * @description Several types of Curve can have the form of a polyline - including a degree 1 NurbsCurve, a PolylineCurve, - and a PolyCurve all of whose segments are some form of - polyline. IsPolyline tests a curve to see if it can be - represented as a polyline. - * @returns {Array} [boolean, Polyline] - * (boolean) true if this curve can be represented as a polyline; otherwise, false. - * (Polyline) If true is returned, then the polyline form is returned here. - */ - tryGetPolyline(): object; - /** - * @description Test a curve to see if it can be represented by an arc or circle within RhinoMath.ZeroTolerance. - * @returns {boolean} true if the curve can be represented by an arc or a circle within tolerance. - */ - isArc(): boolean; - /** - * @description Try to convert this curve into an Arc using RhinoMath.ZeroTolerance. - * @returns {Array} [boolean, Arc] - * (boolean) true if the curve could be converted into an arc. - * (Arc) On success, the Arc will be filled in. - */ - tryGetArc(): object; - /** - * @description Test a curve to see if it can be represented by a circle within RhinoMath.ZeroTolerance. - * @returns {boolean} true if the Curve can be represented by a circle within tolerance. - */ - isCircle(): boolean; - /** - * @description Try to convert this curve into a circle using RhinoMath.ZeroTolerance. - * @returns {Array} [boolean, Circle] - * (boolean) true if the curve could be converted into a Circle. - * (Circle) On success, the Circle will be filled in. - */ - tryGetCircle(): object; - /** - * @description Test a curve to see if it can be represented by an ellipse within RhinoMath.ZeroTolerance. - * @returns {boolean} true if the Curve can be represented by an ellipse within tolerance. - */ - isEllipse(): boolean; - /** - * @description Test a curve for planarity. - * @returns {boolean} true if the curve is planar (flat) to within RhinoMath.ZeroTolerance units (1e-12). - */ - isPlanar(): boolean; - /** - * @description If this curve is closed, then modify it so that the start/end point is at curve parameter t. - * @param {number} t Curve parameter of new start/end point. The returned curves domain will start at t. - * @returns {boolean} true on success, false on failure. - */ - changeClosedCurveSeam(t:number): boolean; - /** - * @description Reverses the direction of the curve. - * @returns {boolean} true on success, false on failure. - */ - reverse(): boolean; - /** - * @description Determines the orientation (counterclockwise or clockwise) of a closed, planar curve in the world XY plane. - Only works with simple (no self intersections) closed, planar curves. - * @returns {CurveOrientation} The orientation of this curve with respect to world XY plane. - */ - closedCurveOrientation(): CurveOrientation; - /** ... */ - closedCurveOrientationPlane(): void; - /** - * @description Evaluates point at a curve parameter. - * @param {number} t Evaluation parameter. - * @returns {number[]} Point (location of curve at the parameter t). - */ - pointAt(t:number): number[]; - /** - * @description Forces the curve to start at a specified point. - Not all curve types support this operation. - * @param {number[]} point New start point of curve. - * @returns {boolean} true on success, false on failure. - */ - setStartPoint(point:number[]): boolean; - /** - * @description Forces the curve to end at a specified point. - Not all curve types support this operation. - * @param {number[]} point New end point of curve. - * @returns {boolean} true on success, false on failure. - */ - setEndPoint(point:number[]): boolean; - /** - * @description Evaluates the unit tangent vector at a curve parameter. - * @param {number} t Evaluation parameter. - * @returns {number[]} Unit tangent vector of the curve at the parameter t. - */ - tangentAt(t:number): number[]; - /** - * @description Evaluate the curvature vector at a curve parameter. - * @param {number} t Evaluation parameter. - * @returns {number[]} Curvature vector of the curve at the parameter t. - */ - curvatureAt(t:number): number[]; - /** - * @description Returns a 3d frame at a parameter. - * @param {number} t Evaluation parameter. - * @returns {Array} [boolean, Plane] - * (boolean) true on success, false on failure. - * (Plane) The frame is returned here. - */ - frameAt(t:number): object; - /** - * @description Evaluate the derivatives at the specified curve parameter. - * @param {number} t Curve parameter to evaluate. - * @param {number} derivativeCount Number of derivatives to evaluate, must be at least 0. - * @returns {any[]} An array of vectors that represents all the derivatives starting at zero. - */ - derivativeAt(t:number,derivativeCount:number): any[]; - /** ... */ - derivativeAtSide(): void; - /** - * @description Convert a NURBS curve parameter to a curve parameter. - * @param {number} nurbsParameter NURBS form parameter. - * @returns {Array} [boolean, number] - * (boolean) true on success, false on failure. - * (number) Curve parameter. - */ - getCurveParameterFromNurbsFormParameter(nurbsParameter:number): object; - /** - * @description Convert a curve parameter to a NURBS curve parameter. - * @param {number} curveParameter Curve parameter. - * @returns {Array} [boolean, number] - * (boolean) true on success, false on failure. - * (number) NURBS form parameter. - */ - getNurbsFormParameterFromCurveParameter(curveParameter:number): object; - /** - * @description Removes portions of the curve outside the specified interval. - * @param {number} t0 Start of the trimming interval. Portions of the curve before curve(t0) are removed. - * @param {number} t1 End of the trimming interval. Portions of the curve after curve(t1) are removed. - * @returns {Curve} Trimmed portion of this curve is successful, null on failure. - */ - trim(t0:number,t1:number): Curve; - /** - * @description Splits (divides) the curve at the specified parameter. - The parameter must be in the interior of the curve's domain. - * @param {number} t Parameter to split the curve at in the interval returned by Domain(). - * @returns {Curve[]} Two curves on success, null on failure. - */ - split(t:number): Curve[]; - /** - * @description Constructs a NURBS curve representation of this curve. - * @returns {NurbsCurve} NURBS representation of the curve on success, null on failure. - */ - toNurbsCurve(): NurbsCurve; - /** ... */ - toNurbsCurveSubDomain(): void; - } - - class CurvePiping { - /** - */ - on: any; - /** - */ - radius: any; - /** - */ - segments: any; - /** - */ - faceted: any; - /** - */ - accuracy: any; - /** - */ - capType: any; - } - - class CurveProxy extends Curve { - /** - * True if "this" is a curve is reversed from the "real" curve geometry - */ - proxyCurveIsReversed: boolean; - } - - class Cylinder { - /** - * Gets a boolean value indicating whether this cylinder is valid. - * A valid cylinder is represented by a valid circle and two valid heights. - */ - isValid: boolean; - /** - * true if the cylinder is finite (Height0 != Height1) - * false if the cylinder is infinite. - */ - isFinite: boolean; - /** - * Gets the center point of the defining circle. - */ - center: number[]; - /** - * Gets the axis direction of the cylinder. - */ - axis: number[]; - /** - * Gets the height of the cylinder. - * Infinite cylinders have a height of zero, not Double.PositiveInfinity. - */ - totalHeight: number; - /** - * Gets or sets the start height of the cylinder. - * The center of bottom cap is: BasePlane.Origin + Height1 * BasePlane.ZAxis. - */ - height1: number; - /** - * Gets or sets the end height of the cylinder. - * If the end height equals the start height, the cylinder is - * presumed to be infinite. - * The center of top cap is: BasePlane.Origin + Height2 * BasePlane.ZAxis. - */ - height2: number; - /** - * Gets or sets the radius of the cylinder. - */ - radius: number; - - constructor(baseCircle: Circle); - - constructor(baseCircle: Circle, height: number); - /** - * @description Compute the circle at the given elevation parameter. - * @param {number} linearParameter Height parameter for circle section. - * @returns {Circle} - */ - circleAt(linearParameter:number): Circle; - /** - * @description Constructs a Brep representation of this Cylinder. - This is synonymous with calling NurbsSurface.CreateFromCylinder(). - * @param {boolean} capBottom If true, the bottom of the cylinder will be capped. - * @param {boolean} capTop If true, the top of the cylinder will be capped. - * @returns {Brep} A Brep representation of the cylinder or null. - */ - toBrep(capBottom:boolean,capTop:boolean): Brep; - /** - * @description Constructs a Nurbs surface representation of this cylinder. - This is synonymous with calling NurbsSurface.CreateFromCylinder(). - * @returns {NurbsSurface} A Nurbs surface representation of the cylinder or null. - */ - toNurbsSurface(): NurbsSurface; - } - - class Decal { - /** - * Gets the texture ID for this decal. - */ - textureInstanceId: string; - /** - * Gets the decal's mapping. - */ - mapping: DecalMapping; - /** - * Gets the decal's projection. Used only when mapping is planar. - */ - projection: DecalProjection; - /** - * Used only when mapping is cylindrical or spherical. - */ - mapToInside: boolean; - /** - * Gets the decal's transparency in the range 0 to 1. - */ - transparency: number; - /** - * Gets the origin of the decal in world space. - */ - origin: Rhino.Point3d; - /** - * For cylindrical and spherical mapping, the vector is unitized. - */ - vectorUp: Rhino.Vector3d; - /** - * Gets the vector across. For cylindrical and spherical mapping, the vector is unitized. - */ - vectorAcross: Rhino.Vector3d; - /** - * Gets the height of the decal. Only used when mapping is cylindrical. - */ - height: number; - /** - * Gets the radius of the decal. Only used when mapping is cylindrical or spherical. - */ - radius: number; - /** - */ - horzSweepStart: any; - /** - */ - horzSweepEnd: any; - /** - */ - vertSweepStart: any; - /** - */ - vertSweepEnd: any; - /** - */ - boundsMinU: any; - /** - */ - boundsMinV: any; - /** - */ - boundsMaxU: any; - /** - */ - boundsMaxV: any; - } - - class DimensionStyle extends CommonObject { - /** - */ - name: any; - /** - */ - arrowBlockId1: string; - /** - */ - arrowBlockId2: string; - /** - */ - leaderArrowBlockId: string; - /** - */ - suppressExtension1: boolean; - /** - */ - suppressExtension2: boolean; - /** - */ - suppressArrow1: boolean; - /** - */ - suppressArrow2: boolean; - /** - */ - alternateBelowLine: boolean; - /** - */ - drawTextMask: boolean; - /** - */ - leaderHasLanding: boolean; - /** - */ - drawForward: boolean; - /** - */ - textUnderlined: boolean; - /** - */ - arrowLength: number; - /** - */ - leaderArrowLength: number; - /** - */ - centermarkSize: number; - /** - */ - textGap: number; - /** - */ - textHEight: number; - /** - */ - lengthFactor: number; - /** - */ - alternateLengthFactor: number; - /** - */ - toleranceUpperValue: number; - /** - */ - toleranceLowerValue: number; - /** - */ - toleranceHeightScale: number; - /** - */ - baselineSpacing: number; - /** - */ - textRotation: number; - /** - */ - stackHeightScale: number; - /** - */ - leaderLandingLength: number; - /** - * Checks if any fields in this DimensionStyle are overrides - */ - hasFieldOverrides: boolean; - /** - * Tests if this DimensionStyle is a child of any other DimensionStyle - */ - isChild: boolean; - /** - * Get or Set the Id of this DimensionStyle's parent. - * If ParentId is Guid.Empty, this DimensionStyle has no parent - */ - parentId: string; - /** ... */ - getFont(): void; - /** ... */ - setFont(): void; - /** - * @description Scales all length values by 'scale' - * @returns {void} - */ - scaleLengthValues(): void; - /** - * @description Sets all the fields in this DimensionStyle to be not overridden - Does not change any dimstyle_id's or parent_id's - * @returns {void} - */ - clearAllFieldOverrides(): void; - /** - * @description Tests if this DimensionStyle is a child of a specific DimensionStyle - * @returns {boolean} True if this is a child of the DimensionStyle with Parent - False otherwise. - */ - isChildOf(): boolean; - } - - class Displacement { - /** - */ - on: any; - /** - */ - texture: any; - /** - */ - blackPoint: any; - /** - */ - whitePoint: any; - /** - */ - postWeldAngle: any; - /** - */ - fairingOn: any; - /** - */ - fairing: any; - /** - */ - finalMaxFaces: any; - /** - */ - finalMaxFacesOn: any; - /** - */ - initialQuality: any; - /** - */ - mappingChannel: any; - /** - */ - meshMemoryLimit: any; - /** - */ - refineSteps: any; - /** - */ - refineSensitivity: any; - /** - */ - sweepResolutionFormula: any; - } - - class Dithering { - /** - */ - enabled: boolean; - /** - */ - method: Methods; - } - - class DracoCompression { - /** ... */ - static compress(): void; - /** ... */ - static compressOptions(): void; - /** ... */ - static decompressByteArray(): void; - /** ... */ - static decompressBase64String(): void; - /** ... */ - toBase64String(): void; - } - - class DracoCompressionOptions { - /** - */ - compressionLevel: any; - /** - */ - positionQuantizationBits: any; - /** - */ - textureCoordintateQuantizationBits: any; - /** - */ - normalQuantizationBits: any; - /** - */ - includeNormals: any; - /** - */ - includeTextureCoordinates: any; - /** - */ - includeVertexColors: any; - } - - class EarthAnchorPoint { - /** - * Gets or sets a point latitude on earth, in degrees. - * +90 = north pole, 0 = equator, -90 = south pole. - */ - earthBasepointLatitude: number; - /** - * Gets or sets the point longitude on earth, in degrees. - */ - earthBasepointLongitude: number; - /** - * Gets or sets the point elevation on earth, in meters. - */ - earthBasepointElevation: number; - /** - * Gets or sets a value indicating the zero level convention relating to a location on Earth. - */ - earthBasepointElevationZero: BasepointZero; - /** - * Corresponding model point in model coordinates. - */ - modelBasePoint: number[]; - /** - * Earth directions in model coordinates. - */ - modelNorth: number[]; - /** - * Earth directions in model coordinates. - */ - modelEast: number[]; - /** - * Gets or sets the short form of the identifying information about this location. - */ - name: string; - /** - * Gets or sets the long form of the identifying information about this location. - */ - description: string; - /** - * @description Checks if the earth location is set or not. - * @returns {boolean} Boolean value, true if set else false - */ - earthLocationIsSet(): boolean; - /** - * @description Returns a plane in model coordinates whose X axis points East, - Y axis points North and Z axis points Up. The origin - is set to ModelBasepoint. - * @returns {Plane} A plane value. This might be invalid on error. - */ - getModelCompass(): Plane; - /** - * @description Gets a transformation from model coordinates to earth coordinates. - This transformation assumes the model is small enough that - the curvature of the earth can be ignored. - * @param {UnitSystem} modelUnitSystem The model unit system. - * @returns {Transform} Transform on success. Invalid Transform on error. - */ - getModelToEarthTransform(modelUnitSystem:UnitSystem): Transform; - } - - class EdgeSoftening { - /** - */ - on: any; - /** - */ - softening: any; - /** - */ - chamfer: any; - /** - */ - faceted: any; - /** - */ - edgeAngleThreshold: any; - /** - */ - forceSoftening: any; - } - - class Ellipse { - } - - class EmbeddedFile { - /** - */ - length: any; - /** - */ - fileName: any; - /** ... */ - write(): void; - /** ... */ - clear(): void; - } - - class Environment { - /** - * The background color. - */ - backgroundColor: number[]; - /** - * The background projection. - */ - backgroundProjection: BackgroundProjections; - /** ... */ - getBackgroundImage(): void; - /** ... */ - setBackgroundImage(): void; - } - - class Extrusion extends Surface { - /** - * Gets the start point of the path. - */ - pathStart: number[]; - /** - * Gets the end point of the path. - */ - pathEnd: number[]; - /** - * Gets the up vector of the path. - */ - pathTangent: number[]; - /** - * Gets or sets the normal of the miter plane at the start in profile coordinates. - * In profile coordinates, 0,0,1 always maps to the extrusion axis - */ - miterPlaneNormalAtStart: number[]; - /** - * Gets or sets the normal of the miter plane at the end in profile coordinates. - * In profile coordinates, 0,0,1 always maps to the extrusion axis - */ - miterPlaneNormalAtEnd: number[]; - /** - * Returns a value indicating whether a miter plane at start is defined. - */ - isMiteredAtStart: boolean; - /** - * Gets a value indicating whether a miter plane at the end is defined. - */ - isMiteredAtEnd: boolean; - /** - * Gets a value indicating whether there is no gap among all surfaces constructing this object. - */ - isSolid: boolean; - /** - * Gets a value indicating whether the surface that fills the bottom profile is existing. - */ - isCappedAtBottom: boolean; - /** - * Gets a value indicating whether the surface that fills the top profile is existing. - */ - isCappedAtTop: boolean; - /** - * Gets the amount of capping surfaces. - */ - capCount: number; - /** - * Gets the amount of profile curves. - */ - profileCount: number; - /** - * @description Creates an extrusion of a 3d curve (which must be planar) and a height. - * @param {Curve} planarCurve Planar curve used as profile - * @param {number} height If the height > 0, the bottom of the extrusion will be in plane and - the top will be height units above the plane. - If the height < 0, the top of the extrusion will be in plane and - the bottom will be height units below the plane. - The plane used is the one that is returned from the curve's TryGetPlane function. - * @param {boolean} cap If the curve is closed and cap is true, then the resulting extrusion is capped. - * @returns {Extrusion} If the input is valid, then a new extrusion is returned. Otherwise null is returned - */ - static create(planarCurve:Curve,height:number,cap:boolean): Extrusion; - /** - * @description Gets an extrusion from a box. - * @param {Box} box IsValid must be true. - * @param {boolean} cap If true, the base and the top of the box will be capped. Defaults to true. - * @returns {Extrusion} Extrusion on success. null on failure. - */ - static createBoxExtrusion(box:Box,cap:boolean): Extrusion; - /** - * @description Gets an extrusion form of a cylinder. - * @param {Cylinder} cylinder IsFinite must be true. - * @param {boolean} capBottom If true, the end at cylinder.Height1 will be capped. - * @param {boolean} capTop If true, the end at cylinder.Height2 will be capped. - * @returns {Extrusion} Extrusion on success. null on failure. - */ - static createCylinderExtrusion(cylinder:Cylinder,capBottom:boolean,capTop:boolean): Extrusion; - /** - * @description Gets an extrusion form of a pipe. - * @param {Cylinder} cylinder IsFinite must be true. - * @param {number} otherRadius If cylinder.Radius is less than other radius, then the cylinder will be the inside - of the pipe. - * @param {boolean} capBottom If true, the end at cylinder.Height1 will be capped. - * @param {boolean} capTop If true, the end at cylinder.Height2 will be capped. - * @returns {Extrusion} Extrusion on success. null on failure. - */ - static createPipeExtrusion(cylinder:Cylinder,otherRadius:number,capBottom:boolean,capTop:boolean): Extrusion; - /** - * @description Constructs a brep form of the extrusion. The outer profile is always the first face of the brep. - If there are inner profiles, additional brep faces are created for each profile. If the - outer profile is closed, then end caps are added as the last two faces of the brep. - * @param {boolean} splitKinkyFaces If true and the profiles have kinks, then the faces corresponding to those profiles are split - so they will be G1. - * @returns {Brep} A brep with a similar shape like this extrusion, or null on error. - */ - toBrep(splitKinkyFaces:boolean): Brep; - /** - * @description Allows to set the two points at the extremes and the up vector. - * @param {number[]} a The start point. - * @param {number[]} b The end point. - * @param {number[]} up The up vector. - * @returns {boolean} true if the operation succeeded; otherwise false. - Setting up=a-b will make the operation fail. - */ - setPathAndUp(a:number[],b:number[],up:number[]): boolean; - /** - * @description Gets the transformation that maps the XY profile curve to its 3d location. - * @param {number} s 0.0 = starting profile - 1.0 = ending profile. - * @returns {Transform} A Transformation. The transform is Invalid on failure. - */ - getProfileTransformation(s:number): Transform; - /** - * @description Gets the 3D plane containing the profile curve at a normalized path parameter. - * @param {number} s 0.0 = starting profile - 1.0 = ending profile. - * @returns {Plane} A plane. The plane is Invalid on failure. - */ - getProfilePlane(s:number): Plane; - /** - * @description Gets the 3D plane perpendicular to the path at a normalized path parameter. - * @param {number} s 0.0 = starting profile - 1.0 = ending profile. - * @returns {Plane} A plane. The plane is Invalid on failure. - */ - getPathPlane(s:number): Plane; - /** - * @description Sets the outer profile of the extrusion. - * @param {Curve} outerProfile curve in the XY plane or a 2D curve. - * @param {boolean} cap If outerProfile is a closed curve, then cap determines if the extrusion - has end caps. If outerProfile is an open curve, cap is ignored. - * @returns {boolean} true if the profile was set. If the outer profile is closed, then the - extrusion may also have inner profiles. If the outer profile is open, - the extrusion may not have inner profiles. If the extrusion already - has a profile, the set will fail. - */ - setOuterProfile(outerProfile:Curve,cap:boolean): boolean; - /** - * @description Adds an inner profile. - * @param {Curve} innerProfile Closed curve in the XY plane or a 2d curve. - * @returns {boolean} true if the profile was set. - */ - addInnerProfile(innerProfile:Curve): boolean; - /** - * @description Gets a transversal isocurve of the extruded profile. - * @param {number} profileIndex 0 <= profileIndex < ProfileCount - The outer profile has index 0. - * @param {number} s 0.0 <= s <= 1.0 - A relative parameter controlling which profile is returned. - 0 = bottom profile and 1 = top profile. - * @returns {Curve} The profile. - */ - profile3d(profileIndex:number,s:number): Curve; - /** - * @description Gets the line-like curve that is the conceptual axis of the extrusion. - * @returns {LineCurve} The path as a line curve. - */ - pathLineCurve(): LineCurve; - /** - * @description Gets one of the longitudinal curves along the beam or extrusion. - * @param {ComponentIndex} ci The index of this profile. - * @returns {Curve} The profile. - */ - wallEdge(ci:ComponentIndex): Curve; - /** - * @description Gets one of the longitudinal surfaces of the extrusion. - * @param {ComponentIndex} ci The index specifying which precise item to retrieve. - * @returns {Surface} The surface. - */ - wallSurface(ci:ComponentIndex): Surface; - /** - * @description Gets the line-like curve that is the conceptual axis of the extrusion. - * @returns {LineCurve} The path as a line curve. - */ - pathLineCurve(): LineCurve; - /** - * @description Gets the index of the profile curve at a domain related to a parameter. - * @param {number} profileParameter Parameter on profile curve. - * @returns {number} -1 if profileParameter does not correspond to a point on the profile curve. - When the profileParameter corresponds to the end of one profile and the - beginning of the next profile, the index of the next profile is returned. - */ - profileIndex(profileParameter:number): number; - /** - * @description Obtains a reference to a specified type of mesh for this extrusion. - * @param {MeshType} meshType The mesh type. - * @returns {Mesh} A mesh. - */ - getMesh(meshType:MeshType): Mesh; - /** - * @description Sets a specified type of mesh for this extrusion. - * @param {Mesh} mesh The mesh. - * @param {MeshType} meshType The mesh type. - * @returns {boolean} A bool. - */ - setMesh(mesh:Mesh,meshType:MeshType): boolean; - } - - class File3dm { - /** - * Gets or sets the start section comments, which are the comments with which the 3dm file begins. - */ - startSectionComments: string; - /** - * Gets or sets the name of the application that wrote this file. - */ - applicationName: string; - /** - * Gets or sets a URL for the application that wrote this file. - */ - applicationUrl: string; - /** - * Gets or sets details for the application that wrote this file. - */ - applicationDetails: string; - /** - * Gets the 3dm file archive version. - */ - archiveVersion: number; - /** - * Get the DateTime that this file was originally created. If the - * value is not set in the 3dm file, then DateTime.MinValue is returned - */ - created: DateTime; - /** - * Gets a string that names the user who created the file. - */ - createdBy: string; - /** - * Get the DateTime that this file was last edited. If the - * value is not set in the 3dm file, then DateTime.MinValue is returned - */ - lastEdited: DateTime; - /** - * Gets a string that names the user who last edited the file. - */ - lastEditedBy: string; - /** - * Gets or sets the revision number. - */ - revision: number; - /** ... */ - destroy(): void; - /** - * @description Read a 3dm file from a byte array - * @returns {File3dm} New File3dm on success, null on error. - */ - static fromByteArray(): File3dm; - /** ... */ - settings(): void; - /** ... */ - objects(): void; - /** ... */ - materials(): void; - /** ... */ - linetypes(): void; - /** ... */ - bitmaps(): void; - /** ... */ - layers(): void; - /** ... */ - groups(): void; - /** ... */ - dimstyles(): void; - /** ... */ - instanceDefinitions(): void; - /** ... */ - views(): void; - /** ... */ - namedViews(): void; - /** ... */ - plugInData(): void; - /** ... */ - strings(): void; - /** ... */ - embeddedFiles(): void; - /** ... */ - renderContent(): void; - /** ... */ - encode(): void; - /** ... */ - encodeOptions(): void; - /** - * @description Write to an in-memory byte[] - * @returns {Uint8Array} - */ - toByteArray(): Uint8Array; - /** ... */ - toByteArrayOptions(): void; - /** ... */ - static decode(): void; - /** ... */ - embeddedFilePaths(): void; - /** ... */ - getEmbeddedFileAsBase64(): void; - /** ... */ - getEmbeddedFileAsBase64Strict(): void; - /** ... */ - rdkXml(): void; - } - - class File3dmBitmapTable { - /** - */ - count: any; - /** ... */ - get(): void; - /** ... */ - add(): void; - /** ... */ - findIndex(): void; - /** ... */ - findId(): void; - } - - class File3dmDecalTable { - /** - */ - count: any; - /** ... */ - get(): void; - /** ... */ - findIndex(): void; - } - - class File3dmDimStyleTable { - /** - */ - count: any; - /** ... */ - get(): void; - /** ... */ - add(): void; - /** - * @description Retrieves a DimensionStyle object based on Index. This search type of search is discouraged. - We are moving towards using only IDs for all tables. - * @param {number} index The index to search for. - * @returns {DimensionStyle} A DimensionStyle object, or null if none was found. - */ - findIndex(index:number): DimensionStyle; - /** ... */ - findId(): void; - } - - class File3dmEmbeddedFileTable { - /** - */ - count: any; - /** ... */ - get(): void; - /** ... */ - add(): void; - /** ... */ - findIndex(): void; - } - - class File3dmGroupTable { - /** - */ - count: any; - /** ... */ - get(): void; - /** ... */ - add(): void; - /** ... */ - delete(): void; - /** ... */ - deleteIndex(): void; - /** ... */ - deleteId(): void; - /** - * @description Retrieves a Group object based on an index. This search type of search is discouraged. - We are moving towards using only IDs for all tables. - * @param {number} groupIndex The index to search for. - * @returns {Group} A Group object, or null if none was found. - */ - findIndex(groupIndex:number): Group; - /** - * @description Finds a Group given its name. - * @param {string} name The name of the Group to be searched. - * @returns {Group} A Group, or null on error. - */ - findName(name:string): Group; - } - - class File3dmInstanceDefinitionTable { - /** - */ - count: any; - /** ... */ - get(): void; - /** - * @description Adds an instance definition to the instance definition table. - * @param {string} name The definition name. - * @param {string} description The definition description. - * @param {string} url A URL or hyperlink. - * @param {string} urlTag A description of the URL or hyperlink. - * @param {number[]} basePoint A base point. - * @param {GeometryBase[]} geometry An array, a list or any enumerable set of geometry. - * @param {ObjectAttributes[]} attributes An array, a list or any enumerable set of attributes. - * @returns {number} >=0 index of instance definition in the instance definition table. -1 on failure. - */ - add(name:string,description:string,url:string,urlTag:string,basePoint:number[],geometry:GeometryBase[],attributes:ObjectAttributes[]): number; - /** ... */ - findIndex(): void; - /** ... */ - findId(): void; - } - - class File3dmLayerTable { - /** - */ - count: any; - /** ... */ - get(): void; - /** ... */ - add(): void; - /** - * @description Easy way to add a new layer to the model. - * @param {string} name Layer name. - * @param {number[]} color Layer color. - * @returns {number} The layer's index (>=0) is returned. Otherwise, RhinoMath.UnsetIntIndex is returned. - */ - addLayer(name:string,color:number[]): number; - /** - * @description Finds a Layer given its name. - * @param {string} name The name of the Layer to be searched. - * @param {string} parentId The id of the parent Layer to be searched. - * @returns {Layer} A Layer, or null on error. - */ - findName(name:string,parentId:string): Layer; - /** - * @description Retrieves a Layer object based on Index. This search type of search is discouraged. - We are moving towards using only IDs for all tables. - * @param {number} index The index to search for. - * @returns {Layer} A Layer object, or null if none was found. - */ - findIndex(index:number): Layer; - /** ... */ - findId(): void; - } - - class File3dmLinetypeTable { - /** - */ - count: any; - /** ... */ - get(): void; - /** ... */ - add(): void; - /** ... */ - delete(): void; - /** - * @description Retrieves a Linetype object based on Index. This search type of search is discouraged. - We are moving towards using only IDs for all tables. - * @param {number} index The index to search for. - * @returns {Linetype} A Linetype, or null if none was found. - */ - findIndex(index:number): Linetype; - /** ... */ - findId(): void; - /** - * @description Finds a Linetype given its name. - * @param {string} name The name of the Linetype to be searched. - * @returns {Linetype} A Linetype, or null on error. - */ - findName(name:string): Linetype; - /** ... */ - fromAttributes(): void; - /** ... */ - fromLayerIndex(): void; - } - - class File3dmMaterialTable { - /** - */ - count: any; - /** ... */ - get(): void; - /** ... */ - add(): void; - /** - * @description Retrieves a material based on Index. This search type of search is discouraged. - We are moving towards using only IDs for all tables. - * @param {number} index The index to search for. - * @returns {Material} A material, or null if none was found. - */ - findIndex(index:number): Material; - /** ... */ - findId(): void; - /** ... */ - findFromAttributes(): void; - } - - class File3dmMeshModifiers { - /** ... */ - displacement(): void; - /** ... */ - edgeSoftening(): void; - /** ... */ - thickening(): void; - /** ... */ - curvePiping(): void; - /** ... */ - shutLining(): void; - /** ... */ - createDisplacement(): void; - /** ... */ - createEdgeSoftening(): void; - /** ... */ - createThickening (): void; - /** ... */ - createCurvePiping(): void; - /** ... */ - createShutLining (): void; - } - - class File3dmObject { - /** ... */ - attributes(): void; - /** ... */ - geometry(): void; - } - - class File3dmObjectTable { - /** - * Returns the total amount of items in the object table, including lights. - */ - count: number; - /** ... */ - get(): void; - /** ... */ - addPointXYZ(): void; - /** - * @description Adds a point object to the table. - * @param {number} x X component of point coordinate. - * @param {number} y Y component of point coordinate. - * @param {number} z Z component of point coordinate. - * @returns {string} id of new object. - */ - addPoint(x:number,y:number,z:number): string; - /** - * @description Adds a point cloud object to the document. - * @param {PointCloud} cloud PointCloud to add. - * @returns {string} A unique identifier for the object. - */ - addPointCloud(cloud:PointCloud): string; - /** - * @description Adds a line object to Rhino. - * @param {number[]} from A line start point. - * @param {number[]} to A line end point. - * @returns {string} A unique identifier of new rhino object. - */ - addLine(from:number[],to:number[]): string; - /** - * @description Adds a polyline object to Rhino. - * @param {Point3d[]} points A list, an array or any enumerable set of . - * @returns {string} A unique identifier for the object. - */ - addPolyline(points:Point3d[]): string; - /** - * @description Adds a curve object to the document representing an arc. - * @param {Arc} arc An arc. - * @returns {string} A unique identifier for the object. - */ - addArc(arc:Arc): string; - /** - * @description Adds a curve object to the document representing a circle. - * @param {Circle} circle A circle to add. - * @returns {string} A unique identifier for the object. - */ - addCircle(circle:Circle): string; - /** - * @description Adds a curve object to the document representing an ellipse. - * @param {Ellipse} ellipse An ellipse to add. - * @returns {string} A unique identifier for the object. - */ - addEllipse(ellipse:Ellipse): string; - /** - * @description Adds a surface object to the document representing a sphere. - * @param {Sphere} sphere A sphere to add. - * @returns {string} A unique identifier for the object. - */ - addSphere(sphere:Sphere): string; - /** - * @description Adds a curve object to the table. - * @param {Curve} curve A curve to add. - * @returns {string} A unique identifier for the object. - */ - addCurve(curve:Curve): string; - /** - * @description Adds a text dot object to the table. - * @param {string} text The text. - * @param {number[]} location The location. - * @returns {string} A unique identifier for the object. - */ - addTextDot(text:string,location:number[]): string; - /** - * @description Adds a surface object to Rhino. - * @param {Surface} surface A duplicate of this surface is added to Rhino. - * @returns {string} A unique identifier for the object. - */ - addSurface(surface:Surface): string; - /** - * @description Adds an extrusion object to Rhino. - * @param {Extrusion} extrusion A duplicate of this extrusion is added to Rhino. - * @returns {string} A unique identifier for the object. - */ - addExtrusion(extrusion:Extrusion): string; - /** - * @description Adds a mesh object to Rhino. - * @param {Mesh} mesh A duplicate of this mesh is added to Rhino. - * @returns {string} A unique identifier for the object. - */ - addMesh(mesh:Mesh): string; - /** - * @description Adds a brep object to Rhino. - * @param {Brep} brep A duplicate of this brep is added to Rhino. - * @returns {string} A unique identifier for the object. - */ - addBrep(brep:Brep): string; - /** - * @description Duplicates the object, then adds a copy of the object to the document. - * @param {File3dmObject} item The item to duplicate and add. - * @returns {void} - */ - add(item:File3dmObject): void; - /** - * @description Gets the bounding box containing every object in this table. - * @returns {BoundingBox} The computed bounding box. - */ - getBoundingBox(): BoundingBox; - /** ... */ - deleteItem(): void; - /** ... */ - findId(): void; - } - - class File3dmPlugInData { - } - - class File3dmPlugInDataTable { - /** - * Gets the number of objects in this table. - */ - count: number; - /** ... */ - get(): void; - } - - class File3dmPostEffectTable { - /** - */ - count: any; - /** ... */ - get(): void; - /** ... */ - findIndex(): void; - /** ... */ - findId(): void; - } - - class File3dmRdkDocumentData extends File3dmPlugInData { - /** ... */ - rdkXml(): void; - } - - class File3dmRenderContentTable { - /** - */ - count: any; - /** ... */ - add(): void; - /** ... */ - get(): void; - /** ... */ - findId(): void; - } - - class File3dmSettings { - /** - * Gets or sets a Uniform Resource Locator (URL) direction for the model. - */ - modelUrl: string; - /** - * Gets or sets the model base point that is used when the file is read as an instance definition. - * This point is mapped to the origin in the instance definition. - */ - modelBasePoint: number[]; - /** - */ - earthAnchorPoint: any; - /** - * Gets or sets the model space absolute tolerance. - */ - modelAbsoluteTolerance: number; - /** - * Gets or sets the model space angle tolerance. - */ - modelAngleToleranceRadians: number; - /** - * Gets or sets the model space angle tolerance. - */ - modelAngleToleranceDegrees: number; - /** - * Gets or sets the model space relative tolerance. - */ - modelRelativeTolerance: number; - /** - * Gets or sets the page space absolute tolerance. - */ - pageAbsoluteTolerance: number; - /** - * Gets or sets the page space angle tolerance. - */ - pageAngleToleranceRadians: number; - /** - * Gets or sets the page space angle tolerance. - */ - pageAngleToleranceDegrees: number; - /** - * Gets or sets the page space relative tolerance. - */ - pageRelativeTolerance: number; - /** - * Gets or sets the model unit system, using enumeration. - */ - modelUnitSystem: UnitSystem; - /** - * Gets or sets the page unit system, using enumeration. - */ - pageUnitSystem: UnitSystem; - /** ... */ - renderSettings(): void; - } - - class File3dmShutLiningCurveTable { - /** - */ - count: any; - /** ... */ - get(): void; - /** ... */ - add(): void; - /** ... */ - findIndex(): void; - /** ... */ - findId(): void; - } - - class File3dmStringTable { - /** - * Returns the number of document strings in the 3dm file. - */ - count: number; - /** ... */ - get(): void; - /** - * @description Returns a string value at a given index. - * @param {number} i The index at which to get the value. - * @returns {string} The string value if successful. - */ - getvalue(i:number): string; - /** ... */ - set(): void; - /** ... */ - documentUserTextCount(): void; - /** - * @description Removes document strings from the 3dm file. - * @param {string} section name of section to delete. If null, all sections will be deleted. - * @param {string} entry name of entry to delete. If null, all entries will be deleted for a given section. - * @returns {void} - */ - delete(section:string,entry:string): void; - } - - class File3dmViewTable { - /** - * Gets the amount of items in the table. - */ - count: number; - /** ... */ - get(): void; - /** ... */ - set(): void; - /** - * @description Adds a - * @returns {void} - */ - add(): void; - } - - class File3dmWriteOptions { - /** - * File version. Default is major version number of this assembly version.Must be in range [2; current version].Alternatively, 0 is a placeholder for the last valid version.Rhino can read its current version, plus earlier file versions except 1.Use latest version when possible. - */ - version: number; - /** - * Include custom user data in the file. Default is true - */ - saveUserData: boolean; - } - - class FileReference { - /** - * Gets the absolute path of this file reference. - */ - fullPath: string; - /** - * Gets the relative path of this file reference. - */ - relativePath: string; - /** - * @description Returns a new file reference. This returns a new instance even if the path does not exist. - * @param {string} fullPath A full path. - * @returns {FileReference} A file reference to the specified path. - */ - static createFromFullPath(fullPath:string): FileReference; - /** - * @description Returns a new file reference. This returns a new instance even if the path does not exist. - * @param {string} fullPath A full path. This parameter cannot be null. - * @param {string} relativePath A relative path. This parameter can be null. - * @returns {FileReference} A file reference to the specified paths. - */ - static createFromFullAndRelativePaths(fullPath:string,relativePath:string): FileReference; - } - - class Font { - /** - */ - quartetName: string; - /** - * Returns Face name - */ - faceName: string; - /** - * Returns the Font PostScriptName - "Apple font name" - */ - postScriptName: string; - /** - * Returns the Font RichTextFontName used in RTF strings: - * {\\fonttbl...{\\fN RichTextFontName;}...} - */ - richTextFontName: string; - /** - */ - bold: boolean; - /** - */ - italic: boolean; - /** - */ - underlined: boolean; - /** - */ - strikeOut: boolean; - /** - */ - isEngravingFont: boolean; - /** - */ - isSymbolFont: boolean; - /** - */ - isSingleStrokeFont: boolean; - /** - */ - isSimulated: boolean; - /** - */ - pointSize: number; - /** - */ - familyName: string; - } - - class GeometryBase extends CommonObject { - /** - * Useful for switch statements that need to differentiate between - * basic object types like points, curves, surfaces, and so on. - */ - objectType: ObjectType; - /** - * true if object can be accurately modified with "squishy" transformations like - * projections, shears, and non-uniform scaling. - */ - isDeformable: boolean; - /** - * Returns true if the Brep.TryConvertBrep function will be successful for this object - */ - hasBrepForm: boolean; - /** - * @description Transforms the geometry. If the input Transform has a SimilarityType of - OrientationReversing, you may want to consider flipping the transformed - geometry after calling this function when it makes sense. For example, - you may want to call Flip() on a Brep after transforming it. - * @param {Transform} xform Transformation to apply to geometry. - * @returns {boolean} true if geometry successfully transformed. - */ - transform(xform:Transform): boolean; - /** - * @description Translates the object along the specified vector. - * @param {number[]} translationVector A moving vector. - * @returns {boolean} true if geometry successfully translated. - */ - translate(translationVector:number[]): boolean; - /** - * @description Scales the object by the specified factor. The scale is centered at the origin. - * @param {number} scaleFactor The uniform scaling factor. - * @returns {boolean} true if geometry successfully scaled. - */ - scale(scaleFactor:number): boolean; - /** - * @description Rotates the object about the specified axis. A positive rotation - angle results in a counter-clockwise rotation about the axis (right hand rule). - * @param {number} angleRadians Angle of rotation in radians. - * @param {number[]} rotationAxis Direction of the axis of rotation. - * @param {number[]} rotationCenter Point on the axis of rotation. - * @returns {boolean} true if geometry successfully rotated. - */ - rotate(angleRadians:number,rotationAxis:number[],rotationCenter:number[]): boolean; - /** - * @description Bounding box solver. Gets the world axis aligned bounding box for the geometry. - * @param {boolean} accurate If true, a physically accurate bounding box will be computed. - If not, a bounding box estimate will be computed. For some geometry types there is no - difference between the estimate and the accurate bounding box. Estimated bounding boxes - can be computed much (much) faster than accurate (or "tight") bounding boxes. - Estimated bounding boxes are always similar to or larger than accurate bounding boxes. - * @returns {BoundingBox} The bounding box of the geometry in world coordinates or BoundingBox.Empty - if not bounding box could be found. - */ - getBoundingBox(accurate:boolean): BoundingBox; - /** - * @description If possible, converts the object into a form that can be accurately modified - with "squishy" transformations like projections, shears, an non-uniform scaling. - * @returns {boolean} false if object cannot be converted to a deformable object. true if object was - already deformable or was converted into a deformable object. - */ - makeDeformable(): boolean; - /** - * @description Constructs a deep (full) copy of this object. - * @returns {GeometryBase} An object of the same type as this, with the same properties and behavior. - */ - duplicate(): GeometryBase; - } - - class GroundPlane { - /** - * Determines whether the document ground plane is enabled. - */ - enabled: boolean; - /** - * If this is off, the ground plane will not be visible when seen from below. - */ - showUnderside: boolean; - /** - * Height above world XY plane in model units. Auto-altitude is computed if enabled. - */ - altitude: number; - /** - * Determines whether the ground plane is fixed by the Altitude property, or whether it is automatically placed at the lowest point in the model. - */ - autoAltitude: boolean; - /** - * Determines whether the ground plane shows the material assigned, or whether it is transparent, but captures shadows. - */ - shadowOnly: boolean; - /** - * Id of material in material table for this ground plane. - */ - materialInstanceId: string; - /** - * Texture mapping offset in world units. - */ - textureOffset: Rhino.Vector2d; - /** - * Texture offset locked. - */ - textureOffsetLocked: boolean; - /** - * Texture size locked. - */ - textureSizeLocked: boolean; - /** - * Texture mapping single UV span size in world units. - */ - textureSize: Rhino.Vector2d; - /** - * Texture mapping rotation around world origin + offset in degrees. - */ - textureRotation: number; - } - - class Group extends CommonObject { - /** - */ - name: any; - /** - */ - id: any; - /** - */ - index: any; - } - - class Hatch extends GeometryBase { - /** - * Gets or sets the index of the pattern in the document hatch pattern table. - */ - patternIndex: number; - /** - * Gets or sets the relative rotation of the pattern. - */ - patternRotation: number; - /** - * Gets or sets the hatch pattern base point - */ - basePoint: number[]; - /** - * Gets or sets the hatch plane - */ - plane: Plane; - /** - * Gets or sets the scaling factor of the pattern. - */ - patternScale: number; - /** - * @description Scale the hatch's pattern - * @returns {void} - */ - scalePattern(): void; - } - - class InstanceDefinition extends CommonObject { - /** - */ - description: any; - /** - */ - name: any; - /** - */ - id: any; - /** - */ - sourceArchive: any; - /** - */ - updateType: any; - /** ... */ - getObjectIds(): void; - /** ... */ - isInstanceGeometryId(): void; - } - - class InstanceReference extends GeometryBase { - /** - */ - parentIdefId: any; - /** - */ - xform: any; - } - - class Intersection { - /** - * @description Intersects two lines. - * @param {Line} lineA First line for intersection. - * @param {Line} lineB Second line for intersection. - * @param {number} tolerance If tolerance > 0.0, then an intersection is reported only if the distance between the points is <= tolerance. - If tolerance <= 0.0, then the closest point between the lines is reported. - * @param {boolean} finiteSegments If true, the input lines are treated as finite segments. - If false, the input lines are treated as infinite lines. - * @returns {Array} [boolean, number, number] - * (boolean) true if a closest point can be calculated and the result passes the tolerance parameter test; otherwise false. - * (number) Parameter on lineA that is closest to LineB. - The shortest distance between the lines is the chord from lineA.PointAt(a) to lineB.PointAt(b) - * (number) Parameter on lineB that is closest to LineA. - The shortest distance between the lines is the chord from lineA.PointAt(a) to lineB.PointAt(b) - */ - static lineLine(lineA:Line,lineB:Line,tolerance:number,finiteSegments:boolean): object; - /** ... */ - static lineLineTolerance(): void; - /** - * @description Intersects a line and a plane. This function only returns true if the - intersection result is a single point (i.e. if the line is coincident with - the plane then no intersection is assumed). - * @param {Line} line Line for intersection. - * @param {Plane} plane Plane to intersect. - * @returns {Array} [boolean, number] - * (boolean) true on success, false on failure. - * (number) Parameter on line where intersection occurs. - If the parameter is not within the {0, 1} Interval then the finite segment - does not intersect the plane. - */ - static linePlane(line:Line,plane:Plane): object; - /** - * @description Intersects two planes and return the intersection line. If the planes are - parallel or coincident, no intersection is assumed. - * @param {Plane} planeA First plane for intersection. - * @param {Plane} planeB Second plane for intersection. - * @returns {Array} [boolean, Line] - * (boolean) true on success, false on failure. - * (Line) If this function returns true, - the intersectionLine parameter will return the line where the planes intersect. - */ - static planePlane(planeA:Plane,planeB:Plane): object; - /** - * @description Intersects three planes to find the single point they all share. - * @param {Plane} planeA First plane for intersection. - * @param {Plane} planeB Second plane for intersection. - * @param {Plane} planeC Third plane for intersection. - * @returns {Array} [boolean, number[]] - * (boolean) true on success, false on failure. If at least two out of the three planes - are parallel or coincident, failure is assumed. - * (number[]) Point where all three planes converge. - */ - static planePlanePlane(planeA:Plane,planeB:Plane,planeC:Plane): object; - /** - * @description Intersects a plane with a sphere using exact calculations. - * @param {Plane} plane Plane to intersect. - * @param {Sphere} sphere Sphere to intersect. - * @returns {Array} [PlaneSphereIntersection, Circle] - * (PlaneSphereIntersection) If is returned, the intersectionCircle has a radius of zero and the center point - is the point on the plane closest to the sphere. - * (Circle) Intersection result. - */ - static planeSphere(plane:Plane,sphere:Sphere): object; - /** - * @description Intersects a line with a circle using exact calculations. - * @param {Line} line Line for intersection. - * @param {Circle} circle Circle for intersection. - * @returns {Array} [LineCircleIntersection, number, number[], number, number[]] - * (LineCircleIntersection) If is returned, only t1 and point1 will have valid values. - If is returned, t2 and point2 will also be filled out. - * (number) Parameter on line for first intersection. - * (number[]) Point on circle closest to first intersection. - * (number) Parameter on line for second intersection. - * (number[]) Point on circle closest to second intersection. - */ - static lineCircle(line:Line,circle:Circle): object; - /** - * @description Intersects a line with a sphere using exact calculations. - * @param {Line} line Line for intersection. - * @param {Sphere} sphere Sphere for intersection. - * @returns {Array} [LineSphereIntersection, number[], number[]] - * (LineSphereIntersection) If is returned, the first point is the point on the line closest to the sphere and - the second point is the point on the sphere closest to the line. - If is returned, the first point is the point on the line and the second point is the - same point on the sphere. - * (number[]) First intersection point. - * (number[]) Second intersection point. - */ - static lineSphere(line:Line,sphere:Sphere): object; - /** - * @description Intersects a line with a cylinder using exact calculations. - * @param {Line} line Line for intersection. - * @param {Cylinder} cylinder Cylinder for intersection. - * @returns {Array} [LineCylinderIntersection, number[], number[]] - * (LineCylinderIntersection) If None is returned, the first point is the point on the line closest - to the cylinder and the second point is the point on the cylinder closest to - the line. - If is returned, the first point - is the point on the line and the second point is the same point on the - cylinder. - * (number[]) First intersection point. - * (number[]) Second intersection point. - */ - static lineCylinder(line:Line,cylinder:Cylinder): object; - /** - * @description Intersects two spheres using exact calculations. - * @param {Sphere} sphereA First sphere to intersect. - * @param {Sphere} sphereB Second sphere to intersect. - * @returns {Array} [SphereSphereIntersection, Circle] - * (SphereSphereIntersection) The intersection type. - * (Circle) If intersection is a point, then that point will be the center, radius 0. - */ - static sphereSphere(sphereA:Sphere,sphereB:Sphere): object; - /** - * @description Intersects an infinite line and an axis aligned bounding box. - * @param {BoundingBox} box BoundingBox to intersect. - * @param {Line} line Line for intersection. - * @param {number} tolerance If tolerance > 0.0, then the intersection is performed against a box - that has each side moved out by tolerance. - * @returns {Array} [boolean, number[]] - * (boolean) true if the line intersects the box, false if no intersection occurs. - * (number[]) The chord from line.PointAt(lineParameters.T0) to line.PointAt(lineParameters.T1) is the intersection. - */ - static lineBox(box:BoundingBox,line:Line,tolerance:number): object; - } - - class Layer extends CommonObject { - /** - * Gets or sets the name of this layer. - */ - name: string; - /** - * Gets the full path to this layer. The full path includes nesting information. - */ - fullPath: string; - /** - * Gets or sets the ID of this layer object. - * You typically do not need to assign a custom ID. - */ - id: string; - /** - * Gets the ID of the parent layer. Layers can be organized in a hierarchical structure, - * in which case this returns the parent layer ID. If the layer has no parent, - * Guid.Empty will be returned. - */ - parentLayerId: string; - /** - * Gets or sets the IGES level for this layer. - */ - igesLevel: number; - /** - * Gets or sets the display color for this layer. - */ - color: number[]; - /** - * Gets or sets the plot color for this layer. - */ - plotColor: number[]; - /** - * Gets or sets the weight of the plotting pen in millimeters. - * A weight of 0.0 indicates the "default" pen weight should be used. - * A weight of -1.0 indicates the layer should not be printed. - */ - plotWeight: number; - /** - * Gets or sets the line-type index for this layer. - */ - linetypeIndex: number; - /** - * Gets or sets the index of render material for objects on this layer that have - * MaterialSource() == MaterialFromLayer. - * A material index of -1 indicates no material has been assigned - * and the material created by the default Material constructor - * should be used. - */ - renderMaterialIndex: number; - /** - */ - visible: any; - /** - */ - locked: any; - /** - */ - expanded: any; - /** - * @description Verifies that a layer has per viewport settings. - * @param {string} viewportId If not Guid.Empty, then checks for settings for that specific viewport. - If Guid.Empty, then checks for any viewport settings. - * @returns {boolean} True if the layer has per viewport settings, false otherwise. - */ - hasPerViewportSettings(viewportId:string): boolean; - /** - * @description Deletes per viewport layer settings. - * @param {string} viewportId If not Guid.Empty, then the settings for that viewport are deleted. - If Guid.Empty, then all per viewport settings are deleted. - * @returns {void} - */ - deletePerViewportSettings(viewportId:string): void; - /** - * @description Gets the display color for this layer. - * @param {string} viewportId If not Guid.Empty, then the setting applies only to the viewport with the specified id. - * @returns {number[]} The display color. - */ - perViewportColor(viewportId:string): number[]; - /** - * @description Sets the display color for this layer. - * @param {string} viewportId If not Guid.Empty, then the setting applies only to the viewport with the specified id. - * @param {number[]} color The display color. - * @returns {void} - */ - setPerViewportColor(viewportId:string,color:number[]): void; - /** - * @description Remove any per viewport layer color setting so the layer's overall setting will be used for all viewports. - * @param {string} viewportId If not Guid.Empty, then the setting for this viewport will be deleted. - If Guid.Empty, the all per viewport layer color settings will be removed. - * @returns {void} - */ - deletePerViewportColor(viewportId:string): void; - /** - * @description The global persistent visibility setting is used for layers whose visibility can - be changed by a "parent" object. A common case is when a layer is a - child layer (ParentId is not nil). In this case, when a parent layer is - turned off, then child layers are also turned off. The persistent - visibility setting determines what happens when the parent is turned on - again. - * @returns {boolean} - */ - getPersistentVisibility(): boolean; - /** - * @description Set the global persistent visibility setting for this layer. - * @returns {void} - */ - setPersistentVisibility(): void; - /** - * @description Remove any explicit persistent visibility setting from this layer - * @returns {void} - */ - unsetPersistentVisibility(): void; - /** - * @description The persistent locking setting is used for layers that can be locked by - a "parent" object. A common case is when a layer is a child layer - (Layer.ParentI is not nil). In this case, when a parent layer is locked, - then child layers are also locked. The persistent locking setting - determines what happens when the parent is unlocked again. - * @returns {boolean} - */ - getPersistentLocking(): boolean; - /** - * @description Set the persistent locking setting for this layer - * @returns {void} - */ - setPersistentLocking(): void; - /** - * @description Remove any explicitly persistent locking settings from this layer - * @returns {void} - */ - unsetPersistentLocking(): void; - } - - class Light extends GeometryBase { - /** - * Gets or sets a value that defines if the light is turned on (true) or off (false). - */ - isEnabled: boolean; - /** - * Gets or sets a light style on this camera. - */ - lightStyle: LightStyle; - /** - * Gets a value indicating whether the light style - * is CameraPoint or WorldPoint. - */ - isPointLight: boolean; - /** - * Gets a value indicating whether the light style - * is CameraDirectional or WorldDirectional. - */ - isDirectionalLight: boolean; - /** - * Gets a value indicating whether the light style - * is CameraSpot or WorldSpot. - */ - isSpotLight: boolean; - /** - * Gets a value indicating whether the light style - * is WorldLinear. - */ - isLinearLight: boolean; - /** - * Gets a value indicating whether the light style - * is WorldRectangular. - */ - isRectangularLight: boolean; - /** - * Gets or sets the light or 3D position or location. - */ - location: number[]; - /** - * Gets or sets the vector direction of the camera. - */ - direction: number[]; - /** - * Gets a perpendicular vector to the camera direction. - */ - perpendicularDirection: number[]; - /** - * Gets or sets the light intensity. - */ - intensity: number; - /** - * Gets or sets the light power in watts (W). - */ - powerWatts: number; - /** - * Gets or sets the light power in lumens (lm). - */ - powerLumens: number; - /** - * Gets or sets the light power in candelas (cd). - */ - powerCandela: number; - /** - * Gets or sets the ambient color. - */ - ambient: number[]; - /** - * Gets or sets the diffuse color. - */ - diffuse: number[]; - /** - * Gets or sets the specular color. - */ - specular: number[]; - /** - * Gets or Sets the attenuation vector. - */ - attenuationVector: number[]; - /** - * Gets or sets the spot angle in radians. - * Ignored for non-spot lights.angle = 0 to pi/2 (0 to 90 degrees). - */ - spotAngleRadians: number; - /** - * The spot exponent varies from 0.0 to 128.0 and provides - * an exponential interface for controlling the focus or - * concentration of a spotlight (like the - * OpenGL GL_SPOT_EXPONENT parameter). The spot exponent - * and hot spot parameters are linked; changing one will - * change the other. - * A hot spot setting of 0.0 corresponds to a spot exponent of 128. - * A hot spot setting of 1.0 corresponds to a spot exponent of 0.0. - */ - spotExponent: number; - /** - * The hot spot setting runs from 0.0 to 1.0 and is used to - * provides a linear interface for controlling the focus or - * concentration of a spotlight. - * A hot spot setting of 0.0 corresponds to a spot exponent of 128. - * A hot spot setting of 1.0 corresponds to a spot exponent of 0.0. - */ - hotSpot: number; - /** - * Gets or sets the height in linear and rectangular lights. - * (ignored for non-linear/rectangular lights.) - */ - length: number[]; - /** - * Gets or sets the width in linear and rectangular lights. - * (ignored for non-linear/rectangular lights.) - */ - width: number[]; - /** - * Gets or sets the shadow intensity for the light. - */ - shadowIntensity: number; - /** - * Gets or sets the spot light name. - */ - name: string; - /** - * @description Sets the attenuation settings (ignored for "directional" and "ambient" lights). - attenuation = 1/(a0 + d*a1 + d^2*a2) where d = distance to light. - * @param {number} a0 The new constant attenuation divisor term. - * @param {number} a1 The new reverse linear attenuation divisor term. - * @param {number} a2 The new reverse quadratic attenuation divisor term. - * @returns {void} - */ - setAttenuation(a0:number,a1:number,a2:number): void; - /** - * @description Gets the attenuation settings (ignored for "directional" and "ambient" lights). - attenuation = 1/(a0 + d*a1 + d^2*a2) where d = distance to light. - * @param {number} d The distance to evaluate. - * @returns {number} 0 if a0 + d*a1 + d^2*a2 <= 0. - */ - getAttenuation(d:number): number; - /** - * @description Gets the spot light radii. - * @returns {Array} [boolean, number, number] - * (boolean) true if operation succeeded; otherwise, false. - * (number) The inner radius. This out parameter is assigned during this call. - * (number) The outer radius. This out parameter is assigned during this call. - */ - getSpotLightRadii(): object; - } - - class Line { - /** - * Start point of line segment. - */ - from: number[]; - /** - * End point of line segment. - */ - to: number[]; - /** - * Gets or sets the length of this line segment. - * Note that a negative length will invert the line segment without - * making the actual length negative. The line From point will remain fixed - * when a new Length is set. - */ - length: number; - - constructor(from: number[], to: number[]); - } - - class LinearWorkflow { - /** - */ - preProcessTexturesOn: any; - /** - */ - preProcessColorsOn: any; - /** - * Linear workflow pre-process gamma value. This is currently the same as the post-process gamma value. - */ - preProcessGamma: number; - /** - */ - preProcessGammaOn: any; - /** - * Linear workflow post-process gamma value. - */ - postProcessGamma: number; - /** - * Linear workflow post-process gamma enabled state. - */ - postProcessGammaOn: boolean; - } - - class LineCurve extends Curve { - /** - * Gets or sets the Line value inside this curve. - */ - line: Line; - - constructor(from: number[], to: number[]); - } - - class Linetype extends ModelComponent { - /** - * The name of this linetype. - */ - name: string; - /** - */ - index: any; - /** - * Total length of one repeat of the pattern. - */ - patternLength: number; - /** - * Number of segments in the pattern. - */ - segmentCount: number; - /** - * @description Gets the segment information at a index. - * @param {number} index Zero based index of the segment. - * @returns {Array} [void, number, boolean] - * (void) - * (number) The length of the segment in millimeters. - * (boolean) If the length is interpreted as a line, true is assigned during the call to this out parameter. - If the length is interpreted as a space, then false is assigned during the call to this out parameter. - */ - getSegment(index:number): object; - /** - * @description Sets the length and type of the segment at index. - * @param {number} index Zero based index of the segment. - * @param {number} length The length of the segment to be added in millimeters. - * @param {boolean} isSolid If true, the length is interpreted as a line. If false, - then the length is interpreted as a space. - * @returns {boolean} true if the operation was successful; otherwise false. - */ - setSegment(index:number,length:number,isSolid:boolean): boolean; - /** - * @description Adds a segment to the pattern. - * @param {number} length The length of the segment to be added. - * @param {boolean} isSolid If true, the length is interpreted as a line. If false, - then the length is interpreted as a space. - * @returns {number} Index of the added segment. - */ - appendSegment(length:number,isSolid:boolean): number; - /** - * @description Removes a segment in the linetype. - * @param {number} index Zero based index of the segment to remove. - * @returns {boolean} true if the segment index was removed. - */ - removeSegment(index:number): boolean; - /** ... */ - clearPattern(): void; - /** ... */ - static border(): void; - /** ... */ - static byLayer(): void; - /** ... */ - static byParent(): void; - /** ... */ - static center(): void; - /** ... */ - static continuous(): void; - /** ... */ - static dashdot(): void; - /** ... */ - static dashed(): void; - /** ... */ - static dots(): void; - /** ... */ - static hidden(): void; - } - - class Material extends ModelComponent { - /** - * The Id of the RenderPlugIn that is associated with this material. - */ - renderPlugInId: string; - /** - */ - name: string; - /** - * Gets or sets the shine factor of the material. - */ - shine: number; - /** - * Gets or sets the transparency of the material (0.0 = opaque to 1.0 = transparent) - */ - transparency: number; - /** - * Gets or sets the index of refraction of the material, generally - * >= 1.0 (speed of light in vacuum)/(speed of light in material) - */ - indexOfRefraction: number; - /** - * Gets or sets the Fresnel index of refraction of the material, - * default is 1.56 - */ - fresnelIndexOfRefraction: number; - /** - * Gets or sets the refraction glossiness. - */ - refractionGlossiness: number; - /** - * Gets or sets the reflection glossiness. - */ - reflectionGlossiness: number; - /** - * Gets or sets if Fresnel reflections are used. - */ - fresnelReflections: boolean; - /** - */ - disableLighting: boolean; - /** - * Gets or sets how reflective a material is, 0f is no reflection - * 1f is 100% reflective. - */ - reflectivity: number; - /** - * Very simple preview color function for GUIs. - */ - previewColor: number[]; - /** - */ - diffuseColor: number[]; - /** - */ - ambientColor: number[]; - /** - */ - emissionColor: number[]; - /** - */ - specularColor: number[]; - /** - */ - reflectionColor: number[]; - /** - */ - transparentColor: number[]; - /** ... */ - static compareAppearance(): void; - /** - * @description Set material to default settings. - * @returns {void} - */ - default(): void; - /** - * @description Get the texture that corresponds with the specified texture type for this material. - * @returns {Texture} - */ - getTexture(): Texture; - /** - * @returns {Texture} - */ - getBitmapTexture(): Texture; - /** ... */ - setBitmapTextureFilename(): void; - /** - * @returns {boolean} - */ - setBitmapTexture(): boolean; - /** - * @description Gets the bump texture of this material. - * @returns {Texture} A texture; or null if no bump texture has been added to this material. - */ - getBumpTexture(): Texture; - /** ... */ - setBumpTextureFilename(): void; - /** - * @returns {boolean} - */ - setBumpTexture(): boolean; - /** - * @returns {Texture} - */ - getEnvironmentTexture(): Texture; - /** ... */ - setEnvironmentTextureFilename(): void; - /** - * @returns {boolean} - */ - setEnvironmentTexture(): boolean; - /** - * @returns {Texture} - */ - getTransparencyTexture(): Texture; - /** ... */ - setTransparencyTextureFilename(): void; - /** - * @returns {boolean} - */ - setTransparencyTexture(): boolean; - /** ... */ - physicallyBased(): void; - /** - * @returns {void} - */ - toPhysicallyBased(): void; - } - - class Mesh extends GeometryBase { - /** - * Returns true if every mesh "edge" has two or more faces. - */ - isClosed: boolean; - /** - * Will return true if SetCachedTextureCoordinates has been called; - * otherwise will return false. - */ - hasCachedTextureCoordinates: boolean; - /** - * HasPrincipalCurvatures - */ - hasPrincipalCurvatures: boolean; - /** - * Number of partition information chunks stored on this mesh based - * on the last call to CreatePartitions - */ - partitionCount: number; - /** - * @description Create a mesh from a SubD control net - * @returns {Mesh} mesh representing control net on success, null on failure - */ - static createFromSubDControlNet(): Mesh; - /** ... */ - static toThreejsJSONMerged(): void; - /** - * @description Returns true if every mesh "edge" has at most two faces. - * @returns {boolean} true if the mesh is manifold, false otherwise. - */ - isManifold(): boolean; - /** ... */ - vertices(): void; - /** ... */ - topologyEdges(): void; - /** ... */ - faces(): void; - /** ... */ - normals(): void; - /** ... */ - vertexColors(): void; - /** ... */ - textureCoordinates(): void; - /** - * @description Removes all texture coordinate information from this mesh. - * @returns {void} - */ - clearTextureData(): void; - /** - * @description Removes surface parameters, curvature parameters and surface statistics from the mesh. - * @returns {void} - */ - clearSurfaceData(): void; - /** - * @description Removes topology data, forcing all topology information to be recomputed. - * @returns {void} - */ - destroyTopology(): void; - /** - * @description Destroys the mesh vertex access tree. - * @returns {void} - */ - destroyTree(): void; - /** - * @description Destroys mesh partition. - * @returns {void} - */ - destroyPartition(): void; - /** - * @description Set texture coordinates using given mapping and applying given transform. - Set lazy to false to generate texture coordinates right away. - * @param {TextureMapping} tm Texture mapping - * @param {Transform} xf Transform to apply to the texture mapping - * @param {boolean} lazy Whether to generate lazily (true) or right away (false) - * @returns {void} - */ - setTextureCoordinates(tm:TextureMapping,xf:Transform,lazy:boolean): void; - /** - * @description Removes any unreferenced objects from arrays, re-indexes as needed - and shrinks arrays to minimum required size. - * @returns {boolean} true on success, false on failure. - */ - compact(): boolean; - /** - * @description Appends a copy of another mesh to this one and updates indices of appended mesh parts. - * @param {Mesh} other Mesh to append to this one. - * @returns {void} - */ - append(other:Mesh): void; - /** - * @description In ancient times (or modern smart phone times), some rendering engines - were only able to process small batches of triangles and the - CreatePartitions() function was provided to partition the mesh into - subsets of vertices and faces that those rendering engines could handle. - * @returns {boolean} true on success - */ - createPartitions(): boolean; - /** ... */ - toThreejsJSON(): void; - /** ... */ - toThreejsJSONRotate(): void; - /** ... */ - static createFromThreejsJSON(): void; - } - - class MeshFaceList { - /** - * Gets or sets the number of mesh faces. When getting this can includes invalid faces. - */ - count: number; - /** - * Gets the number of faces that are valid quads (4 corners). - */ - quadCount: number; - /** - * Gets the number of faces that are valid triangles (3 corners). - */ - triangleCount: number; - /** - * Gets or sets the total number of mesh triangles and quads the internal data structure can hold without resizing. - */ - capacity: number; - /** ... */ - get(): void; - /** - * @description Gets the 3D location of the vertices forming a face. - * @param {number} faceIndex A face index. - * @returns {Array} [boolean, Point3f, Point3f, Point3f, Point3f] - * (boolean) true if the operation succeeded, otherwise false. - * (Point3f) A first point. This out argument is assigned during the call. - * (Point3f) A second point. This out argument is assigned during the call. - * (Point3f) A third point. This out argument is assigned during the call. - * (Point3f) A fourth point. This out argument is assigned during the call. - */ - getFaceVertices(faceIndex:number): object; - /** - * @description Gets the center point of a face. - For a triangular face, this is the centroid or barycenter.For a quad, this is the average of four comer points. - * @param {number} faceIndex A face index. - * @returns {number[]} The center point. - */ - getFaceCenter(faceIndex:number): number[]; - /** - * @description Clears the Face list on the mesh. - * @returns {void} - */ - clear(): void; - /** - * @description Releases all memory allocated to store faces. The list capacity will be 0 after this call. - Subsequent calls can add new items. - * @returns {void} - */ - destroy(): void; - /** ... */ - addTriFace(): void; - /** ... */ - addQuadFace(): void; - /** ... */ - setTriFace(): void; - /** ... */ - setQuadFace(): void; - /** - * @description Splits all quads along the short diagonal. - * @returns {boolean} true on success, false on failure. - */ - convertQuadsToTriangles(): boolean; - /** - * @description Splits non-planar quads into two triangles based on given parameters. - * @param {number} planarTolerance If planarTolerance >= 0, then a quad is split if its vertices - are not coplanar. - If both planarTolerance = Rhino.RhinoMath.UnsetValue and - angleToleranceRadians >= 0.0, then the planarity test is skipped. - * @param {number} angleToleranceRadians If angleToleranceRadians >= 0.0, then a quad is split if the - angle between opposite corner normals is > angleToleranceRadians. - The corner normal is the normal to the triangle formed by two - adjacent edges and the diagonal connecting their endpoints. - A quad has four corner normals. - If both angleToleranceRadians = Rhino.RhinoMath.UnsetValue and planarTolerance >= 0.0, - then the corner normal angle test is skipped. - * @param {number} splitMethod 0 default - Currently divides along the short diagonal. This may be - changed as better methods are found or preferences change. - By passing zero, you let the developers of this code - decide what's best for you over time. - 1 divide along the short diagonal - 2 divide along the long diagonal - 3 minimize resulting area - 4 maximize resulting area - 5 minimize angle between triangle normals - 6 maximize angle between triangle normals - * @returns {number} Number of quads that were converted to triangles. - */ - convertNonPlanarQuadsToTriangles(planarTolerance:number,angleToleranceRadians:number,splitMethod:number): number; - /** - * @description Joins adjacent triangles into quads if the resulting quad is 'nice'. - * @param {number} angleToleranceRadians Used to compare adjacent triangles' face normals. For two triangles - to be considered, the angle between their face normals has to - be <= angleToleranceRadians. When in doubt use RhinoMath.PI/90.0 (2 degrees). - * @param {number} minimumDiagonalLengthRatio ( <= 1.0) For two triangles to be considered the ratio of the - resulting quad's diagonals - (length of the shortest diagonal)/(length of longest diagonal). - has to be >= minimumDiagonalLengthRatio. When in doubt us .875. - * @returns {boolean} true on success, false on failure. - */ - convertTrianglesToQuads(angleToleranceRadians:number,minimumDiagonalLengthRatio:number): boolean; - /** - * @description Attempts to removes degenerate faces from the mesh. - Degenerate faces are faces that contains such a combination of indices, - that their final shape collapsed in a line or point.Before returning, this method also attempts to repair faces by juggling - vertex indices. - * @returns {number} The number of degenerate faces that were removed. - */ - cullDegenerateFaces(): number; - /** - * @description Gets a value indicating whether a face is hidden. - A face is hidden if, and only if, at least one of its vertices is hidden. - * @param {number} faceIndex A face index. - * @returns {boolean} true if hidden, false if fully visible. - */ - isHidden(faceIndex:number): boolean; - /** - * @description Returns true if at least one of the face edges are not topologically - connected to any other faces. - * @param {number} faceIndex A face index. - * @returns {boolean} true if that face makes the mesh open, otherwise false. - */ - hasNakedEdges(faceIndex:number): boolean; - } - - class MeshingParameters { - /** - * Gets or sets how and if textures will be packed. - */ - textureRange: number; - /** - * Gets or sets whether or not the mesh is allowed to have jagged seams. - * When this flag is set to true, meshes on either side of a Brep Edge will not match up. - */ - jaggedSeams: boolean; - /** - * Gets or sets a value indicating whether or not the sampling grid can be refined - * when certain tolerances are not met. - */ - refineGrid: boolean; - /** - * Gets or sets a value indicating whether or not planar areas are allowed - * to be meshed in a simplified manner. - */ - simplePlanes: boolean; - /** - * Gets or sets a value indicating whether or not surface curvature - * data will be embedded in the mesh. - */ - computeCurvature: boolean; - /** - * Gets or sets a value indicating whether or not to post process non-closed meshes - * that should be closed. If the Brep being meshed is closed, JaggedSeams = false, - * and ClosedObjectPostProcess = true, and the resulting mesh is not closed, then a - * post meshing process is applied to find and close gaps in the mesh. Typically the - * resulting mesh is not closed because the input Brep has a geometric flaw, like - * loops in trimming curve. - */ - closedObjectPostProcess: boolean; - /** - * Gets or sets the minimum number of grid quads in the initial sampling grid. - */ - gridMinCount: number; - /** - * Gets or sets the maximum number of grid quads in the initial sampling grid. - */ - gridMaxCount: number; - /** - * Gets or sets the maximum allowed angle difference (in radians) - * for a single sampling quad. The angle pertains to the surface normals. - */ - gridAngle: number; - /** - * Gets or sets the maximum allowed aspect ratio of sampling quads. - */ - gridAspectRatio: number; - /** - * Gets or sets the grid amplification factor. - * Values lower than 1.0 will decrease the number of initial quads, - * values higher than 1.0 will increase the number of initial quads. - */ - gridAmplification: number; - /** - * Gets or sets the maximum allowed edge deviation. - * This tolerance is measured between the center of the mesh edge and the surface. - */ - tolerance: number; - /** - * Gets or sets the minimum tolerance. - */ - minimumTolerance: number; - /** - * Gets or sets the relative tolerance. - */ - relativeTolerance: number; - /** - * Gets or sets the minimum allowed mesh edge length. - */ - minimumEdgeLength: number; - /** - * Gets or sets the maximum allowed mesh edge length. - */ - maximumEdgeLength: number; - /** - * Gets or sets the mesh parameter refine angle in radians. - */ - refineAngle: number; - - constructor(density: number); - - constructor(density: number, minimumEdgeLength: number); - /** ... */ - static default(): void; - /** ... */ - static fastRenderMesh(): void; - /** ... */ - static qualityRenderMesh(): void; - /** ... */ - static defaultAnalysisMesh(): void; - /** ... */ - toJSON(): void; - /** ... */ - encode(): void; - /** ... */ - static decode(): void; - } - - class MeshNormalList { - /** - */ - count: any; - /** ... */ - get(): void; - /** ... */ - set(): void; - /** ... */ - clear(): void; - /** ... */ - destroy(): void; - /** ... */ - add(): void; - /** ... */ - computeNormals(): void; - /** ... */ - unitizeNormals(): void; - /** ... */ - flip(): void; - } - - class MeshTextureCoordinateList { - /** - * Gets or sets the number of texture coordinates. - */ - count: number; - /** ... */ - get(): void; - /** ... */ - set(): void; - /** - * @description Adds a new texture coordinate to the end of the Texture list. - * @param {number} s S component of new texture coordinate. - * @param {number} t T component of new texture coordinate. - * @returns {number} The index of the newly added texture coordinate. - */ - add(s:number,t:number): number; - } - - class MeshTopologyEdgeList { - /** - * Gets the amount of edges in this list. - */ - count: number; - /** - * @description Gets the 3d line along an edge. - * @param {number} topologyEdgeIndex The topology edge index. - * @returns {Line} Line along edge. If input is not valid, an Invalid Line is returned. - */ - edgeLine(topologyEdgeIndex:number): Line; - } - - class MeshVertexColorList { - /** - * Gets or sets the number of mesh colors. - */ - count: number; - /** - * Gets or sets the total number of vertex colors the internal data structure can hold without resizing. - */ - capacity: number; - /** ... */ - get(): void; - /** ... */ - set(): void; - /** - * @description Clears the vertex color list on the mesh. - * @returns {void} - */ - clear(): void; - /** - * @description Adds a new vertex color to the end of the color list. - * @param {number} red Red component of color, must be in the 0~255 range. - * @param {number} green Green component of color, must be in the 0~255 range. - * @param {number} blue Blue component of color, must be in the 0~255 range. - * @returns {number} The index of the newly added color. - */ - add(red:number,green:number,blue:number): number; - } - - class MeshVertexList { - /** - * Gets or sets the number of mesh vertices. - */ - count: number; - /** - * Set to true if the vertices should be stored in double precision - */ - useDoublePrecisionVertices: boolean; - /** ... */ - setCount(): void; - /** ... */ - get(): void; - /** ... */ - set(): void; - /** - * @description Clears the Vertex list on the mesh. - * @returns {void} - */ - clear(): void; - /** - * @description Releases all memory allocated to store faces. The list capacity will be 0 after this call. - Subsequent calls can add new items. - * @returns {void} - */ - destroy(): void; - /** - * @description Adds a new vertex to the end of the Vertex list. - * @param {number} x X component of new vertex coordinate. - * @param {number} y Y component of new vertex coordinate. - * @param {number} z Z component of new vertex coordinate. - * @returns {number} The index of the newly added vertex. - */ - add(x:number,y:number,z:number): number; - /** - * @description Gets a value indicating whether or not a vertex is hidden. - * @param {number} vertexIndex Index of vertex to query. - * @returns {boolean} true if the vertex is hidden, false if it is not. - */ - isHidden(vertexIndex:number): boolean; - /** - * @description Hides the vertex at the given index. - * @param {number} vertexIndex Index of vertex to hide. - * @returns {void} - */ - hide(vertexIndex:number): void; - /** - * @description Shows the vertex at the given index. - * @param {number} vertexIndex Index of vertex to show. - * @returns {void} - */ - show(vertexIndex:number): void; - /** - * @description Hides all vertices in the mesh. - * @returns {void} - */ - hideAll(): void; - /** - * @description Shows all vertices in the mesh. - * @returns {void} - */ - showAll(): void; - /** - * @description Removes all vertices that are currently not used by the Face list. - * @returns {number} The number of unused vertices that were removed. - */ - cullUnused(): number; - /** - * @description Merges identical vertices. - * @param {boolean} ignoreNormals If true, vertex normals will not be taken into consideration when comparing vertices. - * @param {boolean} ignoreAdditional If true, texture coordinates, colors, and principal curvatures - will not be taken into consideration when comparing vertices. - * @returns {boolean} true if the mesh is changed, in which case the mesh will have fewer vertices than before. - */ - combineIdentical(ignoreNormals:boolean,ignoreAdditional:boolean): boolean; - } - - class ModelComponent extends CommonObject { - /** - * True if this model component is a system constant. - * An incomplete list of system constant model components is below:ON_ModelComponent::Unset - * ON_InstanceDefinition::Empty - * ON_Linetype::UnsetON_Linetype::ContinuousON_Linetype::ByLayerON_Linetype::ByParent - * ON_Layer::UnsetON_Layer::Default - * ON_TextStyle::UnsetON_TextStyle::DefaultON_TextStyle::ByLayerON_TextStyle::ByParent - * ON_DimStyle::UnsetON_DimStyle::DefaultON_DimStyle::DefaultInchDecimalON_DimStyle::DefaultInchFractionalON_DimStyle::DefaultFootInchArchitectureON_DimStyle::DefaultMillimeterSmallON_DimStyle::DefaultMillimeterLargeON_DimStyle::DefaultMillimeterArchitecture - */ - isSystemComponent: boolean; - /** - * Gets or sets the ID of the current instance. - */ - id: string; - /** - * @description Increments the Cyclic Redundancy Check value by this instance. - * @param {number} currentRemainder The current remainder value. - * @returns {number} The updated remainder value. - */ - dataCRC(currentRemainder:number): number; - /** - * @description Resets the HasId property of the model component to false, if possible. - * @returns {void} - */ - clearId(): void; - } - - class NurbsCurve extends Curve { - /** - * Gets the order of the curve. Order = Degree + 1. - */ - order: number; - /** - * Gets a value indicating whether or not the curve is rational. - * Rational curves have control-points with custom weights. - */ - isRational: boolean; - /** - * Returns true if the NURBS curve has Bezier spans (all distinct knots have multiplicity = degree) - */ - hasBezierSpans: boolean; - - constructor(degree: number, pointCount: number); - - constructor(dimension: number, rational: boolean, order: number, pointCount: number); - /** - * @description Gets a non-rational, degree 1 NURBS curve representation of the line. - * @returns {NurbsCurve} Curve on success, null on failure. - */ - static createFromLine(): NurbsCurve; - /** - * @description Gets a rational degree 2 NURBS curve representation - of the arc. Note that the parameterization of NURBS curve - does not match arc's transcendental parameterization. - * @returns {NurbsCurve} Curve on success, null on failure. - */ - static createFromArc(): NurbsCurve; - /** - * @description Gets a rational degree 2 NURBS curve representation - of the circle. Note that the parameterization of NURBS curve - does not match circle's transcendental parameterization. - Use GetRadianFromNurbFormParameter() and - GetParameterFromRadian() to convert between the NURBS curve - parameter and the transcendental parameter. - * @returns {NurbsCurve} Curve on success, null on failure. - */ - static createFromCircle(): NurbsCurve; - /** - * @description Gets a rational degree 2 NURBS curve representation of the ellipse. - Note that the parameterization of the NURBS curve does not match - with the transcendental parameterization of the ellipsis. - * @returns {NurbsCurve} A NURBS curve representation of this ellipse or null if no such representation could be made. - */ - static createFromEllipse(): NurbsCurve; - /** - * @description Constructs a 3D NURBS curve from a list of control points. - * @param {boolean} periodic If true, create a periodic uniform curve. If false, create a clamped uniform curve. - * @param {number} degree (>=1) degree=order-1. - * @param {Point3dList} points control vertex locations. - * @returns {NurbsCurve} new NURBS curve on success - null on error. - */ - static create(periodic:boolean,degree:number,points:Point3dList): NurbsCurve; - /** - * @description Increase the degree of this curve. - * @param {number} desiredDegree The desired degree. - Degrees should be number between and including 1 and 11. - * @returns {boolean} true on success, false on failure. - */ - increaseDegree(desiredDegree:number): boolean; - /** - * @description Clamps ends and adds knots so the NURBS curve has Bezier spans - (all distinct knots have multiplicity = degree). - * @param {boolean} setEndWeightsToOne If true and the first or last weight is not one, then the first and - last spans are re-parameterized so that the end weights are one. - * @returns {boolean} true on success, false on failure. - */ - makePiecewiseBezier(setEndWeightsToOne:boolean): boolean; - /** - * @description Use a linear fractional transformation to re-parameterize the NURBS curve. - This does not change the curve's domain. - * @param {number} c re-parameterization constant (generally speaking, c should be > 0). The - control points and knots are adjusted so that - output_nurbs(t) = input_nurbs(lambda(t)), where lambda(t) = c*t/( (c-1)*t + 1 ). - Note that lambda(0) = 0, lambda(1) = 1, lambda'(t) > 0, - lambda'(0) = c and lambda'(1) = 1/c. - * @returns {boolean} true if successful. - */ - reparameterize(c:number): boolean; - /** - * @description Gets the greville (edit point) parameter that belongs - to the control point at the specified index. - * @param {number} index Index of Greville (Edit) point. - * @returns {number} - */ - grevilleParameter(index:number): number; - /** - * @description Gets the Greville parameter that belongs - to the control point at the specified index. - * @param {number} index Index of Greville point. - * @returns {number[]} - */ - grevillePoint(index:number): number[]; - /** - * @description Converts a span of the NURBS curve into a Bezier. - * @param {number} spanIndex The span index, where (0 <= spanIndex <= Points.Count - Order). - * @returns {BezierCurve} Bezier curve if successful, null otherwise. - */ - convertSpanToBezier(spanIndex:number): BezierCurve; - /** ... */ - points(): void; - /** ... */ - knots(): void; - } - - class NurbsCurveKnotList { - /** - * Total number of knots in this curve. - */ - count: number; - /** - * Gets a value indicating whether or not the knot vector is clamped at the start of the curve. - * Clamped curves start at the first control-point. This requires fully multiple knots. - */ - isClampedStart: boolean; - /** - * Gets a value indicating whether or not the knot vector is clamped at the end of the curve. - * Clamped curves are coincident with the first and last control-point. This requires fully multiple knots. - */ - isClampedEnd: boolean; - /** ... */ - get(): void; - /** ... */ - set(): void; - /** ... */ - toList(): void; - /** - * @description Inserts a knot and update control point locations. - Does not change parameterization or locus of curve. - * @param {number} value Knot value to insert. - * @returns {boolean} true on success, false on failure. - */ - insertKnot(value:number): boolean; - /** - * @description Get knot multiplicity. - * @param {number} index Index of knot to query. - * @returns {number} The multiplicity (valence) of the knot. - */ - knotMultiplicity(index:number): number; - /** - * @description Compute a clamped, uniform knot vector based on the current - degree and control point count. Does not change values of control - vertices. - * @param {number} knotSpacing Spacing of subsequent knots. - * @returns {boolean} true on success, false on failure. - */ - createUniformKnots(knotSpacing:number): boolean; - /** - * @description Compute a clamped, uniform, periodic knot vector based on the current - degree and control point count. Does not change values of control - vertices. - * @param {number} knotSpacing Spacing of subsequent knots. - * @returns {boolean} true on success, false on failure. - */ - createPeriodicKnots(knotSpacing:number): boolean; - /** - * @description Computes the knots that are superfluous because they are not used in NURBs evaluation. - These make it appear so that the first and last curve spans are different from interior spans. - http://wiki.mcneel.com/developer/onsuperfluousknot - * @param {boolean} start true if the query targets the first knot. Otherwise, the last knot. - * @returns {number} A component. - */ - superfluousKnot(start:boolean): number; - } - - class NurbsCurvePointList { - /** - * Gets the number of control points in this curve. - */ - count: number; - /** - * Gets the length of the polyline connecting all control points. - */ - controlPolygonLength: number; - /** ... */ - get(): void; - /** ... */ - set(): void; - /** - * @description Use a combination of scaling and reparameterization to change the end weights to the specified values. - * @param {number} w0 Weight for first control point. - * @param {number} w1 Weight for last control point. - * @returns {boolean} true on success, false on failure. - */ - changeEndWeights(w0:number,w1:number): boolean; - /** - * @description Converts the curve to a Rational NURBS curve. Rational NURBS curves have weighted control points. - * @returns {boolean} true on success, false on failure. - */ - makeRational(): boolean; - /** - * @description Converts the curve to a Non-rational NURBS curve. Non-rational curves have unweighted control points. - * @returns {boolean} true on success, false on failure. - */ - makeNonRational(): boolean; - } - - class NurbsSurface extends Surface { - /** - * Gets a value indicating whether or not the NURBS surface is rational. - */ - isRational: boolean; - /** - * Gets the order in the U direction. - */ - orderU: number; - /** - * Gets the order in the V direction. - */ - orderV: number; - /** - * @description Constructs a new NURBS surface with internal uninitialized arrays. - * @param {number} dimension The number of dimensions.>= 1. This value is usually 3. - * @param {boolean} isRational true to make a rational NURBS. - * @param {number} order0 The order in U direction.>= 2. - * @param {number} order1 The order in V direction.>= 2. - * @param {number} controlPointCount0 Control point count in U direction.>= order0. - * @param {number} controlPointCount1 Control point count in V direction.>= order1. - * @returns {NurbsSurface} A new NURBS surface, or null on error. - */ - static create(dimension:number,isRational:boolean,order0:number,order1:number,controlPointCount0:number,controlPointCount1:number): NurbsSurface; - /** - * @description Constructs a new NURBS surfaces from cone data. - * @param {Cone} cone A cone value. - * @returns {NurbsSurface} A new NURBS surface, or null on error. - */ - static createFromCone(cone:Cone): NurbsSurface; - /** - * @description Constructs a new NURBS surfaces from sphere data. - * @param {Sphere} sphere A sphere value. - * @returns {NurbsSurface} A new NURBS surface, or null on error. - */ - static createFromSphere(sphere:Sphere): NurbsSurface; - /** - * @description Constructs a new NURBS surfaces from cylinder data. - * @param {Cylinder} cylinder A cylinder value. - * @returns {NurbsSurface} A new NURBS surface, or null on error. - */ - static createFromCylinder(cylinder:Cylinder): NurbsSurface; - /** - * @description Constructs a ruled surface between two curves. Curves must share the same knot-vector. - * @param {Curve} curveA First curve. - * @param {Curve} curveB Second curve. - * @returns {NurbsSurface} A ruled surface on success or null on failure. - */ - static createRuledSurface(curveA:Curve,curveB:Curve): NurbsSurface; - /** - * @description Makes this surface rational. - * @returns {boolean} true if the operation succeeded; otherwise, false. - */ - makeRational(): boolean; - /** - * @description Makes this surface non-rational. - * @returns {boolean} true if the operation succeeded; otherwise, false. - */ - makeNonRational(): boolean; - /** - * @description Increase the degree of this surface in U direction. - * @param {number} desiredDegree The desired degree. - Degrees should be number between and including 1 and 11. - * @returns {boolean} true on success, false on failure. - */ - increaseDegreeU(desiredDegree:number): boolean; - /** - * @description Increase the degree of this surface in V direction. - * @param {number} desiredDegree The desired degree. - Degrees should be number between and including 1 and 11. - * @returns {boolean} true on success, false on failure. - */ - increaseDegreeV(desiredDegree:number): boolean; - /** ... */ - knotsU(): void; - /** ... */ - knotsV(): void; - /** ... */ - points(): void; - } - - class NurbsSurfaceKnotList { - /** - * Gets the total number of knots in this curve. - */ - count: number; - /** - */ - isClampedStart: any; - /** - */ - isClampedEnd: any; - /** ... */ - get(): void; - /** ... */ - set(): void; - /** ... */ - toList(): void; - /** - * @description Inserts a knot and update control point locations. - Does not change parameterization or locus of curve. - * @param {number} value Knot value to insert. - * @returns {boolean} true on success, false on failure. - */ - insertKnot(value:number): boolean; - /** - * @description Get knot multiplicity. - * @param {number} index Index of knot to query. - * @returns {number} The multiplicity (valence) of the knot. - */ - knotMultiplicity(index:number): number; - /** - * @description Compute a clamped, uniform knot vector based on the current - degree and control point count. Does not change values of control - vertices. - * @param {number} knotSpacing Spacing of subsequent knots. - * @returns {boolean} true on success, false on failure. - */ - createUniformKnots(knotSpacing:number): boolean; - /** - * @description Compute a clamped, uniform, periodic knot vector based on the current - degree and control point count. Does not change values of control - vertices. - * @param {number} knotSpacing Spacing of subsequent knots. - * @returns {boolean} true on success, false on failure. - */ - createPeriodicKnots(knotSpacing:number): boolean; - /** - * @description Computes the knots that are superfluous because they are not used in NURBs evaluation. - These make it appear so that the first and last surface spans are different from interior spans. - http://wiki.mcneel.com/developer/onsuperfluousknot - * @param {boolean} start true if the query targets the first knot. Otherwise, the last knot. - * @returns {number} A component. - */ - superfluousKnot(start:boolean): number; - } - - class NurbsSurfacePointList { - /** - */ - count: any; - /** - * Gets the number of control points in the U direction of this surface. - */ - countU: number; - /** - * Gets the number of control points in the V direction of this surface. - */ - countV: number; - /** ... */ - get(): void; - /** - * @description Gets a world 3-D, or Euclidean, control point at the given (u, v) index. - The 4-D representation is (x, y, z, 1.0). - * @param {number} u Index of control point in the surface U direction. - * @param {number} v Index of control point in the surface V direction. - * @returns {Array} [boolean, number[]] - * (boolean) true on success, false on failure. - * (number[]) Coordinate of control point. - */ - getPoint(u:number,v:number): object; - /** ... */ - set(): void; - /** ... */ - makeRational(): void; - /** ... */ - makeNonRational(): void; - } - - class ObjectAttributes extends CommonObject { - /** - * An object must be in one of three modes: normal, locked or hidden. - * If an object is in normal mode, then the object's layer controls visibility - * and selectability. If an object is locked, then the object's layer controls - * visibility by the object cannot be selected. If the object is hidden, it is - * not visible and it cannot be selected. - */ - mode: ObjectMode; - /** - * Use this query to determine if an object is part of an instance definition. - */ - isInstanceDefinitionObject: boolean; - /** - * Gets or sets an object's visibility. - */ - visible: boolean; - /** - * Gets or sets an object optional text name. - * More than one object in a model can have the same name and - * some objects may have no name. - */ - name: string; - /** - * Gets or sets an object's casts shadows property, or whether or not an object casts shadows on other objects and a ground plane. - */ - castsShadows: boolean; - /** - * Gets or sets an object's receives shadows property, or whether or not an object receives shadows from other objects. - */ - receivesShadows: boolean; - /** - * The Linetype used to display an object is specified in one of two ways. - * If LinetypeSource is ON::linetype_from_layer, then the object's layer ON_Layer::Linetype() is used. - * If LinetypeSource is ON::linetype_from_object, then value of m_linetype is used. - */ - linetypeSource: ObjectLinetypeSource; - /** - * The color used to display an object is specified in one of three ways. - * If ColorSource is ON::color_from_layer, then the object's layer ON_Layer::Color() is used. - * If ColorSource is ON::color_from_object, then value of m_color is used. - * If ColorSource is ON::color_from_material, then the diffuse color of the object's - * render material is used. See ON_3dmObjectAttributes::MaterialSource() to - * determine where to get the definition of the object's render material. - */ - colorSource: ObjectColorSource; - /** - * The color used to plot an object on paper is specified in one of three ways. - * If PlotColorSource is ON::plot_color_from_layer, then the object's layer ON_Layer::PlotColor() is used. - * If PlotColorSource is ON::plot_color_from_object, then value of PlotColor() is used. - */ - plotColorSource: ObjectPlotColorSource; - /** - */ - plotWeightSource: ObjectPlotWeightSource; - /** - */ - id: any; - /** - * Objects may have an URL. There are no restrictions on what value this - * URL may have. As an example, if the object came from a commercial part - * library, the URL might point to the definition of that part. - */ - url: string; - /** - * Gets or sets an associated layer index. - * Layer definitions in an OpenNURBS model are stored in a layer table. - * The layer table is conceptually an array of ON_Layer classes. Every - * OpenNURBS object in a model is on some layer. The object's layer - * is specified by zero based indices into the ON_Layer array. - */ - layerIndex: number; - /** - * Gets or sets the material index. - * If you want something simple and fast, set the index of - * the rendering material. - */ - materialIndex: number; - /** - * Determines if the simple material should come from the object or from it's layer. - * High quality rendering plug-ins should use m_rendering_attributes. - */ - materialSource: ObjectMaterialSource; - /** - * If ON::color_from_object == ColorSource, then color is the object's display color. - */ - objectColor: number[]; - /** - * If plot_color_from_object == PlotColorSource, then PlotColor is the object's plotting color. - */ - plotColor: number[]; - /** - * Display order used to force objects to be drawn on top or behind each other. - * Larger numbers draw on top of smaller numbers. - * 0 = draw object in standard depth buffered order<0 = draw object behind "normal" draw order objects>0 = draw object on top of "normal" draw order objects - */ - displayOrder: number; - /** - * Plot weight in millimeters. - * =0.0 means use the default width - * <0.0 means don't plot (visible for screen display, but does not show on plot) - */ - plotWeight: number; - /** - * Used to indicate an object has a decoration (like an arrowhead on a curve) - */ - objectDecoration: ObjectDecoration; - /** - * When a surface object is displayed in wireframe, this controls - * how many isoparametric wires are used. - * value number of isoparametric wires - * -1 boundary wires (off) - * 0 boundary and knot wires - * 1 boundary and knot wires and, if there are no interior knots, a single interior wire. - * N>=2 boundary and knot wires and (N+1) interior wires. - */ - wireDensity: number; - /** - * If ViewportId is nil, the object is active in all viewports. If ViewportId is not nil, then - * this object is only active in a specific view. This field is primarily used to assign page - * space objects to a specific page, but it can also be used to restrict model space to a - * specific view. - */ - viewportId: string; - /** - */ - activeSpace: any; - /** - * number of groups object belongs to. - */ - groupCount: number; - /** - * @description Apply a transformation. - * @param {Transform} xform The transformation. - * @returns {boolean} true if successful, false otherwise. - */ - transform(xform:Transform): boolean; - /** - * @description Determines if an object has a display mode override for a given viewport. - * @param {string} viewportId Id of a Rhino Viewport. - * @returns {boolean} true if the object has a display mode override for the viewport; otherwise, false. - */ - hasDisplayModeOverride(viewportId:string): boolean; - /** ... */ - drawColor(): void; - /** ... */ - decals(): void; - /** ... */ - meshModifiers(): void; - /** - * @description Returns an array of GroupCount group indices. If GroupCount is zero, then GetGroupList() returns null. - * @returns {number[]} An array of group indices. null might be returned in place of an empty array. - */ - getGroupList(): number[]; - /** - * @description Adds object to the group with specified index by appending index to - group list. - If the object is already in group, nothing is changed. - * @param {number} groupIndex The index that will be added. - * @returns {void} - */ - addToGroup(groupIndex:number): void; - /** - * @description removes object from the group with specified index. - If the object is not in the group, nothing is changed. - * @param {number} groupIndex The index that will be removed. - * @returns {void} - */ - removeFromGroup(groupIndex:number): void; - /** - * @description Removes object from all groups. - * @returns {void} - */ - removeFromAllGroups(): void; - } - - class PhysicallyBasedMaterial { - /** - */ - supported: any; - /** - */ - subsurface: number; - /** - */ - subsurfaceScatteringRadius: number; - /** - */ - metallic: number; - /** - */ - specular: number; - /** - */ - reflectiveIOR: number; - /** - */ - specularTint: number; - /** - */ - roughness: number; - /** - */ - anisotropic: number; - /** - */ - anisotropicRotation: number; - /** - */ - sheen: number; - /** - */ - sheenTint: number; - /** - */ - clearcoat: number; - /** - */ - clearcoatRoughness: number; - /** - */ - opacityIOR: number; - /** - */ - opacity: number; - /** - */ - opacityRoughness: number; - /** - */ - baseColor: Rhino.Display.Color4f; - /** - */ - emissionColor: any; - /** - */ - subsurfaceScatteringColor: Rhino.Display.Color4f; - } - - class Plane { - /** ... */ - static worldXY(): void; - } - - class PlaneSurface extends Surface { - } - - class Point extends GeometryBase { - /** - * Gets or sets the location (position) of this point. - */ - location: number[]; - - constructor(location: number[]); - } - - class Point3d { - /** - * @description Transforms the present point in place. The transformation matrix acts on the left of the point. i.e., - result = transformation*point - * @param {Transform} xform Transformation to apply. - * @returns {void} - */ - static transform(xform:Transform): void; - } - - class Point3dList { - /** - */ - capacity: any; - /** - */ - count: any; - /** - * Even though this is a property, it is not a "fast" calculation. Every point is - * evaluated in order to get the bounding box of the list. - */ - boundingBox: BoundingBox; - - constructor(initialCapacity: number); - /** ... */ - get(): void; - /** ... */ - set(): void; - /** ... */ - clear(): void; - /** ... */ - insert(): void; - /** ... */ - removeAt(): void; - /** - * @description Adds a Point3d to the end of the list with given x,y,z coordinates. - * @param {number} x The X coordinate. - * @param {number} y The Y coordinate. - * @param {number} z The Z coordinate. - * @returns {void} - */ - add(x:number,y:number,z:number): void; - /** - * @description Applies a transform to all the points in the list. - * @param {Transform} xform Transform to apply. - * @returns {void} - */ - transform(xform:Transform): void; - /** - * @description Set all the X values for the points to a single value - * @returns {void} - */ - setAllX(): void; - /** - * @description Set all the Y values for the points to a single value - * @returns {void} - */ - setAllY(): void; - /** - * @description Set all the Z values for the points to a single value - * @returns {void} - */ - setAllZ(): void; - /** ... */ - append(): void; - } - - class PointCloud extends GeometryBase { - /** - * Gets the number of points in this point cloud. - */ - count: number; - /** - * Gets the number of points that have their Hidden flag set. - */ - hiddenPointCount: number; - /** - * Gets a value indicating whether or not the points in this - * point cloud have colors assigned to them. - */ - containsColors: boolean; - /** - * Gets a value indicating whether or not the points in this - * point cloud have normals assigned to them. - */ - containsNormals: boolean; - /** - */ - containsValues: any; - /** - * Gets a value indicating whether or not the points in this - * point cloud have hidden flags assigned to them. - */ - containsHiddenFlags: boolean; - /** - * @description Destroys the color information in this point cloud. - * @returns {void} - */ - clearColors(): void; - /** - * @description Destroys the normal vector information in this point cloud. - * @returns {void} - */ - clearNormals(): void; - /** - * @description Destroys the hidden flag information in this point cloud. - * @returns {void} - */ - clearHiddenFlags(): void; - /** - * @description Appends a new PointCloudItem to the end of this point cloud. - * @returns {PointCloudItem} The newly appended item. - */ - appendNew(): PointCloudItem; - /** - * @description Inserts a new at a specific position of the point cloud. - * @param {number} index Index of new item. - * @returns {PointCloudItem} The newly inserted item. - */ - insertNew(index:number): PointCloudItem; - /** - * @description Merges, or appends, a specified point cloud into this one. - * @param {PointCloud} other PointCloud to merge with this one. - * @returns {void} - */ - merge(other:PointCloud): void; - /** - * @description Append a new point to the end of the list. - * @param {number[]} point Point to append. - * @returns {void} - */ - add(point:number[]): void; - /** ... */ - addPointNormal(): void; - /** ... */ - addPointColor(): void; - /** ... */ - addPointNormalColor(): void; - /** ... */ - addPointValue(): void; - /** ... */ - addPointNormalColorValue(): void; - /** - * @description Appends a collection of points to this point cloud. - * @param {Point3d[]} points Points to append. - * @returns {void} - */ - addRange(points:Point3d[]): void; - /** ... */ - addRangePointNormal(): void; - /** ... */ - addRangePointColor(): void; - /** ... */ - addRangePointNormalColor(): void; - /** ... */ - addRangePointValue(): void; - /** ... */ - addRangePointNormalColorValue(): void; - /** - * @description Inserts a new point into the point list. - * @param {number} index Insertion index. - * @param {number[]} point Point to append. - * @returns {void} - */ - insert(index:number,point:number[]): void; - /** ... */ - insertPointNormal(): void; - /** ... */ - insertPointColor(): void; - /** ... */ - insertPointNormalColor(): void; - /** ... */ - insertPointValue(): void; - /** ... */ - insertPointNormalColorValue(): void; - /** - * @description Append a collection of points to this point cloud. - * @param {number} index Index at which to insert the new collection. - * @param {Point3d[]} points Points to append. - * @returns {void} - */ - insertRange(index:number,points:Point3d[]): void; - /** - * @description Remove the point at the given index. - * @param {number} index Index of point to remove. - * @returns {void} - */ - removeAt(index:number): void; - /** - * @description Copy all the point coordinates in this point cloud to an array. - * @returns {Point3d[]} An array containing all the points in this point cloud. - */ - getPoints(): Point3d[]; - /** - * @description Returns the location of the point at a specific index. - * @param {number} index The index. - * @returns {number[]} - */ - pointAt(index:number): number[]; - /** - * @description Copy all the normal vectors in this point cloud to an array. - * @returns {any[]} An array containing all the normals in this point cloud. - */ - getNormals(): any[]; - /** - * @description Copy all the point colors in this point cloud to an array. - * @returns {number[][]} An array containing all the colors in this point cloud. - */ - getColors(): number[][]; - /** ... */ - getValues(): void; - /** - * @description Returns index of the closest point in the point cloud to a given test point. - * @param {number[]} testPoint . - * @returns {number} Index of point in the point cloud on success. -1 on failure. - */ - closestPoint(testPoint:number[]): number; - /** ... */ - toThreejsJSON(): void; - } - - class PointCloudItem { - /** - * Gets or sets the location of this point cloud item. - */ - location: number[]; - /** - * Gets or sets the X component of this point cloud item location. - */ - x: number; - /** - * Gets or sets the Y component of this point cloud item location. - */ - y: number; - /** - * Gets or sets the Z component of this point cloud item location. - */ - z: number; - /** - * Gets or sets the normal vector for this point cloud item. - * If this point cloud item does not have a normal vector, - * Vector3d.Unset is returned. - */ - normal: number[]; - /** - * Gets or sets the color of this point cloud item. - * If this point cloud item does not have a color, System.Drawing.Color.Black is returned. - */ - color: number[]; - /** - * Gets or sets the hidden flag of this point cloud item. - * If this point cloud item does not have a hidden flag, false is returned. - */ - hidden: boolean; - /** - */ - value: any; - /** - * Gets the index of this point cloud item. - */ - index: number; - } - - class PointGrid extends GeometryBase { - } - - class PolyCurve extends Curve { - /** - * Gets the number of segments that make up this Polycurve. - */ - segmentCount: number; - /** - * Gets a value indicating whether or not a PolyCurve contains nested PolyCurves. - */ - isNested: boolean; - /** - * This is a quick way to see if the curve has gaps between the sub curve segments. - */ - hasGap: boolean; - /** - * @description Gets the segment curve at the given index. - * @param {number} index Index of segment to retrieve. - * @returns {Curve} The segment at the given index or null on failure. - */ - segmentCurve(index:number): Curve; - /** - * @description Explodes nested polycurve segments and reconstructs this curve from the shattered remains. - The result will have not have any PolyCurves as segments but it will have identical - locus and parameterization. - * @returns {boolean} true if any nested PolyCurve was found and absorbed, false if no PolyCurve segments could be found. - */ - removeNesting(): boolean; - /** - * @description Explodes this PolyCurve into a list of Curve segments. This will not explode nested polycurves. - Call first if you need all individual segments. - * @returns {Curve[]} An array of polycurve segments. - */ - explode(): Curve[]; - /** ... */ - appendLine(): void; - /** ... */ - appendArc(): void; - /** ... */ - appendCurve(): void; - /** - * @description Appends the curve to the polycurve without changing the new segment's geometry. - This function will fail if the PolyCurve is closed or if SegmentCount > 0 and the new segment is closed. - * @param {Curve} curve Segment to append. - * @returns {boolean} true on success, false on failure. - */ - appendSegment(curve:Curve): boolean; - /** - * @description Converts a polycurve parameter to a segment curve parameter. - * @param {number} polycurveParameter Parameter on PolyCurve to convert. - * @returns {number} Segment curve evaluation parameter or UnsetValue if the - segment curve parameter could not be computed. - */ - segmentCurveParameter(polycurveParameter:number): number; - /** - * @description Converts a segment curve parameter to a polycurve parameter. - * @param {number} segmentIndex Index of segment. - * @param {number} segmentCurveParameter Parameter on segment. - * @returns {number} Polycurve evaluation parameter or UnsetValue if the polycurve curve parameter could not be computed. - */ - polyCurveParameter(segmentIndex:number,segmentCurveParameter:number): number; - /** - * @description Returns the polycurve sub-domain assigned to a segment curve. - * @param {number} segmentIndex Index of segment. - * @returns {number[]} The polycurve sub-domain assigned to a segment curve. - Returns Interval.Unset if segment_index < 0 or segment_index >= Count(). - */ - segmentDomain(segmentIndex:number): number[]; - /** - * @description Finds the segment used for evaluation at polycurve_parameter. - * @param {number} polycurveParameter Parameter on polycurve for segment lookup. - * @returns {number} Index of the segment used for evaluation at polycurve_parameter. - If polycurve_parameter < Domain.Min(), then 0 is returned. - If polycurve_parameter > Domain.Max(), then Count()-1 is returned. - */ - segmentIndex(polycurveParameter:number): number; - } - - class Polyline extends Point3dList { - /** - * Gets a value that indicates whether this polyline is valid. - * Valid polylines have at least one segment, no Invalid points and no zero length segments.Closed polylines with only two segments are also not considered valid. - */ - isValid: boolean; - /** - * Gets the number of segments for this polyline. - */ - segmentCount: number; - /** - * Test a polyline to see if it is closed. - */ - isClosed: boolean; - /** - * Gets the total length of the polyline. - */ - length: number; - - constructor(initialCapacity: number); - /** - * @description Test a polyline to see if it is closed. - * @param {number} tolerance The tolerance. - * @returns {boolean} Returns true if polyline has 4 or more points, the distance between the - start and end points is <= tolerance, and there is a - point in the polyline whose distance from the start and end - points is > tolerance. - */ - isClosedWithinTolerance(tolerance:number): boolean; - /** - * @description Gets the point on the polyline at the given parameter. - The integer part of the parameter indicates the index of the segment. - * @param {number} t Polyline parameter. - * @returns {number[]} The point on the polyline at t. - */ - pointAt(t:number): number[]; - /** - * @description Gets the unit tangent vector along the polyline at the given parameter. - The integer part of the parameter indicates the index of the segment. - * @param {number} t Polyline parameter. - * @returns {number[]} The tangent along the polyline at t. - */ - tangentAt(t:number): number[]; - /** ... */ - closesPoint(): void; - /** - * @description Gets the parameter along the polyline which is closest to a test-point. - * @param {number[]} testPoint Point to approximate. - * @returns {number} The parameter along the polyline closest to testPoint. - */ - closestParameter(testPoint:number[]): number; - /** - * @description Constructs a nurbs curve representation of this polyline. - * @returns {NurbsCurve} A Nurbs curve shaped like this polyline or null on failure. - */ - toNurbsCurve(): NurbsCurve; - /** - * @description Constructs a polyline curve representation of this polyline. - * @returns {PolylineCurve} A curve shaped like this polyline or null on failure. - */ - toPolylineCurve(): PolylineCurve; - /** - * @description Constructs an array of line segments that make up the entire polyline. - * @returns {Line[]} An array of line segments or null if the polyline contains fewer than 2 points. - */ - getSegments(): Line[]; - /** - * @description Gets the line segment at the given index. - * @param {number} index Index of segment to retrieve. - * @returns {Line} Line segment at index or Line.Unset on failure. - */ - segmentAt(index:number): Line; - /** - * @description Create a regular polygon inscribed in a circle. The vertices of the polygon will be on the circle. - * @param {Circle} circle The circle. - * @param {number} sideCount The number of sides - * @returns {Polyline} A closed polyline if successful, null otherwise. - */ - static createInscribedPolygon(circle:Circle,sideCount:number): Polyline; - /** - * @description Create a regular polygon circumscribe about a circle. The midpoints of the polygon's edges will be tangent to the circle. - * @param {Circle} circle The circle. - * @param {number} sideCount The number of sides - * @returns {Polyline} A closed polyline if successful, null otherwise. - */ - static createCircumscribedPolygon(circle:Circle,sideCount:number): Polyline; - /** - * @description Create a regular star polygon. The star begins at circle.PointAt(0) and the vertices - alternate between being on circle and begin on a concentric circle of other_radius. - * @param {Circle} circle The circle. - * @param {number} radius The radius of other circle. - * @param {number} cornerCount The number of corners on the circle. There will be 2*cornerCount sides and 2*cornerCount vertices. - * @returns {Polyline} A closed polyline if successful, null otherwise. - */ - static createStarPolygon(circle:Circle,radius:number,cornerCount:number): Polyline; - /** ... */ - static createFromPoints(): void; - } - - class PolylineCurve extends Curve { - /** - * Gets the number of points in this polyline. - */ - pointCount: number; - /** - * @description Gets a point at a specified index in the polyline curve. - * @param {number} index An index. - * @returns {number[]} A point. - */ - point(index:number): number[]; - /** - * @description Sets a point at a specified index in the polyline curve. - * @param {number} index An index. - * @param {number[]} point A point location to set. - * @returns {void} - */ - setPoint(index:number,point:number[]): void; - /** - * @description Returns the underlying Polyline, or points. - * @returns {Polyline} The Polyline if successful, null of the curve has no points. - */ - ToPolyline(): Polyline; - } - - class PostEffect { - /** - */ - id: any; - /** - */ - type: any; - /** - */ - localName: any; - /** - */ - listable: any; - /** - */ - on: any; - /** - */ - shown: any; - /** ... */ - getParameter(): void; - /** ... */ - setParameter(): void; - } - - class RenderChannels { - /** - */ - mode: Modes; - /** - */ - customIds: any; - } - - class RenderContent extends ModelComponent { - /** - */ - kind: any; - /** - */ - isChild: any; - /** - */ - isTopLevel: any; - /** - */ - id: any; - /** - */ - typeName: any; - /** - */ - name: any; - /** - */ - typeId: any; - /** - */ - renderEngineId: any; - /** - */ - plugInId: any; - /** - */ - notes: any; - /** - */ - tags: any; - /** - */ - groupId: any; - /** - */ - hidden: any; - /** - */ - reference: any; - /** - */ - autoDelete: any; - /** - */ - childSlotName: any; - /** ... */ - getParent(): void; - /** ... */ - getFirstChild(): void; - /** ... */ - getNextSibling(): void; - /** ... */ - getTopLevel(): void; - /** ... */ - setTypeName(): void; - /** ... */ - childSlotOn(): void; - /** ... */ - setChildSlotOn(): void; - /** ... */ - childSlotAmount(): void; - /** ... */ - setChildSlotAmount(): void; - /** ... */ - getXML(): void; - /** ... */ - setXML(): void; - /** ... */ - setChild(): void; - /** ... */ - findChild(): void; - /** ... */ - deleteChild(): void; - /** ... */ - getParameter(): void; - /** ... */ - setParameter(): void; - } - - class RenderEnvironment extends File3dmRenderContent { - /** ... */ - toEnvironment(): void; - } - - class RenderEnvironments { - /** - */ - backgroundId: any; - /** - */ - skylightingId: any; - /** - */ - skylightingOverride: any; - /** - */ - reflectionId: any; - /** - */ - reflectionOverride: any; - /** - */ - backgroundId: any; - /** - */ - skylightingId: any; - /** - */ - skylightingOverride: any; - /** - */ - reflectionId: any; - /** - */ - reflectionOverride: any; - } - - class RenderMaterial extends File3dmRenderContent { - /** ... */ - toMaterial(): void; - } - - class RenderSettings extends CommonObject { - /** - * Gets or sets the ambient light color used in rendering. - */ - ambientLight: number[]; - /** - * Gets or sets the background top color used in rendering. - * Sets also the background color if a solid background color is set. - */ - backgroundColorTop: number[]; - /** - * Gets or sets the background bottom color used in rendering. - */ - backgroundColorBottom: number[]; - /** - * Gets or sets a value indicating whether to render using lights that are on layers that are off. - */ - useHiddenLights: boolean; - /** - * Gets or sets a value indicating whether to render using depth cues. - * These are clues to help the perception of position and orientation of objects in the image. - */ - depthCue: boolean; - /** - * Gets or sets a value indicating whether to render using flat shading. - */ - flatShade: boolean; - /** - * Gets or sets a value indicating whether to render back faces. - */ - renderBackFaces: boolean; - /** - * Gets or sets a value indicating whether to instruct the rendering engine to show points. - */ - renderPoints: boolean; - /** - * Gets or sets a value indicating whether to instruct the rendering engine to show curves. - */ - renderCurves: boolean; - /** - * Gets or sets a value indicating whether to instruct the rendering engine to show isocurves. - */ - renderIsoParams: boolean; - /** - * Gets or sets a value indicating whether to instruct the rendering engine to show mesh edges. - */ - renderMeshEdges: boolean; - /** - * Gets or sets a value indicating whether to instruct the rendering engine to show annotations, - * such as linear dimensions or angular dimensions. - */ - renderAnnotations: boolean; - /** - * Gets or sets a value indicating whether to use the resolution of the - * viewport being rendered or ImageSize when rendering - */ - useViewportSize: boolean; - /** - * Gets or sets a value indicating whether to scale the wallpaper in the - * background or not. This is meaningful only if the viewport has a wallpaper - * and render settings are set to render Wallpaper into the background. - */ - scaleBackgroundToFit: boolean; - /** - * Gets or sets whether rendering should be done with transparent background. - */ - transparentBackground: boolean; - /** - * Number of dots/inch (dots=pixels) to use when printing and saving - * bitmaps. The default is 72.0 dots/inch. - */ - imageDpi: number; - /** - * 0=none, 1=normal, 2=best. - */ - shadowMapLevel: number; - /** - * Get or set the given named view - */ - namedView: string; - /** - * Set or get the given snapshot view - */ - snapShot: string; - /** - * Set or get the given specific viewport - */ - specificViewport: string; - /** - * If this object is associated with a document, this gets the document ground plane. - * If this object is associated with a File3dm, this gets the File3dm's ground plane. - * Otherwise it gets a 'free-floating' ground plane object. - */ - groundPlane: GroundPlane; - /** - * If this object is associated with a document, this gets the document safe-frame. - * If this object is associated with a File3dm, this gets the File3dm's safe-frame. - * Otherwise it gets a 'free-floating' safe-frame object. - */ - safeFrame: SafeFrame; - /** - * If this object is associated with a document, this gets the document dithering. - * If this object is associated with a File3dm, this gets the File3dm's dithering. - * Otherwise it gets a 'free-floating' dithering object. - */ - dithering: Dithering; - /** - * If this object is associated with a document, this gets the document skylight. - * If this object is associated with a File3dm, this gets the File3dm's skylight. - * Otherwise it gets a 'free-floating' skylight object. - */ - skylight: Skylight; - /** - * If this object is associated with a document, this gets the document linear workflow. - * If this object is associated with a File3dm, this gets the File3dm's linear workflow. - * Otherwise it gets a 'free-floating' linear workflow object. - */ - linearWorkflow: LinearWorkflow; - /** - * If this object is associated with a document, this gets the document render channels. - * Otherwise it gets a 'free-floating' render channels object. - */ - renderChannels: RenderChannels; - /** - * If this object is associated with a document, this gets the document sun. - * If this object is associated with a File3dm, this gets the File3dm's sun. - * Otherwise it gets a 'free-floating' sun object. - */ - sun: Sun; - /** - */ - renderEnvironments: any; - /** - * If this object is associated with a document, this gets the document post effect data collection. - * If this object is associated with a File3dm, this gets the File3dm's post effect data collection. - * Otherwise it gets a 'free-floating' post effect data collection object. - */ - postEffects: PostEffectCollection; - } - - class RenderTexture extends File3dmRenderContent { - /** - */ - fileName: any; - /** ... */ - toTexture(): void; - /** ... */ - setFilename(): void; - } - - class RevSurface extends Surface { - /** - * @description Constructs a new surface of revolution from a generatrix curve and an axis. - This overload accepts a slice start and end angles. - * @param {Curve} revoluteCurve A generatrix. - * @param {Line} axisOfRevolution An axis. - * @param {number} startAngleRadians An angle in radians for the start. - * @param {number} endAngleRadians An angle in radians for the end. - * @returns {RevSurface} A new surface of revolution, or null if any of the inputs is invalid or on error. - */ - static create(revoluteCurve:Curve,axisOfRevolution:Line,startAngleRadians:number,endAngleRadians:number): RevSurface; - } - - class SafeFrame { - /** - * Determines whether the safe-frame is enabled. - */ - enabled: boolean; - /** - * Show the safe-frame only in perspective views. - */ - perspectiveOnly: boolean; - /** - */ - fieldGridOn: any; - /** - * Turn on the live area, which shows the size of the rendered view as a yellow frame - * in the viewport. - */ - liveFrameOn: boolean; - /** - * Turn on the user specified action area, which shown with blue frames. - */ - actionFrameOn: boolean; - /** - * Action Frame Linked, On = Use the same scale for X and Y. Off = use - * different scales for X and Y. - */ - actionFrameLinked: boolean; - /** - * Action Frame X-scale. - * This value should be in the range 0..1 but it is not clamped. - * It is displayed in the UI in the range 0..100. - */ - actionFrameXScale: number; - /** - * Action Frame Y-scale. - * This value should be in the range 0..1 but it is not clamped. - * It is displayed in the UI in the range 0..100. - */ - actionFrameYScale: number; - /** - * Show a user specified title area frame in orange. - */ - titleFrameOn: boolean; - /** - * Title Frame Linked, On = Use the same scale for X and Y. Off = use - * different scales for X and Y. - */ - titleFrameLinked: boolean; - /** - * Title Frame X-scale. - * This value should be in the range 0..1 but it is not clamped. - * It is displayed in the UI in the range 0..100. - */ - titleFrameXScale: number; - /** - * Title Frame Y-scale. - * This value should be in the range 0..1 but it is not clamped. - * It is displayed in the UI in the range 0..100. - */ - titleFrameYScale: number; - } - - class ShutLining { - /** - */ - on: any; - /** - */ - faceted: any; - /** - */ - autoUpdate: any; - /** - */ - forceUpdate: any; - /** - */ - curves: any; - /** ... */ - deleteAllCurves(): void; - } - - class ShutLiningCurve { - /** - */ - id: any; - /** - */ - radius: any; - /** - */ - profile: any; - /** - */ - enabled: any; - /** - */ - pull: any; - /** - */ - isBump: any; - } - - class Skylight { - /** - */ - enabled: boolean; - /** - * ShadowIntensity is currently unused. - */ - shadowIntensity: number; - } - - class Sphere { - /** - * Gets a value that indicates whether the sphere is valid. - */ - isValid: boolean; - /** - * Gets or sets the diameter for this sphere. - */ - diameter: number; - /** - * Gets or sets the Radius for this sphere. - */ - radius: number; - /** - * Gets or sets the center point of the sphere. - */ - center: number[]; - /** - * Gets the point at the North Pole of the sphere. - * This is the parameterization singularity that can be obtained, - * at V value +Math.Pi/2. - */ - northPole: number[]; - /** - * Gets the point at the South Pole of the sphere. - * This is the parameterization singularity that can be obtained, - * at V value -Math.Pi/2. - */ - southPole: number[]; - - constructor(center: number[], radius: number); - /** - * @description Computes the parallel at a specific latitude angle. - The angle is specified in radians. - * @param {number} radians An angle in radians for the parallel. - * @returns {Circle} A circle. - */ - latitudeRadians(radians:number): Circle; - /** - * @description Computes the parallel at a specific latitude angle. - The angle is specified in degrees. - * @param {number} degrees An angle in degrees for the meridian. - * @returns {Circle} A circle. - */ - latitudeDegrees(degrees:number): Circle; - /** - * @description Computes the meridian at a specific longitude angle. - The angle is specified in radians. - * @param {number} radians An angle in radians. - * @returns {Circle} A circle. - */ - longitudeRadians(radians:number): Circle; - /** - * @description Computes the meridian at a specific longitude angle. - The angle is specified in degrees. - * @param {number} degrees An angle in degrees. - * @returns {Circle} A circle. - */ - longitudeDegrees(degrees:number): Circle; - /** - * @description Evaluates the sphere at specific longitude and latitude angles. - * @param {number} longitudeRadians A number within the interval [0, 2pi]. - * @param {number} latitudeRadians A number within the interval [-pi/2,pi/2]. - * @returns {number[]} A point value. - */ - pointAt(longitudeRadians:number,latitudeRadians:number): number[]; - /** - * @description Computes the normal at a specific angular location on the sphere. - * @param {number} longitudeRadians A number within the interval [0, 2pi]. - * @param {number} latitudeRadians A number within the interval [-pi/2, pi/2]. - * @returns {number[]} A vector. - */ - normalAt(longitudeRadians:number,latitudeRadians:number): number[]; - /** - * @description Returns point on sphere that is closest to given point. - * @param {number[]} testPoint Point to project onto Sphere. - * @returns {number[]} Point on sphere surface closest to testPoint. - */ - closestPoint(testPoint:number[]): number[]; - /** - * @description Finds the angle parameters on this sphere that are closest to a test point. - * @param {number[]} testPoint Point to project onto the sphere. - * @returns {Array} [boolean, number, number] - * (boolean) true on success, false on failure. This function will fail if the point it coincident with the sphere center. - * (number) The longitudinal angle (in radians; 0.0 to 2pi) where the sphere approaches testPoint best. - * (number) The latitudinal angle (in radians; -0.5pi to +0.5pi) where the sphere approaches testPoint best. - */ - closestParameter(testPoint:number[]): object; - /** - * @description Converts this sphere is it Brep representation - * @returns {Brep} - */ - toBrep(): Brep; - /** - * @description Converts this sphere to its NurbsSurface representation. - This is synonymous with calling NurbsSurface.CreateFromSphere(). - * @returns {NurbsSurface} A nurbs surface representation of this sphere or null. - */ - toNurbsSurface(): NurbsSurface; - /** ... */ - encode(): void; - /** ... */ - toJSON(): void; - /** ... */ - static decode(): void; - } - - class SubD extends GeometryBase { - /** - * Test SubD to see if the active level is a solid. - * A "solid" is a closed oriented manifold, or a closed oriented manifold. - */ - isSolid: boolean; - /** - * @description Clear cached information that depends on the location of vertex control points - * @returns {void} - */ - clearEvaluationCache(): void; - /** - * @description Updates vertex tag, edge tag, and edge coefficient values on the active - level. After completing custom editing operations that modify the - topology of the SubD control net or changing values of vertex or edge - tags, the tag and sector coefficients information on nearby components - in the edited areas need to be updated. - * @returns {number} Number of vertices and edges that were changed during the update. - */ - updateAllTagsAndSectorCoefficients(): number; - /** - * @description Apply the Catmull-Clark subdivision algorithm and save the results in this SubD. - * @returns {boolean} true on success - */ - subdivide(): boolean; - } - - class Sun { - /** - */ - minYear: any; - /** - */ - maxYear: any; - /** - */ - vector: Vector3d; - /** - */ - enableAllowed: any; - /** - */ - enableOn: any; - /** - */ - manualControlAllowed: any; - /** - * Manual control 'on' state. When true, allows the user to set the sun - * azimuth and altitude directly. When false, the values are computed. - */ - manualControlOn: boolean; - /** - * Angle in degrees on world X-Y plane that should be considered north in the model. - * The angle is measured starting at the x-axis and increases anti-clockwise. The y-axis - * corresponds to a 'north' angle of 90 degrees. - */ - north: number; - /** - * The sun's azimuth in degrees. The value increases Eastwards with North as zero. - * Setting this value will also set the sun to manual control mode. - * Note: This value is not affected by the direction of north. - */ - azimuth: number; - /** - * The sun's altitude above the horizon in degrees in the range -90 to +90. - * Setting this value will also set the sun to manual control mode. - */ - altitude: number; - /** - * The observer's latitude. - */ - latitude: number; - /** - * The observer's longitude. - */ - longitude: number; - /** - * The observer's time zone measured in hours relative to UTC. - */ - timeZone: number; - /** - * Daylight saving time 'on' state - */ - daylightSavingOn: boolean; - /** - * Daylight saving time in minutes - */ - daylightSavingMinutes: number; - /** - */ - year: any; - /** - */ - month: any; - /** - */ - day: any; - /** - */ - hours: any; - /** - * Sun intensity. - */ - intensity: number; - /** - */ - isValid: any; - /** - * Get a Light which represents the sun. If manual control is in effect, no sun calculation - * is performed; the function uses the last known values of azimuth and altitude. - * If manual control is not in effect, the observer's position, date, time, time zone and - * daylight saving values are used to calculate the position of the sun. - */ - light: Light; - /** ... */ - static sunColorFromAltitude(): void; - } - - class Surface extends GeometryBase { - /** - * Gets a values indicating whether a surface is solid. - */ - isSolid: boolean; - /** - * @description Sets the domain in a direction. - * @param {number} direction 0 sets first parameter's domain, 1 sets second parameter's domain. - * @param {number[]} domain A new domain to be assigned. - * @returns {boolean} true if setting succeeded, otherwise false. - */ - setDomain(direction:number,domain:number[]): boolean; - /** - * @description Returns the maximum algebraic degree of any span - (or a good estimate if curve spans are not algebraic). - * @param {number} direction 0 gets first parameter's domain, 1 gets second parameter's domain. - * @returns {number} The maximum degree. - */ - degree(direction:number): number; - /** - * @description Gets number of smooth nonempty spans in the parameter direction. - * @param {number} direction 0 gets first parameter's domain, 1 gets second parameter's domain. - * @returns {number} The span count. - */ - spanCount(direction:number): number; - /** - * @description Evaluates a point at a given parameter. - * @param {number} u evaluation parameters. - * @param {number} v evaluation parameters. - * @returns {number[]} Point3d.Unset on failure. - */ - pointAt(u:number,v:number): number[]; - /** - * @description Gets the domain in a direction. - * @param {number} direction 0 gets first parameter, 1 gets second parameter. - * @returns {number[]} An interval value. - */ - domain(direction:number): number[]; - /** - * @description Gets array of span "knots". - * @param {number} direction 0 gets first parameter's domain, 1 gets second parameter's domain. - * @returns {number[]} An array with span vectors; or null on error. - */ - getSpanVector(direction:number): number[]; - /** - * @description Computes the surface normal at a point. - This is the simple evaluation call - it does not support error handling. - * @param {number} u A U parameter. - * @param {number} v A V parameter. - * @returns {number[]} The normal. - */ - normalAt(u:number,v:number): number[]; - /** - * @description Computes the orient plane on a surface given a U and V parameter. - This is the simple evaluation call with no error handling. - * @param {number} u A first parameter. - * @param {number} v A second parameter. - * @returns {Array} [boolean, Plane] - * (boolean) true if this operation succeeded; otherwise false. - * (Plane) A frame plane that will be computed during this call. - */ - frameAt(u:number,v:number): object; - /** - * @description Gets a value indicating if the surface is closed in a direction. - * @param {number} direction 0 = U, 1 = V. - * @returns {boolean} The indicating boolean value. - */ - isClosed(direction:number): boolean; - /** - * @description Gets a value indicating if the surface is periodic in a direction (default is false). - * @param {number} direction 0 = U, 1 = V. - * @returns {boolean} The indicating boolean value. - */ - isPeriodic(direction:number): boolean; - /** - * @description true if surface side is collapsed to a point. - * @param {number} side side of parameter space to test - 0 = south, 1 = east, 2 = north, 3 = west. - * @returns {boolean} True if this specific side of the surface is singular; otherwise, false. - */ - isSingular(side:number): boolean; - /** - * @description Tests if a surface parameter value is at a singularity. - * @param {number} u Surface u parameter to test. - * @param {number} v Surface v parameter to test. - * @param {boolean} exact If true, test if (u,v) is exactly at a singularity. - If false, test if close enough to cause numerical problems. - * @returns {boolean} true if surface is singular at (s,t) - */ - isAtSingularity(u:number,v:number,exact:boolean): boolean; - /** - * @description Tests if a surface parameter value is at a seam. - * @param {number} u Surface u parameter to test. - * @param {number} v Surface v parameter to test. - * @returns {number} 0 if not a seam, - 1 if u == Domain(0)[i] and srf(u, v) == srf(Domain(0)[1-i], v) - 2 if v == Domain(1)[i] and srf(u, v) == srf(u, Domain(1)[1-i]) - 3 if 1 and 2 are true. - */ - isAtSeam(u:number,v:number): number; - /** - * @description Gets isoparametric curve. - * @param {number} direction 0 first parameter varies and second parameter is constant - e.g., point on IsoCurve(0,c) at t is srf(t,c) - This is a horizontal line from left to right - 1 first parameter is constant and second parameter varies - e.g., point on IsoCurve(1,c) at t is srf(c,t - This is a vertical line from bottom to top. - * @param {number} constantParameter The parameter that was constant on the original surface. - * @returns {Curve} An isoparametric curve or null on error. - */ - isoCurve(direction:number,constantParameter:number): Curve; - /** - * @description Gets a NURBS surface representation of this surface. Default - tolerance of 0.0 is used. - * @returns {NurbsSurface} NurbsSurface on success, null on failure. - */ - toNurbsSurface(): NurbsSurface; - /** ... */ - toNurbsSurfaceTolerance(): void; - /** - * @description Tests a surface to see if it is planar to zero tolerance. - * @returns {boolean} true if the surface is planar (flat) to within RhinoMath.ZeroTolerance units (1e-12). - */ - isPlanar(): boolean; - /** - * @description Determines if the surface is a portion of a sphere within RhinoMath.ZeroTolerance. - * @returns {boolean} true if the surface is a portion of a sphere. - */ - isSphere(): boolean; - /** - * @description Determines if the surface is a portion of a cylinder within RhinoMath.ZeroTolerance. - * @returns {boolean} true if the surface is a portion of a cylinder. - */ - isCylinder(): boolean; - /** - * @description Determines if the surface is a portion of a cone within RhinoMath.ZeroTolerance. - * @returns {boolean} true if the surface is a portion of a cone. - */ - isCone(): boolean; - /** - * @description Determines if the surface is a portion of a torus within RhinoMath.ZeroTolerance. - * @returns {boolean} true if the surface is a portion of a torus. - */ - isTorus(): boolean; - /** - * @description Translates a parameter from a value on the surface returned by to the current surface. - * @param {number} nurbsS The parameter in the S, or sometimes U, direction of the NURBS form surface. - * @param {number} nurbsT The parameter in the T, or sometimes V, direction of the NURBS form surface. - * @returns {Array} [boolean, number, number] - * (boolean) True if the operation succeeded; otherwise, false. - * (number) S on this surface. - * (number) T o n this surface. - */ - getSurfaceParameterFromNurbsFormParameter(nurbsS:number,nurbsT:number): object; - /** - * @description Translates a parameter from the current surface to the parameter space of the surface returned by . - * @param {number} surfaceS The parameter in the S, or sometimes U, direction, of this surface. - * @param {number} surfaceT The parameter in the T, or sometimes V, direction of this surface. - * @returns {Array} [boolean, number, number] - * (boolean) True if the operation succeeded; otherwise, false. - * (number) S on the NURBS form. - * (number) T on the NURBS form. - */ - getNurbsFormParameterFromSurfaceParameter(surfaceS:number,surfaceT:number): object; - } - - class SurfaceProxy extends Surface { - } - - class TextDot extends GeometryBase { - /** - * Gets or sets the position of the text dot. - */ - point: number[]; - /** - * Gets or sets the primary text of the text dot. - */ - text: string; - /** - * Gets or sets the secondary text of the text dot. - */ - secondaryText: string; - /** - * Height of font used for displaying the dot - */ - fontHeight: number; - /** - * Font face used for displaying the dot - */ - fontFace: string; - } - - class Texture { - /** - * Gets or sets a file name that is used by this texture. - * NOTE: We are moving away from string-based FileName, and suggest - * the usage of the new FileReference class.Also, this filename may well not be a path that makes sense - * on a user's computer because it was a path initially set on - * a different user's computer. If you want to get a workable path - * for this user, use the BitmapTable.Find function using this - * property. - */ - fileName: string; - /** - * Texture wrapping mode in the U direction - */ - wrapU: TextureUvwWrapping; - /** - * Texture wrapping mode in the V direction - */ - wrapV: TextureUvwWrapping; - /** - * Texture wrapping mode in the W direction - */ - wrapW: TextureUvwWrapping; - /** - * Transform to be applied to each instance of this texture - * if ApplyUvw is true - */ - uvwTransform: Transform; - /** - * Gets the globally unique identifier of this texture. - */ - id: string; - /** - * If the texture is enabled then it will be visible in the rendered - * display otherwise it will not. - */ - enabled: boolean; - /** - * Controls how the pixels in the bitmap are interpreted - */ - textureType: TextureType; - /** - * Helper for access to the repeat value encoded in UvwTransform - */ - repeat: Vector2d; - /** - * Helper for access to the offset value encoded in UvwTransform - */ - offset: Vector2d; - /** - * Helper for access to the rotation value encoded in UvwTransform - */ - rotation: number; - /** ... */ - fileReference(): void; - } - - class TextureMapping extends CommonObject { - /** - */ - requiresVertexNormals: any; - /** - */ - isPeriodic: any; - /** - * @description Create a mapping that will convert surface parameters into normalized(0,1)x(0,1) texture coordinates. - * @returns {TextureMapping} TextureMapping instance or null if failed. - */ - static createSurfaceParameterMapping(): TextureMapping; - /** - * @description Create a planar UV projection texture mapping - * @param {Plane} plane A plane to use for mapping. - * @param {number[]} dx portion of the plane's x axis that is mapped to [0,1] (can be a decreasing interval) - * @param {number[]} dy portion of the plane's y axis that is mapped to [0,1] (can be a decreasing interval) - * @param {number[]} dz portion of the plane's z axis that is mapped to [0,1] (can be a decreasing interval) - * @returns {TextureMapping} TextureMapping instance if input is valid - */ - static createPlaneMapping(plane:Plane,dx:number[],dy:number[],dz:number[]): TextureMapping; - /** - * @description Create a cylindrical projection texture mapping. - * @param {Cylinder} cylinder cylinder in world space used to define a cylindrical coordinate system. - The angular parameter maps (0,2pi) to texture "u" (0,1), The height - parameter maps (height[0],height[1]) to texture "v" (0,1), and the - radial parameter maps (0,r) to texture "w" (0,1). - * @param {boolean} capped If true, the cylinder is treated as a finite capped cylinder - * @returns {TextureMapping} TextureMapping instance if input is valid - */ - static createCylinderMapping(cylinder:Cylinder,capped:boolean): TextureMapping; - /** - * @description Create a spherical projection texture mapping. - * @param {Sphere} sphere sphere in world space used to define a spherical coordinate system. - The longitude parameter maps (0,2pi) to texture "u" (0,1). - The latitude parameter maps (-pi/2,+pi/2) to texture "v" (0,1). - The radial parameter maps (0,r) to texture "w" (0,1). - * @returns {TextureMapping} TextureMapping instance if input is valid - */ - static createSphereMapping(sphere:Sphere): TextureMapping; - /** - * @description Create a box projection texture mapping. - * @param {Plane} plane The sides of the box the box are parallel to the plane's coordinate - planes. The dx, dy, dz intervals determine the location of the sides. - * @param {number[]} dx Determines the location of the front and back planes. The vector - plane.xaxis is perpendicular to these planes and they pass through - plane.PointAt(dx[0],0,0) and plane.PointAt(dx[1],0,0), respectively. - * @param {number[]} dy Determines the location of the left and right planes. The vector - plane.yaxis is perpendicular to these planes and they pass through - plane.PointAt(0,dy[0],0) and plane.PointAt(0,dy[1],0), respectively. - * @param {number[]} dz Determines the location of the top and bottom planes. The vector - plane.zaxis is perpendicular to these planes and they pass through - plane.PointAt(0,0,dz[0]) and plane.PointAt(0,0,dz[1]), respectively. - * @param {boolean} capped If true, the box is treated as a finite capped box. - * @returns {TextureMapping} TextureMapping instance if input is valid - */ - static CreateBoxMapping(plane:Plane,dx:number[],dy:number[],dz:number[],capped:boolean): TextureMapping; - /** - * @description Get a cylindrical projection parameters from this texture mapping. - * @returns {boolean} Returns true if a valid cylinder is returned. - */ - tryGetMappingCylinder(): object; - /** - * @description Get a spherical projection parameters from this texture mapping. - * @returns {boolean} Returns true if a valid sphere is returned. - */ - tryGetMappingSphere(): object; - /** ... */ - reverseTextureCoordinate(): void; - /** ... */ - swapTextureCoordinate(): void; - /** ... */ - tileTextureCoordinate(): void; - /** - * @description Evaluate the mapping to get a texture coordinate - * @param {number[]} p Vertex location - * @param {number[]} n If the mapping projection is ray_projection, then this - is the vertex unit normal. Otherwise n is ignored. - * @returns {Array} [number, number[]] - * (number) Nonzero if evaluation is successful. When the mapping is a box or - capped cylinder mapping, the value indicates which side was evaluated. - Cylinder mapping: 1 = cylinder wall, 2 = bottom cap, 3 = top cap - Box mapping: 1 = front, 2 = right, 3 = back, 4 = left, 5 = bottom, 6 = top - * (number[]) Texture coordinate (u,v,w) - */ - evaluate(p:number[],n:number[]): object; - } - - class Thickening { - /** - */ - on: any; - /** - */ - distance: any; - /** - */ - solid: any; - /** - */ - offsetOnly: any; - /** - */ - bothSides: any; - } - - class Transform { - /** - * Tests for an affine transformation. - * A transformation is affine if it is valid and its last row is [0, 0, 0, 1]. - * An affine transformation can be broken into a linear transformation and a translation. - */ - isAffine: boolean; - /** - * Return true if this Transform is the identity transform - */ - isIdentity: boolean; - /** - * Tests for a linear transformation. - * A transformation is affine if it is valid and its last row is [0, 0, 0, 1]. - * If in addition its last column is ( 0, 0, 0, 1)^T then it is linear. - * An affine transformation can be broken into a linear transformation and a translation. - */ - isLinear: boolean; - /** - * Returns true if this is a proper rotation. - */ - isRotation: boolean; - /** - * Gets a value indicating whether or not this Transform is a valid matrix. - * A valid transform matrix is not allowed to have any invalid numbers. - */ - isValid: boolean; - /** - * True if matrix is Zero4x4, ZeroTransformation, or some other type of - * zero. The value xform[3][3] can be anything. - */ - isZero: boolean; - /** - * True if all values are 0 - */ - isZero4x4: boolean; - /** - * True if all values are 0, except for M33 which is 1. - */ - isZeroTransformation: boolean; - /** - * Gets a value indicating whether or not the Transform is rigid. - * A rigid transformation can be broken into a proper rotation and a translation, - * while an isometry transformation could also include a reflection. - */ - rigidType: TransformRigidType; - /** - * Gets a value indicating whether or not the Transform maintains similarity. - * The easiest way to think of Similarity is that any circle, when transformed, - * remains a circle. Whereas a non-similarity Transform deforms circles into ellipses. - */ - similarityType: TransformSimilarityType; - /** - * Gets or sets this[0,0]. - */ - m00: number; - /** - * Gets or sets this[0,1]. - */ - m01: number; - /** - * Gets or sets this[0,2]. - */ - m02: number; - /** - * Gets or sets this[0,3]. - */ - m03: number; - /** - * Gets or sets this[1,0]. - */ - m10: number; - /** - * Gets or sets this[1,1]. - */ - m11: number; - /** - * Gets or sets this[1,2]. - */ - m12: number; - /** - * Gets or sets this[1,3]. - */ - m13: number; - /** - * Gets or sets this[2,0]. - */ - m20: number; - /** - * Gets or sets this[2,1]. - */ - m21: number; - /** - * Gets or sets this[2,2]. - */ - m22: number; - /** - * Gets or sets this[2,3]. - */ - m23: number; - /** - * Gets or sets this[3,0]. - */ - m30: number; - /** - * Gets or sets this[3,1]. - */ - m31: number; - /** - * Gets or sets this[3,2]. - */ - m32: number; - /** - * Gets or sets this[3,3]. - */ - m33: number; - - constructor(diagonalValue: number); - /** ... */ - static identity(): void; - /** ... */ - static zeroTransformation(): void; - /** ... */ - static unset(): void; - /** ... */ - static translationXYZ(): void; - /** ... */ - static translationVector(): void; - /** - * @description Constructs a new uniform scaling transformation with a specified scaling anchor point. - * @param {number[]} anchor Defines the anchor point of the scaling operation. - * @param {number} scaleFactor Scaling factor in all directions. - * @returns {Transform} A transform matrix which scales geometry uniformly around the anchor point. - */ - static scale(anchor:number[],scaleFactor:number): Transform; - /** - * @description Constructs a new rotation transformation with specified angle, rotation center and rotation axis. - * @param {number} sinAngle Sine of the rotation angle. - * @param {number} cosAngle Cosine of the rotation angle. - * @param {number[]} rotationAxis 3D unit axis of rotation. - * @param {number[]} rotationCenter 3D center of rotation. - * @returns {Transform} A rotation transformation matrix. - */ - static rotation(sinAngle:number,cosAngle:number,rotationAxis:number[],rotationCenter:number[]): Transform; - /** ... */ - static rotationVectors(): void; - /** - * @description Create mirror transformation matrix - The mirror transform maps a point Q to - Q - (2*(Q-P)oN)*N, where - P = pointOnMirrorPlane and N = normalToMirrorPlane. - * @param {number[]} pointOnMirrorPlane Point on the mirror plane. - * @param {number[]} normalToMirrorPlane Normal vector to the mirror plane. - * @returns {Transform} A transformation matrix which mirrors geometry in a specified plane. - */ - static mirror(pointOnMirrorPlane:number[],normalToMirrorPlane:number[]): Transform; - /** ... */ - static mirrorPlane(): void; - /** - * @description Create a rotation transformation that orients plane0 to plane1. If you want to orient objects from - one plane to another, use this form of transformation. - * @param {Plane} plane0 The plane to orient from. - * @param {Plane} plane1 the plane to orient to. - * @returns {Transform} The translation transformation if successful, Transform.Unset on failure. - */ - static planeToPlane(plane0:Plane,plane1:Plane): Transform; - /** - * @description Constructs a Shear transformation. - * @param {Plane} plane Base plane for shear. - * @param {number[]} x Shearing vector along plane x-axis. - * @param {number[]} y Shearing vector along plane y-axis. - * @param {number[]} z Shearing vector along plane z-axis. - * @returns {Transform} A transformation matrix which shear geometry. - */ - static shear(plane:Plane,x:number[],y:number[],z:number[]): Transform; - /** - * @description Multiplies (combines) two transformations. - This is the same as the * operator between two transformations. - * @param {Transform} a First transformation. - * @param {Transform} b Second transformation. - * @returns {Transform} A transformation matrix that combines the effect of both input transformations. - The resulting Transform gives the same result as though you'd first apply B then A. - */ - static multiply(a:Transform,b:Transform): Transform; - /** ... */ - determinant(): void; - /** - * @description Attempts to get the inverse transform of this transform. - * @returns {Array} [boolean, Transform] - * (boolean) true on success. - If false is returned and this Transform is Invalid, inserveTransform will be set to this Transform. - If false is returned and this Transform is Valid, inverseTransform will be set to a pseudo inverse. - * (Transform) The inverse transform. This out reference will be assigned during this call. - */ - tryGetInverse(): object; - /** - * @description Computes a new bounding box that is the smallest axis aligned - bounding box that contains the transformed result of its 8 original corner - points. - * @returns {BoundingBox} A new bounding box. - */ - transformBoundingBox(): BoundingBox; - /** - * @description Flip row/column values - * @returns {Transform} - */ - transpose(): Transform; - /** - * @description Return the matrix as a linear array of 16 float values. - * @param {boolean} rowDominant If true, returns { M00, M01, M02...}. - If false, returns { M00, M10, M20...}. - * @returns {number[]} An array of 16 floats. - */ - toFloatArray(rowDominant:boolean): number[]; - } - - class ViewInfo { - /** - * Gets or sets the name of the view. - */ - name: string; - /** - */ - wallpaperName: any; - /** - * True if wallpaper (if any) is to be shown in gray scale in this view. - */ - showWallpaperInGrayScale: boolean; - /** - * True if wallpaper (if any) is to be hidden from this view. - */ - wallpaperHidden: boolean; - /** - * Gets or sets the Focal blur distance of the active viewport - */ - focalBlurDistance: number; - /** - * Gets or sets the Focal blur aperture of the active viewport - */ - focalBlurAperture: number; - /** - * Gets or sets the Focal blur jitter of the active viewport - */ - focalBlurJitter: number; - /** - * Gets or sets the Focal blur sample count of the active viewport - */ - focalBlurSampleCount: number; - /** ... */ - getViewport(): void; - /** ... */ - setViewport(): void; - } - - class ViewportInfo extends CommonObject { - /** - */ - isValidCameraFrame: any; - /** - * Gets a value that indicates whether the camera is valid. - */ - isValidCamera: boolean; - /** - * Gets a value that indicates whether the frustum is valid. - */ - isValidFrustum: boolean; - /** - * Get or set whether this projection is parallel. - */ - isParallelProjection: boolean; - /** - * Get or set whether this projection is perspective. - */ - isPerspectiveProjection: boolean; - /** - * Gets a value that indicates whether this projection is a two-point perspective. - */ - isTwoPointPerspectiveProjection: boolean; - /** - * Gets the camera location (position) point. - */ - cameraLocation: number[]; - /** - * Gets the direction that the camera faces. - */ - cameraDirection: number[]; - /** - * Gets the camera up vector. - */ - cameraUp: number[]; - /** - * Gets the unit "to the right" vector. - */ - cameraX: number[]; - /** - * Gets the unit "up" vector. - */ - cameraY: number[]; - /** - * Gets the unit vector in -CameraDirection. - */ - cameraZ: number[]; - /** - * Get or set the screen port. and - */ - screenPort: number[]; - /** - * Gets the screen aspect ratio. - * This is width / height. - */ - screenPortAspect: number; - /** - * Gets or sets the 1/2 smallest angle. See for more information. - */ - cameraAngle: number; - /** - * This property assumes the camera is horizontal and crop the - * film rather than the image when the aspect of the frustum - * is not 36/24. (35mm film is 36mm wide and 24mm high.) - * Setting preserves camera location, - * changes the frustum, but maintains the frustum's aspect. - */ - camera35mmLensLength: number; - /** - * The current value of the target point. This point does not play - * a role in the view projection calculations. It can be used as a - * fixed point when changing the camera so the visible regions of the - * before and after frustums both contain the region of interest. - * The default constructor sets this point on ON_3dPoint::UnsetPoint. - * You must explicitly call one SetTargetPoint() functions to set - * the target point. - */ - targetPoint: number[]; - /** - * Sets the viewport's id to the value used to - * uniquely identify this viewport. - * There is no approved way to change the viewport - * id once it is set in order to maintain consistency - * across multiple viewports and those routines that - * manage them. - */ - id: string; - /** ... */ - static defaultTop(): void; - /** ... */ - static defaultPerspective(): void; - /** - * @description Use this function to change projections of valid viewports - from parallel to perspective. It will make common additional - adjustments to the frustum and camera location so the resulting - views are similar. The camera direction and target point are - not be changed. - If the current projection is parallel and symmetricFrustum, - FrustumIsLeftRightSymmetric() and FrustumIsTopBottomSymmetric() - are all equal, then no changes are made and true is returned. - * @param {boolean} symmetricFrustum true if you want the resulting frustum to be symmetric. - * @returns {boolean} true if the operation succeeded; otherwise, false. - */ - changeToParallelProjection(symmetricFrustum:boolean): boolean; - /** - * @description Use this function to change projections of valid viewports - from parallel to perspective. It will make common additional - adjustments to the frustum and camera location so the resulting - views are similar. The camera direction and target point are - not changed. - If the current projection is perspective and symmetricFrustum, - IsFrustumIsLeftRightSymmetric, and IsFrustumIsTopBottomSymmetric - are all equal, then no changes are made and true is returned. - * @param {number} targetDistance If RhinoMath.UnsetValue this parameter is ignored. - Otherwise it must be > 0 and indicates which plane in the current view frustum should be preserved. - * @param {boolean} symmetricFrustum true if you want the resulting frustum to be symmetric. - * @param {number} lensLength (pass 50.0 when in doubt) - 35 mm lens length to use when changing from parallel - to perspective projections. If the current projection - is perspective or lens_length is <= 0.0, - then this parameter is ignored. - * @returns {boolean} true if the operation succeeded; otherwise, false. - */ - changeToPerspectiveProjection(targetDistance:number,symmetricFrustum:boolean,lensLength:number): boolean; - /** - * @description Changes projections of valid viewports - to a two point perspective. It will make common additional - adjustments to the frustum and camera location and direction - so the resulting views are similar. - If the current projection is perspective and - IsFrustumIsLeftRightSymmetric is true and - IsFrustumIsTopBottomSymmetric is false, then no changes are - made and true is returned. - * @param {number} targetDistance If RhinoMath.UnsetValue this parameter is ignored. Otherwise - it must be > 0 and indicates which plane in the current - view frustum should be preserved. - * @param {number[]} up The locked up direction. Pass Vector3d.Zero if you want to use the world - axis direction that is closest to the current up direction. - Pass CameraY() if you want to preserve the current up direction. - * @param {number} lensLength (pass 50.0 when in doubt) - 35 mm lens length to use when changing from parallel - to perspective projections. If the current projection - is perspective or lens_length is <= 0.0, - then this parameter is ignored. - * @returns {boolean} true if the operation succeeded; otherwise, false. - */ - changeToTwoPointPerspectiveProjection(targetDistance:number,up:number[],lensLength:number): boolean; - /** - * @description Sets the camera location (position) point. - * @returns {boolean} true if the operation succeeded; otherwise, false. - */ - setCameraLocation(): boolean; - /** - * @description Sets the direction that the camera faces. - * @param {number[]} direction A new direction. - * @returns {boolean} true if the direction was set; otherwise false. - */ - setCameraDirection(direction:number[]): boolean; - /** - * @description Sets the camera up vector. - * @param {number[]} up A new direction. - * @returns {boolean} true if the direction was set; otherwise false. - */ - setCameraUp(up:number[]): boolean; - /** - * @description Sets the view frustum. If FrustumSymmetryIsLocked() is true - and left != -right or bottom != -top, then they will be - adjusted so the resulting frustum is symmetric. - * @param {number} left A new left value. - * @param {number} right A new right value. - * @param {number} bottom A new bottom value. - * @param {number} top A new top value. - * @param {number} nearDistance A new near distance value. - * @param {number} farDistance A new far distance value. - * @returns {boolean} true if operation succeeded; otherwise, false. - */ - setFrustum(left:number,right:number,bottom:number,top:number,nearDistance:number,farDistance:number): boolean; - /** - * @description Gets the view frustum. - * @returns {Array} [boolean, number, number, number, number, number, number] - * (boolean) true if operation succeeded; otherwise, false. - * (number) A left value that will be filled during the call. - * (number) A right value that will be filled during the call. - * (number) A bottom value that will be filled during the call. - * (number) A top value that will be filled during the call. - * (number) A near distance value that will be filled during the call. - * (number) A far distance value that will be filled during the call. - */ - getFrustum(): object; - /** - * @description Computes a transform from a coordinate system to another. - * @param {CoordinateSystem} sourceSystem The coordinate system to map from. - * @param {CoordinateSystem} destinationSystem The coordinate system to map into. - * @returns {Transform} The 4x4 transformation matrix (acts on the left). - */ - getXform(sourceSystem:CoordinateSystem,destinationSystem:CoordinateSystem): Transform; - /** - * @description Extends this viewport view to include a bounding box. - Use Extents() as a quick way to set a viewport to so that bounding - volume is inside of a viewports frustum. - The view angle is used to determine the position of the camera. - * @param {number} halfViewAngleRadians 1/2 smallest subtended view angle in radians. - * @param {BoundingBox} bbox A bounding box in 3d world coordinates. - * @returns {boolean} true if the operation succeeded; otherwise, false. - */ - extents(halfViewAngleRadians:number,bbox:BoundingBox): boolean; - /** - * @description Dolly the camera location and so that the view frustum contains - all of the document objects that can be seen in view. - If the projection is perspective, the camera angle is not changed. - * @param {number} border If border > 1.0, then the frustum in enlarged by this factor - to provide a border around the view. 1.1 works well for - parallel projections; 0.0 is suggested for perspective projections. - * @returns {boolean} True if successful. - */ - dollyExtents(border:number): boolean; - /** - * @description Return a point on the central axis of the view frustum. - This point is a good choice for a general purpose target point. - * @param {number} targetDistance If targetDistance > 0.0, then the distance from the returned - point to the camera plane will be targetDistance. Note that - if the frustum is not symmetric, the distance from the - returned point to the camera location will be larger than - targetDistance. - If targetDistance == ON_UNSET_VALUE and the frustum - is valid with near > 0.0, then 0.5*(near + far) will be used - as the targetDistance. - * @returns {number[]} A point on the frustum's central axis. If the viewport or input - is not valid, then ON_3dPoint::UnsetPoint is returned. - */ - frustumCenterPoint(targetDistance:number): number[]; - /** - * @description Gets the distance from the target point to the camera plane. - Note that if the frustum is not symmetric, then this distance - is shorter than the distance from the target to the camera location. - * @param {boolean} useFrustumCenterFallback If bUseFrustumCenterFallback is false and the target point is - not valid, then ON_UNSET_VALUE is returned. - If bUseFrustumCenterFallback is true and the frustum is valid - and current target point is not valid or is behind the camera, - then 0.5*(near + far) is returned. - * @returns {number} Shortest signed distance from camera plane to target point. - If the target point is on the visible side of the camera, - a positive value is returned. ON_UNSET_VALUE is returned - when the input of view is not valid. - */ - targetDistance(useFrustumCenterFallback:boolean): number; - } -} diff --git a/public/assets/lib/vendor/three/rhino3dm/rhino3dm.js b/public/assets/lib/vendor/three/rhino3dm/rhino3dm.js deleted file mode 100644 index 8b417057..00000000 --- a/public/assets/lib/vendor/three/rhino3dm/rhino3dm.js +++ /dev/null @@ -1,21 +0,0 @@ - -var rhino3dm = (() => { - var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; - return ( -function(config) { - var rhino3dm = config || {}; - -var Module=typeof rhino3dm!="undefined"?rhino3dm:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var POINTER_SIZE=4;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="rhino3dm.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["oa"];updateMemoryViews();wasmTable=Module["asm"]["qa"];addOnInit(Module["asm"]["pa"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return()=>{crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return()=>crypto_module["randomBytes"](1)[0]}catch(e){}}return()=>abort("randomDevice")}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SOCKFS={mount:function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,"/",16384|511,0)},createSocket:function(family,type,protocol){type&=~526336;var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket:function(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll:function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl:function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read:function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write:function(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close:function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname:function(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer:function(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}var opts=undefined;if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer:function(sock,addr,port){return sock.peers[addr+":"+port]},addPeer:function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer:function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents:function(sock,peer){var first=true;var handleOpen=function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll:function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl:function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return 28}},close:function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>2]=value;return value}function inetNtop4(addr){return(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)}function inetNtop6(ints){var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}}function inetPton4(str){var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0}function jstoi_q(str){return parseInt(str)}function inetPton6(str){var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_connect(fd,addr,addrlen){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function ___syscall_ftruncate64(fd,length_low,length_high){try{var length=convertI32PairToI53Checked(length_low,length_high);if(isNaN(length))return-61;FS.ftruncate(fd,length);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}var tupleRegistrations={};function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function __embind_finalize_value_array(rawTupleType){var reg=tupleRegistrations[rawTupleType];delete tupleRegistrations[rawTupleType];var elements=reg.elements;var elementsLength=elements.length;var elementTypes=elements.map(function(elt){return elt.getterReturnType}).concat(elements.map(function(elt){return elt.setterArgumentType}));var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;whenDependentTypesAreResolved([rawTupleType],elementTypes,function(elementTypes){elements.forEach((elt,i)=>{var getterReturnType=elementTypes[i];var getter=elt.getter;var getterContext=elt.getterContext;var setterArgumentType=elementTypes[i+elementsLength];var setter=elt.setter;var setterContext=elt.setterContext;elt.read=ptr=>{return getterReturnType["fromWireType"](getter(getterContext,ptr))};elt.write=(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,o));runDestructors(destructors)}});return[{name:reg.name,"fromWireType":function(ptr){var rv=new Array(elementsLength);for(var i=0;ifield.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName;var getterReturnType=fieldTypes[i];var getter=field.getter;var getterContext=field.getterContext;var setterArgumentType=fieldTypes[i+fieldRecords.length];var setter=field.setter;var setterContext=field.setterContext;fields[fieldName]={read:ptr=>{return getterReturnType["fromWireType"](getter(getterContext,ptr))},write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,o));runDestructors(destructors)}}});return[{name:reg.name,"fromWireType":function(ptr){var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},"toWireType":function(destructors,o){for(var fieldName in fields){if(!(fieldName in o)){throw new TypeError('Missing field: "'+fieldName+'"')}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:rawDestructor}]})}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}var name=registeredInstance.name;if(!rawType){throwBindingError('type "'+name+'" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError("Cannot register type '"+name+"' twice")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":8,"readValueFromPointer":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}var finalizationRegistry=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}var delayFunction=undefined;function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function attachFinalizer(handle){if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle["delete"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError("Cannot construct "+name+" due to unbound types",[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError("Tried to invoke ctor of "+name+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(registeredClass.constructor_body).toString()+") parameters instead!")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2])}return array}function __embind_register_class_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,fn){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}var proto=classType.registeredClass.constructor;if(undefined===proto[methodName]){unboundTypesHandler.argCount=argCount-1;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-1]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));var func=craftInvokerFunction(humanName,invokerArgsArray,null,rawInvoker,fn);if(undefined===proto[methodName].overloadTable){func.argCount=argCount-1;proto[methodName]=func}else{proto[methodName].overloadTable[argCount-1]=func}return[]});return[]})}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!")}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})}function validateThis(this_,classType,humanName){if(!(this_ instanceof Object)){throwBindingError(humanName+' with invalid "this": '+this_)}if(!(this_ instanceof classType.registeredClass.constructor)){throwBindingError(humanName+' incompatible with "this" of type '+this_.constructor.name)}if(!this_.$$.ptr){throwBindingError("cannot call emscripten binding method "+humanName+" on deleted object")}return upcastPointer(this_.$$.ptr,this_.$$.ptrType.registeredClass,classType.registeredClass)}function __embind_register_class_property(classType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){fieldName=readLatin1String(fieldName);getter=embind__requireFunction(getterSignature,getter);whenDependentTypesAreResolved([],[classType],function(classType){classType=classType[0];var humanName=classType.name+"."+fieldName;var desc={get:function(){throwUnboundTypeError("Cannot access "+humanName+" due to unbound types",[getterReturnType,setterArgumentType])},enumerable:true,configurable:true};if(setter){desc.set=()=>{throwUnboundTypeError("Cannot access "+humanName+" due to unbound types",[getterReturnType,setterArgumentType])}}else{desc.set=v=>{throwBindingError(humanName+" is a read-only property")}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],function(types){var getterReturnType=types[0];var desc={get:function(){var ptr=validateThis(this,classType,humanName+" getter");return getterReturnType["fromWireType"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+" setter");var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function enumReadValueFromPointer(name,shift,signed){switch(shift){case 0:return function(pointer){var heap=signed?HEAP8:HEAPU8;return this["fromWireType"](heap[pointer])};case 1:return function(pointer){var heap=signed?HEAP16:HEAPU16;return this["fromWireType"](heap[pointer>>1])};case 2:return function(pointer){var heap=signed?HEAP32:HEAPU32;return this["fromWireType"](heap[pointer>>2])};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_enum(rawType,name,size,isSigned){var shift=getShiftFromSize(size);name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,"fromWireType":function(c){return this.constructor.values[c]},"toWireType":function(destructors,c){return c.value},"argPackAdvance":8,"readValueFromPointer":enumReadValueFromPointer(name,shift,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function __embind_register_enum_value(rawEnumType,name,enumValue){var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(enumType.name+"_"+name,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value}function embindRepr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_value_array(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){tupleRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),elements:[]}}function __embind_register_value_array_element(rawTupleType,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){tupleRegistrations[rawTupleType].elements.push({getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})}function __embind_register_value_object(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}}function __embind_register_value_object_field(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function __emval_as(handle,returnType,destructorsRef){handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=Emval.toHandle(destructors);HEAPU32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}function emval_allocateDestructors(destructorsRef){var destructors=[];HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors);return destructors}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol}var emval_methodCallers=[];function __emval_call_method(caller,handle,methodName,destructorsRef,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);return caller(handle,methodName,emval_allocateDestructors(destructorsRef),args)}function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function __emval_equals(first,second){first=Emval.toValue(first);second=Emval.toValue(second);return first==second}function emval_get_global(){if(typeof globalThis=="object"){return globalThis}return function(){return Function}()("return this")()}function __emval_get_global(name){if(name===0){return Emval.toHandle(emval_get_global())}else{name=getStringOrSymbol(name);return Emval.toHandle(emval_get_global()[name])}}function emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a}var emval_registeredMethods=[];function __emval_get_method_caller(argCount,argTypes){var types=emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=["retType"];var args=[retType];var argsList="";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function __emval_instanceof(object,constructor){object=Emval.toValue(object);constructor=Emval.toValue(constructor);return object instanceof constructor}function __emval_is_number(handle){handle=Emval.toValue(handle);return typeof handle=="number"}function __emval_is_string(handle){handle=Emval.toValue(handle);return typeof handle=="string"}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;iHEAPU32;var functionBody="return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n"+" var HEAPU32 = getMemory();\n";for(var i=0;i>2)], 'parameter "+i+"');\n"+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n"+"argTypes += 4;\n"}functionBody+="var obj = new constructor("+argsList+");\n"+"return valueToHandle(obj);\n"+"}\n";return new Function("requireRegisteredType","Module","valueToHandle","getMemory",functionBody)(requireRegisteredType,Module,Emval.toHandle,getMemory)}var emval_newers={};function __emval_new(handle,argCount,argTypes,args){handle=Emval.toValue(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer}return newer(handle,argTypes,args)}function __emval_new_array(){return Emval.toHandle([])}function __emval_new_cstring(v){return Emval.toHandle(getStringOrSymbol(v))}function __emval_new_object(){return Emval.toHandle({})}function __emval_run_destructors(handle){var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}function __emval_set_property(handle,key,value){handle=Emval.toValue(handle);key=Emval.toValue(key);value=Emval.toValue(value);handle[key]=value}function __emval_take_value(type,arg){type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)}function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296}function __gmtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}var __MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var __MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];function __yday_from_date(date){var isLeapYear=__isLeapYear(date.getFullYear());var monthDaysCumulative=isLeapYear?__MONTH_DAYS_LEAP_CUMULATIVE:__MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday}function __localtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=__yday_from_date(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=__yday_from_date(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getYear();return date.getTime()/1e3|0}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function __tzset_js(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAPU32[tzname+4>>2]=summerNamePtr}else{HEAPU32[tzname>>2]=summerNamePtr;HEAPU32[tzname+4>>2]=winterNamePtr}}function _abort(){abort("")}function _emscripten_date_now(){return Date.now()}function getHeapMax(){return 2147483648}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else _emscripten_get_now=()=>performance.now();function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();InternalError=Module["InternalError"]=extendError(Error,"InternalError");embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var asmLibraryArg={"v":___cxa_throw,"U":___syscall_connect,"ea":___syscall_faccessat,"o":___syscall_fcntl64,"Z":___syscall_fstat64,"S":___syscall_ftruncate64,"K":___syscall_ioctl,"W":___syscall_lstat64,"X":___syscall_newfstatat,"G":___syscall_openat,"F":___syscall_socket,"Y":___syscall_stat64,"r":__embind_finalize_value_array,"ka":__embind_finalize_value_object,"T":__embind_register_bigint,"ga":__embind_register_bool,"e":__embind_register_class,"f":__embind_register_class_class_function,"g":__embind_register_class_constructor,"b":__embind_register_class_function,"a":__embind_register_class_property,"fa":__embind_register_emval,"i":__embind_register_enum,"d":__embind_register_enum_value,"M":__embind_register_float,"p":__embind_register_integer,"l":__embind_register_memory_view,"L":__embind_register_std_string,"B":__embind_register_std_wstring,"q":__embind_register_value_array,"ia":__embind_register_value_array_element,"ja":__embind_register_value_object,"N":__embind_register_value_object_field,"ha":__embind_register_void,"t":__emval_as,"la":__emval_call_method,"P":__emval_call_void_method,"c":__emval_decref,"Q":__emval_equals,"y":__emval_get_global,"C":__emval_get_method_caller,"E":__emval_get_module_property,"w":__emval_get_property,"m":__emval_incref,"D":__emval_instanceof,"na":__emval_is_number,"ma":__emval_is_string,"O":__emval_new,"n":__emval_new_array,"u":__emval_new_cstring,"k":__emval_new_object,"s":__emval_run_destructors,"j":__emval_set_property,"h":__emval_take_value,"aa":__gmtime_js,"ba":__localtime_js,"ca":__mktime_js,"da":__tzset_js,"z":_abort,"I":_emscripten_date_now,"H":_emscripten_get_now,"V":_emscripten_resize_heap,"_":_environ_get,"$":_environ_sizes_get,"x":_fd_close,"J":_fd_read,"R":_fd_seek,"A":_fd_write};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["pa"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ra"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["sa"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ta"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["ua"]).apply(null,arguments)};var __embind_initialize_bindings=Module["__embind_initialize_bindings"]=function(){return(__embind_initialize_bindings=Module["__embind_initialize_bindings"]=Module["asm"]["va"]).apply(null,arguments)};var _htons=Module["_htons"]=function(){return(_htons=Module["_htons"]=Module["asm"]["wa"]).apply(null,arguments)};var _ntohs=Module["_ntohs"]=function(){return(_ntohs=Module["_ntohs"]=Module["asm"]["xa"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["ya"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["za"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["Aa"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Ba"]).apply(null,arguments)};var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); - - - return rhino3dm.ready -} -); -})(); -if (typeof exports === 'object' && typeof module === 'object') - module.exports = rhino3dm; -else if (typeof define === 'function' && define['amd']) - define([], function() { return rhino3dm; }); -else if (typeof exports === 'object') - exports["rhino3dm"] = rhino3dm; diff --git a/public/assets/lib/vendor/three/rhino3dm/rhino3dm.min.js b/public/assets/lib/vendor/three/rhino3dm/rhino3dm.min.js deleted file mode 100644 index b4fa67e1..00000000 --- a/public/assets/lib/vendor/three/rhino3dm/rhino3dm.min.js +++ /dev/null @@ -1 +0,0 @@ -var rhino3dm=(()=>{var e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return"undefined"!=typeof __filename&&(e=e||__filename),function(r){var t,n,o=r||{},a=void 0!==o?o:{};a.ready=new Promise(function(e,r){t=e,n=r});var i,s,u,c=Object.assign({},a),l=[],f="./this.program",d="object"==typeof window,p="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";if(h){var v=require("fs"),w=require("path");m=p?w.dirname(m)+"/":__dirname+"/",i=((e,r)=>(e=ne(e)?new URL(e):w.normalize(e),v.readFileSync(e,r?void 0:"utf8"))),u=(e=>{var r=i(e,!0);return r.buffer||(r=new Uint8Array(r)),r}),s=((e,r,t)=>{e=ne(e)?new URL(e):w.normalize(e),v.readFile(e,function(e,n){e?t(e):r(n.buffer)})}),process.argv.length>1&&(f=process.argv[1].replace(/\\/g,"/")),l=process.argv.slice(2),process.on("uncaughtException",function(e){if(!(e instanceof ae))throw e}),process.on("unhandledRejection",function(e){throw e}),(e,r)=>{if(k)throw process.exitCode=e,r;!function(e){if(e instanceof ae)return;g("exiting due to exception: "+e)}(r),process.exit(e)},a.inspect=function(){return"[Emscripten Module object]"}}else(d||p)&&(p?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),e&&(m=e),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",i=(e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText}),p&&(u=(e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)})),s=((e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=(()=>{200==n.status||0==n.status&&n.response?r(n.response):t()}),n.onerror=t,n.send(null)}),e=>document.title=e);var y=a.print||console.log.bind(console),g=a.printErr||console.warn.bind(console);Object.assign(a,c),c=null,a.arguments&&(l=a.arguments),a.thisProgram&&(f=a.thisProgram),a.quit&&a.quit;var E,b=4;a.wasmBinary&&(E=a.wasmBinary);var _,k=a.noExitRuntime||!0;"object"!=typeof WebAssembly&&K("no native wasm support detected");var T=!1;function P(e,r){e||K(r)}var C,S,D,A,F,$,M,O,j="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function x(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;if(o-r>16&&e.buffer&&j)return j.decode(e.subarray(r,o));for(var a="";r>10,56320|1023&c)}}else a+=String.fromCharCode((31&i)<<6|s)}else a+=String.fromCharCode(i)}return a}function N(e,r){return e?x(S,e,r):""}function R(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i);if(s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function z(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r}function W(){var e=_.buffer;a.HEAP8=C=new Int8Array(e),a.HEAP16=D=new Int16Array(e),a.HEAP32=F=new Int32Array(e),a.HEAPU8=S=new Uint8Array(e),a.HEAPU16=A=new Uint16Array(e),a.HEAPU32=$=new Uint32Array(e),a.HEAPF32=M=new Float32Array(e),a.HEAPF64=O=new Float64Array(e)}a.INITIAL_MEMORY;var B,U=[],L=[],I=[];var H=0,V=null,q=null;function G(e){return e}function X(e){H++,a.monitorRunDependencies&&a.monitorRunDependencies(H)}function Y(e){if(H--,a.monitorRunDependencies&&a.monitorRunDependencies(H),0==H&&(null!==V&&(clearInterval(V),V=null),q)){var r=q;q=null,r()}}function K(e){a.onAbort&&a.onAbort(e),g(e="Aborted("+e+")"),T=!0,1,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw n(r),r}var Z,J,Q,ee,re="data:application/octet-stream;base64,";function te(e){return e.startsWith(re)}function ne(e){return e.startsWith("file://")}function oe(e){try{if(e==Z&&E)return new Uint8Array(E);if(u)return u(e);throw"both async and sync fetching of the wasm failed"}catch(e){K(e)}}function ae(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function ie(e){for(;e.length>0;)e.shift()(a)}te(Z="rhino3dm.wasm")||(J=Z,Z=a.locateFile?a.locateFile(J,m):m+J);var se={isAbs:e=>"/"===e.charAt(0),splitPath:e=>{return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=se.isAbs(e),t="/"===e.substr(-1);return(e=se.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=se.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=se.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments);return se.normalize(e.join("/"))},join2:(e,r)=>se.normalize(e+"/"+r)},ue={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:pe.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=se.isAbs(n)}return(r?"/":"")+(e=se.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=ue.resolve(e).substr(1),r=ue.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t:z(e)+1,o=new Array(n),a=R(e,o,0,o.length);return r&&(o.length=a),o}var le={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){le.ttys[e]={input:[],output:[],ops:r},pe.registerDevice(e,le.stream_ops)},stream_ops:{open:function(e){var r=le.ttys[e.node.rdev];if(!r)throw new pe.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new pe.ErrnoError(60);for(var a=0,i=0;i0?t.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(r=window.prompt("Input: "))&&(r+="\n"):"function"==typeof readline&&null!==(r=readline())&&(r+="\n");if(!r)return null;e.input=ce(r,!0)}return e.input.shift()},put_char:function(e,r){null===r||10===r?(y(x(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(y(x(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(g(x(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(g(x(e.output,0)),e.output=[])}}};function fe(e){K()}var de={ops_table:null,mount:function(e){return de.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(pe.isBlkdev(t)||pe.isFIFO(t))throw new pe.ErrnoError(63);de.ops_table||(de.ops_table={dir:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr,lookup:de.node_ops.lookup,mknod:de.node_ops.mknod,rename:de.node_ops.rename,unlink:de.node_ops.unlink,rmdir:de.node_ops.rmdir,readdir:de.node_ops.readdir,symlink:de.node_ops.symlink},stream:{llseek:de.stream_ops.llseek}},file:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr},stream:{llseek:de.stream_ops.llseek,read:de.stream_ops.read,write:de.stream_ops.write,allocate:de.stream_ops.allocate,mmap:de.stream_ops.mmap,msync:de.stream_ops.msync}},link:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr,readlink:de.node_ops.readlink},stream:{}},chrdev:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr},stream:pe.chrdev_stream_ops}});var o=pe.createNode(e,r,t,n);return pe.isDir(o.mode)?(o.node_ops=de.ops_table.dir.node,o.stream_ops=de.ops_table.dir.stream,o.contents={}):pe.isFile(o.mode)?(o.node_ops=de.ops_table.file.node,o.stream_ops=de.ops_table.file.stream,o.usedBytes=0,o.contents=null):pe.isLink(o.mode)?(o.node_ops=de.ops_table.link.node,o.stream_ops=de.ops_table.link.stream):pe.isChrdev(o.mode)&&(o.node_ops=de.ops_table.chrdev.node,o.stream_ops=de.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r)if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=pe.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,pe.isDir(e.mode)?r.size=4096:pe.isFile(e.mode)?r.size=e.usedBytes:pe.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&de.resizeFileStorage(e,r.size)},lookup:function(e,r){throw pe.genericErrors[44]},mknod:function(e,r,t,n){return de.createNode(e,r,t,n)},rename:function(e,r,t){if(pe.isDir(e.mode)){var n;try{n=pe.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new pe.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=pe.lookupNode(e,r);for(var n in t.contents)throw new pe.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=de.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!pe.isLink(e.mode))throw new pe.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||t+r{if(!(e=ue.resolve(e)))return{path:"",node:null};if((r=Object.assign({follow_mount:!0,recurse_count:0},r)).recurse_count>8)throw new pe.ErrnoError(32);for(var t=e.split("/").filter(e=>!!e),n=pe.root,o="/",a=0;a40)throw new pe.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var r;;){if(pe.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?t+"/"+r:t+r:t}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%pe.nameTable.length},hashAddNode:e=>{var r=pe.hashName(e.parent.id,e.name);e.name_next=pe.nameTable[r],pe.nameTable[r]=e},hashRemoveNode:e=>{var r=pe.hashName(e.parent.id,e.name);if(pe.nameTable[r]===e)pe.nameTable[r]=e.name_next;else for(var t=pe.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=pe.mayLookup(e);if(t)throw new pe.ErrnoError(t,e);for(var n=pe.hashName(e.id,r),o=pe.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return pe.lookup(e,r)},createNode:(e,r,t,n)=>{var o=new pe.FSNode(e,r,t,n);return pe.hashAddNode(o),o},destroyNode:e=>{pe.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=pe.flagModes[e];if(void 0===r)throw new Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>pe.ignorePermissions?0:(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var r=pe.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate:(e,r)=>{try{pe.lookupNode(e,r);return 20}catch(e){}return pe.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{var n;try{n=pe.lookupNode(e,r)}catch(e){return e.errno}var o=pe.nodePermissions(e,"wx");if(o)return o;if(t){if(!pe.isDir(n.mode))return 54;if(pe.isRoot(n)||pe.getPath(n)===pe.cwd())return 10}else if(pe.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?pe.isLink(e.mode)?32:pe.isDir(e.mode)&&("r"!==pe.flagsToPermissionString(r)||512&r)?31:pe.nodePermissions(e,pe.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,r=pe.MAX_OPEN_FDS)=>{for(var t=e;t<=r;t++)if(!pe.streams[t])return t;throw new pe.ErrnoError(33)},getStream:e=>pe.streams[e],createStream:(e,r,t)=>{pe.FSStream||(pe.FSStream=function(){this.shared={}},pe.FSStream.prototype={},Object.defineProperties(pe.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new pe.FSStream,e);var n=pe.nextfd(r,t);return e.fd=n,pe.streams[n]=e,e},closeStream:e=>{pe.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=pe.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new pe.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{pe.devices[e]={stream_ops:r}},getDevice:e=>pe.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),pe.syncFSRequests++,pe.syncFSRequests>1&&g("warning: "+pe.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=pe.getMounts(pe.root.mount),n=0;function o(e){return pe.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach(r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)})},mount:(e,r,t)=>{var n,o="/"===t,a=!t;if(o&&pe.root)throw new pe.ErrnoError(10);if(!o&&!a){var i=pe.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,pe.isMountpoint(n))throw new pe.ErrnoError(10);if(!pe.isDir(n.mode))throw new pe.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?pe.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:e=>{var r=pe.lookupPath(e,{follow_mount:!1});if(!pe.isMountpoint(r.node))throw new pe.ErrnoError(28);var t=r.node,n=t.mounted,o=pe.getMounts(n);Object.keys(pe.nameTable).forEach(e=>{for(var r=pe.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&pe.destroyNode(r),r=t}}),t.mounted=null;var a=t.mount.mounts.indexOf(n);t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=pe.lookupPath(e,{parent:!0}).node,o=se.basename(e);if(!o||"."===o||".."===o)throw new pe.ErrnoError(28);var a=pe.mayCreate(n,o);if(a)throw new pe.ErrnoError(a);if(!n.node_ops.mknod)throw new pe.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=void 0!==r?r:438,r&=4095,r|=32768,pe.mknod(e,r,0)),mkdir:(e,r)=>(r=void 0!==r?r:511,r&=1023,r|=16384,pe.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,pe.mknod(e,r,t)),symlink:(e,r)=>{if(!ue.resolve(e))throw new pe.ErrnoError(44);var t=pe.lookupPath(r,{parent:!0}).node;if(!t)throw new pe.ErrnoError(44);var n=se.basename(r),o=pe.mayCreate(t,n);if(o)throw new pe.ErrnoError(o);if(!t.node_ops.symlink)throw new pe.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o=se.dirname(e),a=se.dirname(r),i=se.basename(e),s=se.basename(r);if(t=pe.lookupPath(e,{parent:!0}).node,n=pe.lookupPath(r,{parent:!0}).node,!t||!n)throw new pe.ErrnoError(44);if(t.mount!==n.mount)throw new pe.ErrnoError(75);var u,c=pe.lookupNode(t,i),l=ue.relative(e,a);if("."!==l.charAt(0))throw new pe.ErrnoError(28);if("."!==(l=ue.relative(r,o)).charAt(0))throw new pe.ErrnoError(55);try{u=pe.lookupNode(n,s)}catch(e){}if(c!==u){var f=pe.isDir(c.mode),d=pe.mayDelete(t,i,f);if(d)throw new pe.ErrnoError(d);if(d=u?pe.mayDelete(n,s,f):pe.mayCreate(n,s))throw new pe.ErrnoError(d);if(!t.node_ops.rename)throw new pe.ErrnoError(63);if(pe.isMountpoint(c)||u&&pe.isMountpoint(u))throw new pe.ErrnoError(10);if(n!==t&&(d=pe.nodePermissions(t,"w")))throw new pe.ErrnoError(d);pe.hashRemoveNode(c);try{t.node_ops.rename(c,n,s)}catch(e){throw e}finally{pe.hashAddNode(c)}}},rmdir:e=>{var r=pe.lookupPath(e,{parent:!0}).node,t=se.basename(e),n=pe.lookupNode(r,t),o=pe.mayDelete(r,t,!0);if(o)throw new pe.ErrnoError(o);if(!r.node_ops.rmdir)throw new pe.ErrnoError(63);if(pe.isMountpoint(n))throw new pe.ErrnoError(10);r.node_ops.rmdir(r,t),pe.destroyNode(n)},readdir:e=>{var r=pe.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new pe.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=pe.lookupPath(e,{parent:!0}).node;if(!r)throw new pe.ErrnoError(44);var t=se.basename(e),n=pe.lookupNode(r,t),o=pe.mayDelete(r,t,!1);if(o)throw new pe.ErrnoError(o);if(!r.node_ops.unlink)throw new pe.ErrnoError(63);if(pe.isMountpoint(n))throw new pe.ErrnoError(10);r.node_ops.unlink(r,t),pe.destroyNode(n)},readlink:e=>{var r=pe.lookupPath(e).node;if(!r)throw new pe.ErrnoError(44);if(!r.node_ops.readlink)throw new pe.ErrnoError(28);return ue.resolve(pe.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=pe.lookupPath(e,{follow:!r}).node;if(!t)throw new pe.ErrnoError(44);if(!t.node_ops.getattr)throw new pe.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>pe.stat(e,!0),chmod:(e,r,t)=>{var n;"string"==typeof e?n=pe.lookupPath(e,{follow:!t}).node:n=e;if(!n.node_ops.setattr)throw new pe.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{pe.chmod(e,r,!0)},fchmod:(e,r)=>{var t=pe.getStream(e);if(!t)throw new pe.ErrnoError(8);pe.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;"string"==typeof e?o=pe.lookupPath(e,{follow:!n}).node:o=e;if(!o.node_ops.setattr)throw new pe.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{pe.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=pe.getStream(e);if(!n)throw new pe.ErrnoError(8);pe.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new pe.ErrnoError(28);var t;"string"==typeof e?t=pe.lookupPath(e,{follow:!0}).node:t=e;if(!t.node_ops.setattr)throw new pe.ErrnoError(63);if(pe.isDir(t.mode))throw new pe.ErrnoError(31);if(!pe.isFile(t.mode))throw new pe.ErrnoError(28);var n=pe.nodePermissions(t,"w");if(n)throw new pe.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=pe.getStream(e);if(!t)throw new pe.ErrnoError(8);if(0==(2097155&t.flags))throw new pe.ErrnoError(28);pe.truncate(t.node,r)},utime:(e,r,t)=>{var n=pe.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(e,r,t)=>{if(""===e)throw new pe.ErrnoError(44);var n;if(t=void 0===t?438:t,t=64&(r="string"==typeof r?pe.modeStringToFlags(r):r)?4095&t|32768:0,"object"==typeof e)n=e;else{e=se.normalize(e);try{n=pe.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var o=!1;if(64&r)if(n){if(128&r)throw new pe.ErrnoError(20)}else n=pe.mknod(e,t,0),o=!0;if(!n)throw new pe.ErrnoError(44);if(pe.isChrdev(n.mode)&&(r&=-513),65536&r&&!pe.isDir(n.mode))throw new pe.ErrnoError(54);if(!o){var i=pe.mayOpen(n,r);if(i)throw new pe.ErrnoError(i)}512&r&&!o&&pe.truncate(n,0),r&=-131713;var s=pe.createStream({node:n,path:pe.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),!a.logReadFiles||1&r||(pe.readFiles||(pe.readFiles={}),e in pe.readFiles||(pe.readFiles[e]=1)),s},close:e=>{if(pe.isClosed(e))throw new pe.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{pe.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(pe.isClosed(e))throw new pe.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new pe.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new pe.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new pe.ErrnoError(28);if(pe.isClosed(e))throw new pe.ErrnoError(8);if(1==(2097155&e.flags))throw new pe.ErrnoError(8);if(pe.isDir(e.node.mode))throw new pe.ErrnoError(31);if(!e.stream_ops.read)throw new pe.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new pe.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new pe.ErrnoError(28);if(pe.isClosed(e))throw new pe.ErrnoError(8);if(0==(2097155&e.flags))throw new pe.ErrnoError(8);if(pe.isDir(e.node.mode))throw new pe.ErrnoError(31);if(!e.stream_ops.write)throw new pe.ErrnoError(28);e.seekable&&1024&e.flags&&pe.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new pe.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(pe.isClosed(e))throw new pe.ErrnoError(8);if(r<0||t<=0)throw new pe.ErrnoError(28);if(0==(2097155&e.flags))throw new pe.ErrnoError(8);if(!pe.isFile(e.node.mode)&&!pe.isDir(e.node.mode))throw new pe.ErrnoError(43);if(!e.stream_ops.allocate)throw new pe.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o)=>{if(0!=(2&n)&&0==(2&o)&&2!=(2097155&e.flags))throw new pe.ErrnoError(2);if(1==(2097155&e.flags))throw new pe.ErrnoError(2);if(!e.stream_ops.mmap)throw new pe.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:(e,r,t,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new pe.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:(e,r={})=>{if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var t,n=pe.open(e,r.flags),o=pe.stat(e).size,a=new Uint8Array(o);return pe.read(n,a,0,o,0),"utf8"===r.encoding?t=x(a,0):"binary"===r.encoding&&(t=a),pe.close(n),t},writeFile:(e,r,t={})=>{t.flags=t.flags||577;var n=pe.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(z(r)+1),a=R(r,o,0,o.length);pe.write(n,o,0,a,void 0,t.canOwn)}else{if(!ArrayBuffer.isView(r))throw new Error("Unsupported data type");pe.write(n,r,0,r.byteLength,void 0,t.canOwn)}pe.close(n)},cwd:()=>pe.currentPath,chdir:e=>{var r=pe.lookupPath(e,{follow:!0});if(null===r.node)throw new pe.ErrnoError(44);if(!pe.isDir(r.node.mode))throw new pe.ErrnoError(54);var t=pe.nodePermissions(r.node,"x");if(t)throw new pe.ErrnoError(t);pe.currentPath=r.path},createDefaultDirectories:()=>{pe.mkdir("/tmp"),pe.mkdir("/home"),pe.mkdir("/home/web_user")},createDefaultDevices:()=>{pe.mkdir("/dev"),pe.registerDevice(pe.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),pe.mkdev("/dev/null",pe.makedev(1,3)),le.register(pe.makedev(5,0),le.default_tty_ops),le.register(pe.makedev(6,0),le.default_tty1_ops),pe.mkdev("/dev/tty",pe.makedev(5,0)),pe.mkdev("/dev/tty1",pe.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(h)try{var r=require("crypto");return()=>r.randomBytes(1)[0]}catch(e){}return()=>K("randomDevice")}();pe.createDevice("/dev","random",e),pe.createDevice("/dev","urandom",e),pe.mkdir("/dev/shm"),pe.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{pe.mkdir("/proc");var e=pe.mkdir("/proc/self");pe.mkdir("/proc/self/fd"),pe.mount({mount:()=>{var r=pe.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=+r,n=pe.getStream(t);if(!n)throw new pe.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>n.path}};return o.parent=o,o}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{a.stdin?pe.createDevice("/dev","stdin",a.stdin):pe.symlink("/dev/tty","/dev/stdin"),a.stdout?pe.createDevice("/dev","stdout",null,a.stdout):pe.symlink("/dev/tty","/dev/stdout"),a.stderr?pe.createDevice("/dev","stderr",null,a.stderr):pe.symlink("/dev/tty1","/dev/stderr");pe.open("/dev/stdin",0),pe.open("/dev/stdout",1),pe.open("/dev/stderr",1)},ensureErrnoError:()=>{pe.ErrnoError||(pe.ErrnoError=function(e,r){this.node=r,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},pe.ErrnoError.prototype=new Error,pe.ErrnoError.prototype.constructor=pe.ErrnoError,[44].forEach(e=>{pe.genericErrors[e]=new pe.ErrnoError(e),pe.genericErrors[e].stack=""}))},staticInit:()=>{pe.ensureErrnoError(),pe.nameTable=new Array(4096),pe.mount(de,{},"/"),pe.createDefaultDirectories(),pe.createDefaultDevices(),pe.createSpecialDirectories(),pe.filesystems={MEMFS:de}},init:(e,r,t)=>{pe.init.initialized=!0,pe.ensureErrnoError(),a.stdin=e||a.stdin,a.stdout=r||a.stdout,a.stderr=t||a.stderr,pe.createStandardStreams()},quit:()=>{pe.init.initialized=!1;for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=pe.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{e=(n=pe.lookupPath(e,{follow:!r})).path}catch(e){}var t={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=pe.lookupPath(e,{parent:!0});t.parentExists=!0,t.parentPath=n.path,t.parentObject=n.node,t.name=se.basename(e),n=pe.lookupPath(e,{follow:!r}),t.exists=!0,t.path=n.path,t.object=n.node,t.name=n.node.name,t.isRoot="/"===n.path}catch(e){t.error=e.errno}return t},createPath:(e,r,t,n)=>{e="string"==typeof e?e:pe.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=se.join2(e,a);try{pe.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=se.join2("string"==typeof e?e:pe.getPath(e),r),i=pe.getMode(n,o);return pe.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:pe.getPath(e),i=r?se.join2(e,r):e);var s=pe.getMode(n,o),u=pe.create(i,s);if(t){if("string"==typeof t){for(var c=new Array(t.length),l=0,f=t.length;l{var o=se.join2("string"==typeof e?e:pe.getPath(e),r),a=pe.getMode(!!t,!!n);pe.createDevice.major||(pe.createDevice.major=64);var i=pe.makedev(pe.createDevice.major++,0);return pe.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i=0,s=0;s{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!i)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=ce(i(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new pe.ErrnoError(29)}},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,a=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,i=1048576;o||(i=n);var s=this;s.setDataGetter(e=>{var r=e*i,o=(e+1)*i-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=((e,r)=>{if(e>r)throw new Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):ce(o.responseText||"",!0)})(r,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]}),!a&&n||(i=n=1,n=this.getter(0).length,i=n,y("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!p)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var i=new a;Object.defineProperties(i,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:i}}else s={isDevice:!1,url:t};var u=pe.createFile(e,r,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};function l(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var s=0;s{var r=u.stream_ops[e];c[e]=function(){return pe.forceLoadFile(u),r.apply(null,arguments)}}),c.read=((e,r,t,n,o)=>(pe.forceLoadFile(u),l(e,r,t,n,o))),c.mmap=((e,r,t,n,o)=>{pe.forceLoadFile(u);var a=fe();if(!a)throw new pe.ErrnoError(48);return l(e,C,a,r,t),{ptr:a,allocated:!0}}),u.stream_ops=c,u},createPreloadedFile:(e,r,t,n,o,a,i,u,c,l)=>{var f=r?ue.resolve(se.join2(e,r)):e;G("cp "+f);function d(t){function s(t){l&&l(),u||pe.createDataFile(e,r,t,n,o,c),a&&a(),Y()}Browser.handledByPreloadPlugin(t,f,s,()=>{i&&i(),Y()})||s(t)}X(),"string"==typeof t?function(e,r,t,n){var o=n?"":G("al "+e);s(e,t=>{P(t,'Loading data file "'+e+'" failed (no arrayBuffer).'),r(new Uint8Array(t)),o&&Y()},r=>{if(!t)throw'Loading data file "'+e+'" failed.';t()}),o&&X()}(t,e=>d(e),i):d(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r,t)=>{r=r||(()=>{}),t=t||(()=>{});var n=pe.indexedDB();try{var o=n.open(pe.DB_NAME(),pe.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=(()=>{y("creating db"),o.result.createObjectStore(pe.DB_STORE_NAME)}),o.onsuccess=(()=>{var n=o.result.transaction([pe.DB_STORE_NAME],"readwrite"),a=n.objectStore(pe.DB_STORE_NAME),i=0,s=0,u=e.length;function c(){0==s?r():t()}e.forEach(e=>{var r=a.put(pe.analyzePath(e).object.contents,e);r.onsuccess=(()=>{++i+s==u&&c()}),r.onerror=(()=>{i+ ++s==u&&c()})}),n.onerror=t}),o.onerror=t},loadFilesFromDB:(e,r,t)=>{r=r||(()=>{}),t=t||(()=>{});var n=pe.indexedDB();try{var o=n.open(pe.DB_NAME(),pe.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=(()=>{var n=o.result;try{var a=n.transaction([pe.DB_STORE_NAME],"readonly")}catch(e){return void t(e)}var i=a.objectStore(pe.DB_STORE_NAME),s=0,u=0,c=e.length;function l(){0==u?r():t()}e.forEach(e=>{var r=i.get(e);r.onsuccess=(()=>{pe.analyzePath(e).exists&&pe.unlink(e),pe.createDataFile(se.dirname(e),se.basename(e),r.result,!0,!0,!0),++s+u==c&&l()}),r.onerror=(()=>{s+ ++u==c&&l()})}),a.onerror=t}),o.onerror=t}},he={mount:function(e){return a.websocket=a.websocket&&"object"==typeof a.websocket?a.websocket:{},a.websocket._callbacks={},a.websocket.on=function(e,r){return"function"==typeof r&&(this._callbacks[e]=r),this},a.websocket.emit=function(e,r){"function"==typeof this._callbacks[e]&&this._callbacks[e].call(this,r)},pe.createNode(null,"/",16895,0)},createSocket:function(e,r,t){if(1==(r&=-526337)&&t&&6!=t)throw new pe.ErrnoError(66);var n={family:e,type:r,protocol:t,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:he.websocket_sock_ops},o=he.nextname(),a=pe.createNode(he.root,o,49152,0);a.sock=n;var i=pe.createStream({path:o,node:a,flags:2,seekable:!1,stream_ops:he.stream_ops});return n.stream=i,n},getSocket:function(e){var r=pe.getStream(e);return r&&pe.isSocket(r.node.mode)?r.node.sock:null},stream_ops:{poll:function(e){var r=e.node.sock;return r.sock_ops.poll(r)},ioctl:function(e,r,t){var n=e.node.sock;return n.sock_ops.ioctl(n,r,t)},read:function(e,r,t,n,o){var a=e.node.sock,i=a.sock_ops.recvmsg(a,n);return i?(r.set(i.buffer,t),i.buffer.length):0},write:function(e,r,t,n,o){var a=e.node.sock;return a.sock_ops.sendmsg(a,r,t,n)},close:function(e){var r=e.node.sock;r.sock_ops.close(r)}},nextname:function(){return he.nextname.current||(he.nextname.current=0),"socket["+he.nextname.current+++"]"},websocket_sock_ops:{createPeer:function(e,r,t){var n;if("object"==typeof r&&(n=r,r=null,t=null),n)if(n._socket)r=n._socket.remoteAddress,t=n._socket.remotePort;else{var o=/ws[s]?:\/\/([^:]+):(\d+)/.exec(n.url);if(!o)throw new Error("WebSocket URL must be in the format ws(s)://address:port");r=o[1],t=parseInt(o[2],10)}else try{var i=a.websocket&&"object"==typeof a.websocket,s="ws:#".replace("#","//");if(i&&"string"==typeof a.websocket.url&&(s=a.websocket.url),"ws://"===s||"wss://"===s){var u=r.split("/");s=s+u[0]+":"+t+"/"+u.slice(1).join("/")}var c="binary";i&&"string"==typeof a.websocket.subprotocol&&(c=a.websocket.subprotocol);var l=void 0;"null"!==c&&(l=c=c.replace(/^ +| +$/g,"").split(/ *, */)),i&&null===a.websocket.subprotocol&&(c="null",l=void 0),(n=new(h?require("ws"):WebSocket)(s,l)).binaryType="arraybuffer"}catch(e){throw new pe.ErrnoError(23)}var f={addr:r,port:t,socket:n,dgram_send_queue:[]};return he.websocket_sock_ops.addPeer(e,f),he.websocket_sock_ops.handlePeerEvents(e,f),2===e.type&&void 0!==e.sport&&f.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(65280&e.sport)>>8,255&e.sport])),f},getPeer:function(e,r,t){return e.peers[r+":"+t]},addPeer:function(e,r){e.peers[r.addr+":"+r.port]=r},removePeer:function(e,r){delete e.peers[r.addr+":"+r.port]},handlePeerEvents:function(e,r){var t=!0,n=function(){a.websocket.emit("open",e.stream.fd);try{for(var t=r.dgram_send_queue.shift();t;)r.socket.send(t),t=r.dgram_send_queue.shift()}catch(e){r.socket.close()}};function o(n){if("string"==typeof n){n=(new TextEncoder).encode(n)}else{if(P(void 0!==n.byteLength),0==n.byteLength)return;n=new Uint8Array(n)}var o=t;if(t=!1,o&&10===n.length&&255===n[0]&&255===n[1]&&255===n[2]&&255===n[3]&&n[4]==="p".charCodeAt(0)&&n[5]==="o".charCodeAt(0)&&n[6]==="r".charCodeAt(0)&&n[7]==="t".charCodeAt(0)){var i=n[8]<<8|n[9];return he.websocket_sock_ops.removePeer(e,r),r.port=i,void he.websocket_sock_ops.addPeer(e,r)}e.recv_queue.push({addr:r.addr,port:r.port,data:n}),a.websocket.emit("message",e.stream.fd)}h?(r.socket.on("open",n),r.socket.on("message",function(e,r){r&&o(new Uint8Array(e).buffer)}),r.socket.on("close",function(){a.websocket.emit("close",e.stream.fd)}),r.socket.on("error",function(r){e.error=14,a.websocket.emit("error",[e.stream.fd,e.error,"ECONNREFUSED: Connection refused"])})):(r.socket.onopen=n,r.socket.onclose=function(){a.websocket.emit("close",e.stream.fd)},r.socket.onmessage=function(e){o(e.data)},r.socket.onerror=function(r){e.error=14,a.websocket.emit("error",[e.stream.fd,e.error,"ECONNREFUSED: Connection refused"])})},poll:function(e){if(1===e.type&&e.server)return e.pending.length?65:0;var r=0,t=1===e.type?he.websocket_sock_ops.getPeer(e,e.daddr,e.dport):null;return(e.recv_queue.length||!t||t&&t.socket.readyState===t.socket.CLOSING||t&&t.socket.readyState===t.socket.CLOSED)&&(r|=65),(!t||t&&t.socket.readyState===t.socket.OPEN)&&(r|=4),(t&&t.socket.readyState===t.socket.CLOSING||t&&t.socket.readyState===t.socket.CLOSED)&&(r|=16),r},ioctl:function(e,r,t){switch(r){case 21531:var n=0;return e.recv_queue.length&&(n=e.recv_queue[0].data.length),F[t>>2]=n,0;default:return 28}},close:function(e){if(e.server){try{e.server.close()}catch(e){}e.server=null}for(var r=Object.keys(e.peers),t=0;t>8&255)+"."+(e>>16&255)+"."+(e>>24&255)}function ve(e,r){var t,n=D[e>>1],o=ht(A[e+2>>1]);switch(n){case 2:if(16!==r)return{errno:28};t=me(t=F[e+4>>2]);break;case 10:if(28!==r)return{errno:28};t=function(e){var r="",t=0,n=0,o=0,a=0,i=0,s=0,u=[65535&e[0],e[0]>>16,65535&e[1],e[1]>>16,65535&e[2],e[2]>>16,65535&e[3],e[3]>>16],c=!0,l="";for(s=0;s<5;s++)if(0!==u[s]){c=!1;break}if(c){if(l=me(u[6]|u[7]<<16),-1===u[5])return r="::ffff:",r+=l;if(0===u[5])return r="::","0.0.0.0"===l&&(l=""),"0.0.0.1"===l&&(l="1"),r+=l}for(t=0;t<8;t++)0===u[t]&&(t-o>1&&(i=0),o=t,i++),i>n&&(a=t-(n=i)+1);for(t=0;t<8;t++)n>1&&0===u[t]&&t>=a&&t>2],F[e+12>>2],F[e+16>>2],F[e+20>>2]]);break;default:return{errno:5}}return{family:n,addr:t,port:o}}function we(e){return parseInt(e)}var ye={address_map:{id:1,addrs:{},names:{}},lookup_name:function(e){var r,t=function(e){for(var r=e.split("."),t=0;t<4;t++){var n=Number(r[t]);if(isNaN(n))return null;r[t]=n}return(r[0]|r[1]<<8|r[2]<<16|r[3]<<24)>>>0}(e);if(null!==t)return e;if(null!==(t=function(e){var r,t,n,o,a=[];if(!/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i.test(e))return null;if("::"===e)return[0,0,0,0,0,0,0,0];for((e=e.startsWith("::")?e.replace("::","Z:"):e.replace("::",":Z:")).indexOf(".")>0?((r=(e=e.replace(new RegExp("[.]","g"),":")).split(":"))[r.length-4]=we(r[r.length-4])+256*we(r[r.length-3]),r[r.length-3]=we(r[r.length-2])+256*we(r[r.length-1]),r=r.slice(0,r.length-2)):r=e.split(":"),n=0,o=0,t=0;t>2]=n.dev,F[t+8>>2]=n.ino,F[t+12>>2]=n.mode,$[t+16>>2]=n.nlink,F[t+20>>2]=n.uid,F[t+24>>2]=n.gid,F[t+28>>2]=n.rdev,ee=[n.size>>>0,(Q=n.size,+Math.abs(Q)>=1?Q>0?(0|Math.min(+Math.floor(Q/4294967296),4294967295))>>>0:~~+Math.ceil((Q-+(~~Q>>>0))/4294967296)>>>0:0)],F[t+40>>2]=ee[0],F[t+44>>2]=ee[1],F[t+48>>2]=4096,F[t+52>>2]=n.blocks;var o=n.atime.getTime(),a=n.mtime.getTime(),i=n.ctime.getTime();return ee=[Math.floor(o/1e3)>>>0,(Q=Math.floor(o/1e3),+Math.abs(Q)>=1?Q>0?(0|Math.min(+Math.floor(Q/4294967296),4294967295))>>>0:~~+Math.ceil((Q-+(~~Q>>>0))/4294967296)>>>0:0)],F[t+56>>2]=ee[0],F[t+60>>2]=ee[1],$[t+64>>2]=o%1e3*1e3,ee=[Math.floor(a/1e3)>>>0,(Q=Math.floor(a/1e3),+Math.abs(Q)>=1?Q>0?(0|Math.min(+Math.floor(Q/4294967296),4294967295))>>>0:~~+Math.ceil((Q-+(~~Q>>>0))/4294967296)>>>0:0)],F[t+72>>2]=ee[0],F[t+76>>2]=ee[1],$[t+80>>2]=a%1e3*1e3,ee=[Math.floor(i/1e3)>>>0,(Q=Math.floor(i/1e3),+Math.abs(Q)>=1?Q>0?(0|Math.min(+Math.floor(Q/4294967296),4294967295))>>>0:~~+Math.ceil((Q-+(~~Q>>>0))/4294967296)>>>0:0)],F[t+88>>2]=ee[0],F[t+92>>2]=ee[1],$[t+96>>2]=i%1e3*1e3,ee=[n.ino>>>0,(Q=n.ino,+Math.abs(Q)>=1?Q>0?(0|Math.min(+Math.floor(Q/4294967296),4294967295))>>>0:~~+Math.ceil((Q-+(~~Q>>>0))/4294967296)>>>0:0)],F[t+104>>2]=ee[0],F[t+108>>2]=ee[1],0},doMsync:function(e,r,t,n,o){if(!pe.isFile(r.node.mode))throw new pe.ErrnoError(43);if(2&n)return 0;var a=S.slice(e,e+t);pe.msync(r,a,o,t,n)},varargs:void 0,get:function(){return ge.varargs+=4,F[ge.varargs-4>>2]},getStr:function(e){return N(e)},getStreamFromFD:function(e){var r=pe.getStream(e);if(!r)throw new pe.ErrnoError(8);return r}};function Ee(e,r){return r+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*r:NaN}var be={};function _e(e){for(;e.length;){var r=e.pop();e.pop()(r)}}function ke(e){return this.fromWireType(F[e>>2])}var Te={},Pe={},Ce={},Se=48,De=57;function Ae(e){if(void 0===e)return"_unknown";var r=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return r>=Se&&r<=De?"_"+e:e}function Fe(e,r){return e=Ae(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(r)}function $e(e,r){var t=Fe(r,function(e){this.name=r,this.message=e;var t=new Error(e).stack;void 0!==t&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},t}var Me=void 0;function Oe(e){throw new Me(e)}function je(e,r,t){function n(r){var n=t(r);n.length!==e.length&&Oe("Mismatched type converter count");for(var o=0;o{Pe.hasOwnProperty(e)?o[r]=Pe[e]:(a.push(e),Te.hasOwnProperty(e)||(Te[e]=[]),Te[e].push(()=>{o[r]=Pe[e],++i===a.length&&n(o)}))}),0===a.length&&n(o)}var xe={};function Ne(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var Re=void 0;function ze(e){for(var r="",t=e;S[t];)r+=Re[S[t++]];return r}var We=void 0;function Be(e){throw new We(e)}function Ue(e,r,t={}){if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");var n=r.name;if(e||Be('type "'+n+'" must have a positive integer typeid pointer'),Pe.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;Be("Cannot register type '"+n+"' twice")}if(Pe[e]=r,delete Ce[e],Te.hasOwnProperty(e)){var o=Te[e];delete Te[e],o.forEach(e=>e())}}function Le(e){if(!(this instanceof cr))return!1;if(!(e instanceof cr))return!1;for(var r=this.$$.ptrType.registeredClass,t=this.$$.ptr,n=e.$$.ptrType.registeredClass,o=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)o=n.upcast(o),n=n.baseClass;return r===n&&t===o}function Ie(e){Be(e.$$.ptrType.registeredClass.name+" instance already deleted")}var He=!1;function Ve(e){}function qe(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}var Ge={};function Xe(){return Object.keys(er).length}function Ye(){var e=[];for(var r in er)er.hasOwnProperty(r)&&e.push(er[r]);return e}var Ke=[];function Ze(){for(;Ke.length;){var e=Ke.pop();e.$$.deleteScheduled=!1,e.delete()}}var Je=void 0;function Qe(e){Je=e,Ke.length&&Je&&Je(Ze)}var er={};function rr(e,r){return r=function(e,r){for(void 0===r&&Be("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r}(e,r),er[r]}function tr(e,r){return r.ptrType&&r.ptr||Oe("makeClassHandle requires ptr and ptrType"),!!r.smartPtrType!==!!r.smartPtr&&Oe("Both smartPtrType and smartPtr must be specified"),r.count={value:1},or(Object.create(e,{$$:{value:r}}))}function nr(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=rr(this.registeredClass,r);if(void 0!==t){if(0===t.$$.count.value)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?tr(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):tr(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var a,i=this.registeredClass.getActualType(r),s=Ge[i];if(!s)return o.call(this);a=this.isConst?s.constPointerType:s.pointerType;var u=function e(r,t,n){if(t===n)return r;if(void 0===n.baseClass)return null;var o=e(r,t,n.baseClass);return null===o?null:n.downcast(o)}(r,this.registeredClass,a.registeredClass);return null===u?o.call(this):this.isSmartPointer?tr(a.registeredClass.instancePrototype,{ptrType:a,ptr:u,smartPtrType:this,smartPtr:e}):tr(a.registeredClass.instancePrototype,{ptrType:a,ptr:u})}function or(e){return"undefined"==typeof FinalizationRegistry?(or=(e=>e),e):(He=new FinalizationRegistry(e=>{qe(e.$$)}),Ve=(e=>He.unregister(e)),(or=(e=>{var r=e.$$;if(!!r.smartPtr){var t={$$:r};He.register(e,t,e)}return e}))(e))}function ar(){if(this.$$.ptr||Ie(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,r=or(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return r.$$.count.value+=1,r.$$.deleteScheduled=!1,r}function ir(){this.$$.ptr||Ie(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Be("Object already scheduled for deletion"),Ve(this),qe(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function sr(){return!this.$$.ptr}function ur(){return this.$$.ptr||Ie(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Be("Object already scheduled for deletion"),Ke.push(this),1===Ke.length&&Je&&Je(Ze),this.$$.deleteScheduled=!0,this}function cr(){}function lr(e,r,t){if(void 0===e[r].overloadTable){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||Be("Function '"+t+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[r].overloadTable+")!"),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}}function fr(e,r,t){a.hasOwnProperty(e)?((void 0===t||void 0!==a[e].overloadTable&&void 0!==a[e].overloadTable[t])&&Be("Cannot register public name '"+e+"' twice"),lr(a,e,e),a.hasOwnProperty(t)&&Be("Cannot register multiple overloads of a function with the same number of arguments ("+t+")!"),a[e].overloadTable[t]=r):(a[e]=r,void 0!==t&&(a[e].numArguments=t))}function dr(e,r,t){for(;r!==t;)r.upcast||Be("Expected null or instance of "+t.name+", got an instance of "+r.name),e=r.upcast(e),r=r.baseClass;return e}function pr(e,r){if(null===r)return this.isReference&&Be("null is not a valid "+this.name),0;r.$$||Be('Cannot pass "'+Rr(r)+'" as a '+this.name),r.$$.ptr||Be("Cannot pass deleted object as a pointer of type "+this.name);var t=r.$$.ptrType.registeredClass;return dr(r.$$.ptr,t,this.registeredClass)}function hr(e,r){var t;if(null===r)return this.isReference&&Be("null is not a valid "+this.name),this.isSmartPointer?(t=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,t),t):0;r.$$||Be('Cannot pass "'+Rr(r)+'" as a '+this.name),r.$$.ptr||Be("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&r.$$.ptrType.isConst&&Be("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);var n=r.$$.ptrType.registeredClass;if(t=dr(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(void 0===r.$$.smartPtr&&Be("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:Be("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var o=r.clone();t=this.rawShare(t,xr.toHandle(function(){o.delete()})),null!==e&&e.push(this.rawDestructor,t)}break;default:Be("Unsupporting sharing policy")}return t}function mr(e,r){if(null===r)return this.isReference&&Be("null is not a valid "+this.name),0;r.$$||Be('Cannot pass "'+Rr(r)+'" as a '+this.name),r.$$.ptr||Be("Cannot pass deleted object as a pointer of type "+this.name),r.$$.ptrType.isConst&&Be("Cannot convert argument of type "+r.$$.ptrType.name+" to parameter type "+this.name);var t=r.$$.ptrType.registeredClass;return dr(r.$$.ptr,t,this.registeredClass)}function vr(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function wr(e){this.rawDestructor&&this.rawDestructor(e)}function yr(e){null!==e&&e.delete()}function gr(e,r,t,n,o,a,i,s,u,c,l){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=o,this.pointeeType=a,this.sharingPolicy=i,this.rawGetPointee=s,this.rawConstructor=u,this.rawShare=c,this.rawDestructor=l,o||void 0!==r.baseClass?this.toWireType=hr:n?(this.toWireType=pr,this.destructorFunction=null):(this.toWireType=mr,this.destructorFunction=null)}function Er(e){return B.get(e)}function br(e,r,t){return e.includes("j")?function(e,r,t){var n=a["dynCall_"+e];return t&&t.length?n.apply(null,[r].concat(t)):n.call(null,r)}(e,r,t):Er(r).apply(null,t)}function _r(e,r){var t,n,o,a=(e=ze(e)).includes("j")?(t=e,n=r,o=[],function(){return o.length=0,Object.assign(o,arguments),br(t,n,o)}):Er(r);return"function"!=typeof a&&Be("unknown function pointer with signature "+e+": "+r),a}var kr=void 0;function Tr(e){var r=dt(e),t=ze(r);return lt(r),t}function Pr(e,r){var t=[],n={};throw r.forEach(function e(r){n[r]||Pe[r]||(Ce[r]?Ce[r].forEach(e):(t.push(r),n[r]=!0))}),new kr(e+": "+t.map(Tr).join([", "]))}function Cr(e,r){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var t=Fe(e.name||"unknownFunctionName",function(){});t.prototype=e.prototype;var n=new t,o=e.apply(n,r);return o instanceof Object?o:n}function Sr(e,r,t,n,o){var a=r.length;a<2&&Be("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var i=null!==r[1]&&null!==t,s=!1,u=1;u0?", ":"")+f),d+=(c?"var rv = ":"")+"invoker(fn"+(f.length>0?", ":"")+f+");\n",s)d+="runDestructors(destructors);\n";else for(u=i?1:2;u>2]);return t}function Ar(e,r,t){return e instanceof Object||Be(t+' with invalid "this": '+e),e instanceof r.registeredClass.constructor||Be(t+' incompatible with "this" of type '+e.constructor.name),e.$$.ptr||Be("cannot call emscripten binding method "+t+" on deleted object"),dr(e.$$.ptr,e.$$.ptrType.registeredClass,r.registeredClass)}var Fr=[],$r=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Mr(e){e>4&&0==--$r[e].refcount&&($r[e]=void 0,Fr.push(e))}function Or(){for(var e=0,r=5;r<$r.length;++r)void 0!==$r[r]&&++e;return e}function jr(){for(var e=5;e<$r.length;++e)if(void 0!==$r[e])return $r[e];return null}var xr={toValue:e=>(e||Be("Cannot use deleted val. handle = "+e),$r[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var r=Fr.length?Fr.pop():$r.length;return $r[r]={refcount:1,value:e},r}}};function Nr(e,r){var t=Pe[e];return void 0===t&&Be(r+" has unknown type "+Tr(e)),t}function Rr(e){if(null===e)return"null";var r=typeof e;return"object"===r||"array"===r||"function"===r?e.toString():""+e}var zr="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Wr(e,r){for(var t=e,n=t>>1,o=n+r/2;!(n>=o)&&A[n];)++n;if((t=n<<1)-e>32&&zr)return zr.decode(S.subarray(e,t));for(var a="",i=0;!(i>=r/2);++i){var s=D[e+2*i>>1];if(0==s)break;a+=String.fromCharCode(s)}return a}function Br(e,r,t){if(void 0===t&&(t=2147483647),t<2)return 0;for(var n=r,o=(t-=2)<2*e.length?t/2:e.length,a=0;a>1]=i,r+=2}return D[r>>1]=0,r-n}function Ur(e){return 2*e.length}function Lr(e,r){for(var t=0,n="";!(t>=r/4);){var o=F[e+4*t>>2];if(0==o)break;if(++t,o>=65536){var a=o-65536;n+=String.fromCharCode(55296|a>>10,56320|1023&a)}else n+=String.fromCharCode(o)}return n}function Ir(e,r,t){if(void 0===t&&(t=2147483647),t<4)return 0;for(var n=r,o=n+t-4,a=0;a=55296&&i<=57343)i=65536+((1023&i)<<10)|1023&e.charCodeAt(++a);if(F[r>>2]=i,(r+=4)+4>o)break}return F[r>>2]=0,r-n}function Hr(e){for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r}var Vr={};function qr(e){var r=Vr[e];return void 0===r?ze(e):r}var Gr=[];function Xr(){return"object"==typeof globalThis?globalThis:Function("return this")()}var Yr=[];var Kr={};function Zr(e){return $[e>>2]+4294967296*F[e+4>>2]}var Jr,Qr=[0,31,60,91,121,152,182,213,244,274,305,335],et=[0,31,59,90,120,151,181,212,243,273,304,334];function rt(e){var r;return((r=e.getFullYear())%4==0&&(r%100!=0||r%400==0)?Qr:et)[e.getMonth()]+e.getDate()-1}function tt(e){var r=z(e)+1,t=ct(r);return t&&R(e,C,t,r),t}function nt(e){var r=_.buffer;try{return _.grow(e-r.byteLength+65535>>>16),W(),1}catch(e){}}Jr=h?()=>{var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:()=>performance.now();var ot={};function at(){if(!at.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:f||"./this.program"};for(var r in ot)void 0===ot[r]?delete e[r]:e[r]=ot[r];var t=[];for(var r in e)t.push(r+"="+e[r]);at.strings=t}return at.strings}var it=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=pe.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n};Object.defineProperties(it.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return pe.isDir(this.mode)}},isDevice:{get:function(){return pe.isChrdev(this.mode)}}}),pe.FSNode=it,pe.staticInit(),Me=a.InternalError=$e(Error,"InternalError"),function(){for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);Re=e}(),We=a.BindingError=$e(Error,"BindingError"),cr.prototype.isAliasOf=Le,cr.prototype.clone=ar,cr.prototype.delete=ir,cr.prototype.isDeleted=sr,cr.prototype.deleteLater=ur,a.getInheritedInstanceCount=Xe,a.getLiveInheritedInstances=Ye,a.flushPendingDeletes=Ze,a.setDelayFunction=Qe,gr.prototype.getPointee=vr,gr.prototype.destructor=wr,gr.prototype.argPackAdvance=8,gr.prototype.readValueFromPointer=ke,gr.prototype.deleteObject=yr,gr.prototype.fromWireType=nr,kr=a.UnboundTypeError=$e(Error,"UnboundTypeError"),a.count_emval_handles=Or,a.get_first_emval=jr;var st,ut={v:function(e,r,t){throw new function(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){$[this.ptr+4>>2]=e},this.get_type=function(){return $[this.ptr+4>>2]},this.set_destructor=function(e){$[this.ptr+8>>2]=e},this.get_destructor=function(){return $[this.ptr+8>>2]},this.set_refcount=function(e){F[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,C[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=C[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,C[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=C[this.ptr+13>>0]},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=F[this.ptr>>2];F[this.ptr>>2]=e+1},this.release_ref=function(){var e=F[this.ptr>>2];return F[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){$[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return $[this.ptr+16>>2]},this.get_exception_ptr=function(){if(mt(this.get_type()))return $[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}(e).init(r,t),e,0,e},U:function(e,r,t){try{var n=function(e){var r=he.getSocket(e);if(!r)throw new pe.ErrnoError(8);return r}(e),o=function(e,r,t){if(t&&0===e)return null;var n=ve(e,r);if(n.errno)throw new pe.ErrnoError(n.errno);return n.addr=ye.lookup_addr(n.addr)||n.addr,n}(r,t);return n.sock_ops.connect(n,o.addr,o.port),0}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return-e.errno}},ea:function(e,r,t,n){try{if(r=ge.getStr(r),r=ge.calculateAt(e,r),-8&t)return-28;var o=pe.lookupPath(r,{follow:!0}).node;if(!o)return-44;var a="";return 4&t&&(a+="r"),2&t&&(a+="w"),1&t&&(a+="x"),a&&pe.nodePermissions(o,a)?-2:0}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return-e.errno}},o:function(e,r,t){ge.varargs=t;try{var n=ge.getStreamFromFD(e);switch(r){case 0:return(o=ge.get())<0?-28:pe.createStream(n,o).fd;case 1:case 2:return 0;case 3:return n.flags;case 4:var o=ge.get();return n.flags|=o,0;case 5:return o=ge.get(),D[o+0>>1]=2,0;case 6:case 7:return 0;case 16:case 8:return-28;case 9:return a=28,F[ft()>>2]=a,-1;default:return-28}}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return-e.errno}var a},Z:function(e,r){try{var t=ge.getStreamFromFD(e);return ge.doStat(pe.stat,t.path,r)}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return-e.errno}},S:function(e,r,t){try{var n=Ee(r,t);return isNaN(n)?-61:(pe.ftruncate(e,n),0)}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return-e.errno}},K:function(e,r,t){ge.varargs=t;try{var n=ge.getStreamFromFD(e);switch(r){case 21509:case 21505:return n.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return n.tty?0:-59;case 21519:if(!n.tty)return-59;var o=ge.get();return F[o>>2]=0,0;case 21520:return n.tty?-28:-59;case 21531:return o=ge.get(),pe.ioctl(n,r,o);case 21523:case 21524:return n.tty?0:-59;default:return-28}}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return-e.errno}},W:function(e,r){try{return e=ge.getStr(e),ge.doStat(pe.lstat,e,r)}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return-e.errno}},X:function(e,r,t,n){try{r=ge.getStr(r);var o=256&n,a=4096&n;return n&=-6401,r=ge.calculateAt(e,r,a),ge.doStat(o?pe.lstat:pe.stat,r,t)}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return-e.errno}},G:function(e,r,t,n){ge.varargs=n;try{r=ge.getStr(r),r=ge.calculateAt(e,r);var o=n?ge.get():0;return pe.open(r,t,o).fd}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return-e.errno}},F:function(e,r,t){try{return he.createSocket(e,r,t).stream.fd}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return-e.errno}},Y:function(e,r){try{return e=ge.getStr(e),ge.doStat(pe.stat,e,r)}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return-e.errno}},r:function(e){var r=be[e];delete be[e];var t=r.elements,n=t.length,o=t.map(function(e){return e.getterReturnType}).concat(t.map(function(e){return e.setterArgumentType})),a=r.rawConstructor,i=r.rawDestructor;je([e],o,function(e){return t.forEach((r,t)=>{var o=e[t],a=r.getter,i=r.getterContext,s=e[t+n],u=r.setter,c=r.setterContext;r.read=(e=>o.fromWireType(a(i,e))),r.write=((e,r)=>{var t=[];u(c,e,s.toWireType(t,r)),_e(t)})}),[{name:r.name,fromWireType:function(e){for(var r=new Array(n),o=0;o>a])},destructorFunction:null})},e:function(e,r,t,n,o,i,s,u,c,l,f,d,p){f=ze(f),i=_r(o,i),u&&(u=_r(s,u)),l&&(l=_r(c,l)),p=_r(d,p);var h=Ae(f);fr(h,function(){Pr("Cannot construct "+f+" due to unbound types",[n])}),je([e,r,t],n?[n]:[],function(r){var t,o;r=r[0],o=n?(t=r.registeredClass).instancePrototype:cr.prototype;var s=Fe(h,function(){if(Object.getPrototypeOf(this)!==c)throw new We("Use 'new' to construct "+f);if(void 0===d.constructor_body)throw new We(f+" has no accessible constructor");var e=d.constructor_body[arguments.length];if(void 0===e)throw new We("Tried to invoke ctor of "+f+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(d.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)}),c=Object.create(o,{constructor:{value:s}});s.prototype=c;var d=new function(e,r,t,n,o,a,i,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=o,this.getActualType=a,this.upcast=i,this.downcast=s,this.pureVirtualFunctions=[]}(f,s,c,p,t,i,u,l),m=new gr(f,d,!0,!1,!1),v=new gr(f+"*",d,!1,!1,!1),w=new gr(f+" const*",d,!1,!0,!1);return Ge[e]={pointerType:v,constPointerType:w},function(e,r,t){a.hasOwnProperty(e)||Oe("Replacing nonexistant public symbol"),void 0!==a[e].overloadTable&&void 0!==t?a[e].overloadTable[t]=r:(a[e]=r,a[e].argCount=t)}(h,s),[m,v,w]})},f:function(e,r,t,n,o,a,i){var s=Dr(t,n);r=ze(r),a=_r(o,a),je([],[e],function(e){var n=(e=e[0]).name+"."+r;function o(){Pr("Cannot call "+n+" due to unbound types",s)}r.startsWith("@@")&&(r=Symbol[r.substring(2)]);var u=e.registeredClass.constructor;return void 0===u[r]?(o.argCount=t-1,u[r]=o):(lr(u,r,n),u[r].overloadTable[t-1]=o),je([],s,function(e){var o=[e[0],null].concat(e.slice(1)),s=Sr(n,o,null,a,i);return void 0===u[r].overloadTable?(s.argCount=t-1,u[r]=s):u[r].overloadTable[t-1]=s,[]}),[]})},g:function(e,r,t,n,o,a){P(r>0);var i=Dr(r,t);o=_r(n,o),je([],[e],function(e){var t="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[r-1])throw new We("Cannot register multiple constructors with identical number of parameters ("+(r-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[r-1]=(()=>{Pr("Cannot construct "+e.name+" due to unbound types",i)}),je([],i,function(n){return n.splice(1,0,null),e.registeredClass.constructor_body[r-1]=Sr(t,n,null,o,a),[]}),[]})},b:function(e,r,t,n,o,a,i,s){var u=Dr(t,n);r=ze(r),a=_r(o,a),je([],[e],function(e){var n=(e=e[0]).name+"."+r;function o(){Pr("Cannot call "+n+" due to unbound types",u)}r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(r);var c=e.registeredClass.instancePrototype,l=c[r];return void 0===l||void 0===l.overloadTable&&l.className!==e.name&&l.argCount===t-2?(o.argCount=t-2,o.className=e.name,c[r]=o):(lr(c,r,n),c[r].overloadTable[t-2]=o),je([],u,function(o){var s=Sr(n,o,e,a,i);return void 0===c[r].overloadTable?(s.argCount=t-2,c[r]=s):c[r].overloadTable[t-2]=s,[]}),[]})},a:function(e,r,t,n,o,a,i,s,u,c){r=ze(r),o=_r(n,o),je([],[e],function(e){var n=(e=e[0]).name+"."+r,l={get:function(){Pr("Cannot access "+n+" due to unbound types",[t,i])},enumerable:!0,configurable:!0};return l.set=u?()=>{Pr("Cannot access "+n+" due to unbound types",[t,i])}:e=>{Be(n+" is a read-only property")},Object.defineProperty(e.registeredClass.instancePrototype,r,l),je([],u?[t,i]:[t],function(t){var i=t[0],l={get:function(){var r=Ar(this,e,n+" getter");return i.fromWireType(o(a,r))},enumerable:!0};if(u){u=_r(s,u);var f=t[1];l.set=function(r){var t=Ar(this,e,n+" setter"),o=[];u(c,t,f.toWireType(o,r)),_e(o)}}return Object.defineProperty(e.registeredClass.instancePrototype,r,l),[]}),[]})},fa:function(e,r){Ue(e,{name:r=ze(r),fromWireType:function(e){var r=xr.toValue(e);return Mr(e),r},toWireType:function(e,r){return xr.toHandle(r)},argPackAdvance:8,readValueFromPointer:ke,destructorFunction:null})},i:function(e,r,t,n){var o=Ne(t);function a(){}r=ze(r),a.values={},Ue(e,{name:r,constructor:a,fromWireType:function(e){return this.constructor.values[e]},toWireType:function(e,r){return r.value},argPackAdvance:8,readValueFromPointer:function(e,r,t){switch(r){case 0:return function(e){var r=t?C:S;return this.fromWireType(r[e])};case 1:return function(e){var r=t?D:A;return this.fromWireType(r[e>>1])};case 2:return function(e){var r=t?F:$;return this.fromWireType(r[e>>2])};default:throw new TypeError("Unknown integer type: "+e)}}(r,o,n),destructorFunction:null}),fr(r,a)},d:function(e,r,t){var n=Nr(e,"enum");r=ze(r);var o=n.constructor,a=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:Fe(n.name+"_"+r,function(){})}});o.values[t]=a,o[r]=a},M:function(e,r,t){var n=Ne(t);Ue(e,{name:r=ze(r),fromWireType:function(e){return e},toWireType:function(e,r){return r},argPackAdvance:8,readValueFromPointer:function(e,r){switch(r){case 2:return function(e){return this.fromWireType(M[e>>2])};case 3:return function(e){return this.fromWireType(O[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}(r,n),destructorFunction:null})},p:function(e,r,t,n,o){r=ze(r),-1===o&&(o=4294967295);var a=Ne(t),i=e=>e;if(0===n){var s=32-8*t;i=(e=>e<>>s)}var u=r.includes("unsigned");Ue(e,{name:r,fromWireType:i,toWireType:u?function(e,r){return this.name,r>>>0}:function(e,r){return this.name,r},argPackAdvance:8,readValueFromPointer:function(e,r,t){switch(r){case 0:return t?function(e){return C[e]}:function(e){return S[e]};case 1:return t?function(e){return D[e>>1]}:function(e){return A[e>>1]};case 2:return t?function(e){return F[e>>2]}:function(e){return $[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}(r,a,0!==n),destructorFunction:null})},l:function(e,r,t){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][r];function o(e){var r=$,t=r[e>>=2],o=r[e+1];return new n(r.buffer,o,t)}Ue(e,{name:t=ze(t),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},L:function(e,r){var t="std::string"===(r=ze(r));Ue(e,{name:r,fromWireType:function(e){var r,n=$[e>>2],o=e+4;if(t)for(var a=o,i=0;i<=n;++i){var s=o+i;if(i==n||0==S[s]){var u=N(a,s-a);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),a=s+1}}else{var c=new Array(n);for(i=0;i>2]=n,t&&o)R(r,S,i,n+1);else if(o)for(var s=0;s255&&(lt(i),Be("String has UTF-16 code units that do not fit in 8 bits")),S[i+s]=u}else for(s=0;sA),s=1):4===r&&(n=Lr,o=Ir,i=Hr,a=(()=>$),s=2),Ue(e,{name:t,fromWireType:function(e){for(var t,o=$[e>>2],i=a(),u=e+4,c=0;c<=o;++c){var l=e+4+c*r;if(c==o||0==i[l>>s]){var f=n(u,l-u);void 0===t?t=f:(t+=String.fromCharCode(0),t+=f),u=l+r}}return lt(e),t},toWireType:function(e,n){"string"!=typeof n&&Be("Cannot pass non-string to C++ string type "+t);var a=i(n),u=ct(4+a+r);return $[u>>2]=a>>s,o(n,u+4,a+r),null!==e&&e.push(lt,u),u},argPackAdvance:8,readValueFromPointer:ke,destructorFunction:function(e){lt(e)}})},q:function(e,r,t,n,o,a){be[e]={name:ze(r),rawConstructor:_r(t,n),rawDestructor:_r(o,a),elements:[]}},ia:function(e,r,t,n,o,a,i,s,u){be[e].elements.push({getterReturnType:r,getter:_r(t,n),getterContext:o,setterArgumentType:a,setter:_r(i,s),setterContext:u})},ja:function(e,r,t,n,o,a){xe[e]={name:ze(r),rawConstructor:_r(t,n),rawDestructor:_r(o,a),fields:[]}},N:function(e,r,t,n,o,a,i,s,u,c){xe[e].fields.push({fieldName:ze(r),getterReturnType:t,getter:_r(n,o),getterContext:a,setterArgumentType:i,setter:_r(s,u),setterContext:c})},ha:function(e,r){Ue(e,{isVoid:!0,name:r=ze(r),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,r){}})},t:function(e,r,t){e=xr.toValue(e),r=Nr(r,"emval::as");var n=[],o=xr.toHandle(n);return $[t>>2]=o,r.toWireType(n,e)},la:function(e,r,t,n,o){return(e=Gr[e])(r=xr.toValue(r),t=qr(t),function(e){var r=[];return $[e>>2]=xr.toHandle(r),r}(n),o)},P:function(e,r,t,n){(e=Gr[e])(r=xr.toValue(r),t=qr(t),null,n)},c:Mr,Q:function(e,r){return(e=xr.toValue(e))==(r=xr.toValue(r))},y:function(e){return 0===e?xr.toHandle(Xr()):(e=qr(e),xr.toHandle(Xr()[e]))},C:function(e,r){var t=function(e,r){for(var t=new Array(e),n=0;n>2],"parameter "+n);return t}(e,r),n=t[0],o=n.name+"_$"+t.slice(1).map(function(e){return e.name}).join("_")+"$",a=Yr[o];if(void 0!==a)return a;for(var i=["retType"],s=[n],u="",c=0;c4&&($r[e].refcount+=1)},D:function(e,r){return(e=xr.toValue(e))instanceof(r=xr.toValue(r))},na:function(e){return"number"==typeof(e=xr.toValue(e))},ma:function(e){return"string"==typeof(e=xr.toValue(e))},O:function(e,r,t,n){e=xr.toValue(e);var o=Kr[r];return o||(o=function(e){for(var r="",t=0;t>2)], 'parameter "+t+"');\nvar arg"+t+" = argType"+t+".readValueFromPointer(args);\nargs += argType"+t+"['argPackAdvance'];\nargTypes += 4;\n";return n+="var obj = new constructor("+r+");\nreturn valueToHandle(obj);\n}\n",new Function("requireRegisteredType","Module","valueToHandle","getMemory",n)(Nr,a,xr.toHandle,()=>$)}(r),Kr[r]=o),o(e,t,n)},n:function(){return xr.toHandle([])},u:function(e){return xr.toHandle(qr(e))},k:function(){return xr.toHandle({})},s:function(e){_e(xr.toValue(e)),Mr(e)},j:function(e,r,t){e=xr.toValue(e),r=xr.toValue(r),t=xr.toValue(t),e[r]=t},h:function(e,r){var t=(e=Nr(e,"_emval_take_value")).readValueFromPointer(r);return xr.toHandle(t)},aa:function(e,r){var t=new Date(1e3*Zr(e));F[r>>2]=t.getUTCSeconds(),F[r+4>>2]=t.getUTCMinutes(),F[r+8>>2]=t.getUTCHours(),F[r+12>>2]=t.getUTCDate(),F[r+16>>2]=t.getUTCMonth(),F[r+20>>2]=t.getUTCFullYear()-1900,F[r+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-n)/864e5|0;F[r+28>>2]=o},ba:function(e,r){var t=new Date(1e3*Zr(e));F[r>>2]=t.getSeconds(),F[r+4>>2]=t.getMinutes(),F[r+8>>2]=t.getHours(),F[r+12>>2]=t.getDate(),F[r+16>>2]=t.getMonth(),F[r+20>>2]=t.getFullYear()-1900,F[r+24>>2]=t.getDay();var n=0|rt(t);F[r+28>>2]=n,F[r+36>>2]=-60*t.getTimezoneOffset();var o=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=0|(a!=i&&t.getTimezoneOffset()==Math.min(i,a));F[r+32>>2]=s},ca:function(e){var r=new Date(F[e+20>>2]+1900,F[e+16>>2],F[e+12>>2],F[e+8>>2],F[e+4>>2],F[e>>2],0),t=F[e+32>>2],n=r.getTimezoneOffset(),o=new Date(r.getFullYear(),0,1),a=new Date(r.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=Math.min(i,a);if(t<0)F[e+32>>2]=Number(a!=i&&s==n);else if(t>0!=(s==n)){var u=Math.max(i,a),c=t>0?s:u;r.setTime(r.getTime()+6e4*(c-n))}F[e+24>>2]=r.getDay();var l=0|rt(r);return F[e+28>>2]=l,F[e>>2]=r.getSeconds(),F[e+4>>2]=r.getMinutes(),F[e+8>>2]=r.getHours(),F[e+12>>2]=r.getDate(),F[e+16>>2]=r.getMonth(),F[e+20>>2]=r.getYear(),r.getTime()/1e3|0},da:function(e,r,t){var n=(new Date).getFullYear(),o=new Date(n,0,1),a=new Date(n,6,1),i=o.getTimezoneOffset(),s=a.getTimezoneOffset(),u=Math.max(i,s);function c(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}$[e>>2]=60*u,F[r>>2]=Number(i!=s);var l=c(o),f=c(a),d=tt(l),p=tt(f);s>2]=d,$[t+4>>2]=p):($[t>>2]=p,$[t+4>>2]=d)},z:function(){K("")},I:function(){return Date.now()},H:Jr,V:function(e){var r=S.length;if((e>>>=0)>2147483648)return!1;let t=(e,r)=>e+(r-e%r)%r;for(var n=1;n<=4;n*=2){var o=r*(1+.2/n);if(o=Math.min(o,e+100663296),nt(Math.min(2147483648,t(Math.max(e,o),65536))))return!0}return!1},_:function(e,r){var t=0;return at().forEach(function(n,o){var a=r+t;$[e+4*o>>2]=a,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);t||(C[r>>0]=0)}(n,a),t+=n.length+1}),0},$:function(e,r){var t=at();$[e>>2]=t.length;var n=0;return t.forEach(function(e){n+=e.length+1}),$[r>>2]=n,0},x:function(e){try{var r=ge.getStreamFromFD(e);return pe.close(r),0}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return e.errno}},J:function(e,r,t,n){try{var o=function(e,r,t,n){for(var o=0,a=0;a>2],s=$[r+4>>2];r+=8;var u=pe.read(e,C,i,s,n);if(u<0)return-1;if(o+=u,u>2]=o,0}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return e.errno}},R:function(e,r,t,n,o){try{var a=Ee(r,t);if(isNaN(a))return 61;var i=ge.getStreamFromFD(e);return pe.llseek(i,a,n),ee=[i.position>>>0,(Q=i.position,+Math.abs(Q)>=1?Q>0?(0|Math.min(+Math.floor(Q/4294967296),4294967295))>>>0:~~+Math.ceil((Q-+(~~Q>>>0))/4294967296)>>>0:0)],F[o>>2]=ee[0],F[o+4>>2]=ee[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return e.errno}},A:function(e,r,t,n){try{var o=function(e,r,t,n){for(var o=0,a=0;a>2],s=$[r+4>>2];r+=8;var u=pe.write(e,C,i,s,n);if(u<0)return-1;o+=u,void 0!==n&&(n+=u)}return o}(ge.getStreamFromFD(e),r,t);return $[n>>2]=o,0}catch(e){if(void 0===pe||!(e instanceof pe.ErrnoError))throw e;return e.errno}}},ct=(function(){var e={a:ut};function r(e,r){var t,n=e.exports;a.asm=n,_=a.asm.oa,W(),B=a.asm.qa,t=a.asm.pa,L.unshift(t),Y()}function t(e){r(e.instance)}function o(r){return function(){if(!E&&(d||p)){if("function"==typeof fetch&&!ne(Z))return fetch(Z,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+Z+"'";return e.arrayBuffer()}).catch(function(){return oe(Z)});if(s)return new Promise(function(e,r){s(Z,function(r){e(new Uint8Array(r))},r)})}return Promise.resolve().then(function(){return oe(Z)})}().then(function(r){return WebAssembly.instantiate(r,e)}).then(function(e){return e}).then(r,function(e){g("failed to asynchronously prepare wasm: "+e),K(e)})}if(X(),a.instantiateWasm)try{return a.instantiateWasm(e,r)}catch(e){g("Module.instantiateWasm callback failed with error: "+e),n(e)}(E||"function"!=typeof WebAssembly.instantiateStreaming||te(Z)||ne(Z)||h||"function"!=typeof fetch?o(t):fetch(Z,{credentials:"same-origin"}).then(function(r){return WebAssembly.instantiateStreaming(r,e).then(t,function(e){return g("wasm streaming compile failed: "+e),g("falling back to ArrayBuffer instantiation"),o(t)})})).catch(n)}(),a.___wasm_call_ctors=function(){return(a.___wasm_call_ctors=a.asm.pa).apply(null,arguments)},a._malloc=function(){return(ct=a._malloc=a.asm.ra).apply(null,arguments)}),lt=a._free=function(){return(lt=a._free=a.asm.sa).apply(null,arguments)},ft=a.___errno_location=function(){return(ft=a.___errno_location=a.asm.ta).apply(null,arguments)},dt=a.___getTypeName=function(){return(dt=a.___getTypeName=a.asm.ua).apply(null,arguments)},pt=(a.__embind_initialize_bindings=function(){return(a.__embind_initialize_bindings=a.asm.va).apply(null,arguments)},a._htons=function(){return(pt=a._htons=a.asm.wa).apply(null,arguments)}),ht=a._ntohs=function(){return(ht=a._ntohs=a.asm.xa).apply(null,arguments)},mt=a.___cxa_is_pointer_type=function(){return(mt=a.___cxa_is_pointer_type=a.asm.ya).apply(null,arguments)};a.dynCall_ji=function(){return(a.dynCall_ji=a.asm.za).apply(null,arguments)},a.dynCall_vij=function(){return(a.dynCall_vij=a.asm.Aa).apply(null,arguments)},a.dynCall_jiji=function(){return(a.dynCall_jiji=a.asm.Ba).apply(null,arguments)};function vt(e){function r(){st||(st=!0,a.calledRun=!0,T||(!0,he.root=pe.mount(he,{},null),a.noFSInit||pe.init.initialized||pe.init(),pe.ignorePermissions=!1,le.init(),ie(L),t(a),a.onRuntimeInitialized&&a.onRuntimeInitialized(),function(){if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)e=a.postRun.shift(),I.unshift(e);var e;ie(I)}()))}e=e||l,H>0||(!function(){if(a.preRun)for("function"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)e=a.preRun.shift(),U.unshift(e);var e;ie(U)}(),H>0||(a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),r()},1)):r()))}if(q=function e(){st||vt(),st||(q=e)},a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.pop()();return vt(),o.ready}})();"object"==typeof exports&&"object"==typeof module?module.exports=rhino3dm:"function"==typeof define&&define.amd?define([],function(){return rhino3dm}):"object"==typeof exports&&(exports.rhino3dm=rhino3dm); \ No newline at end of file diff --git a/public/assets/lib/vendor/three/rhino3dm/rhino3dm.module.js b/public/assets/lib/vendor/three/rhino3dm/rhino3dm.module.js deleted file mode 100644 index 14ec1330..00000000 --- a/public/assets/lib/vendor/three/rhino3dm/rhino3dm.module.js +++ /dev/null @@ -1,16 +0,0 @@ - -var rhino3dm = (() => { - var _scriptDir = import.meta.url; - - return ( -async function(config) { - var rhino3dm = config || {}; - -var Module=typeof rhino3dm!="undefined"?rhino3dm:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}if(ENVIRONMENT_IS_NODE){const{createRequire:createRequire}=await import("module");var require=createRequire(import.meta.url);var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=require("url").fileURLToPath(new URL("./",import.meta.url))}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var POINTER_SIZE=4;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="rhino3dm.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("rhino3dm.wasm",import.meta.url).href}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["oa"];updateMemoryViews();wasmTable=Module["asm"]["qa"];addOnInit(Module["asm"]["pa"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return()=>{crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return()=>crypto_module["randomBytes"](1)[0]}catch(e){}}return()=>abort("randomDevice")}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SOCKFS={mount:function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,"/",16384|511,0)},createSocket:function(family,type,protocol){type&=~526336;var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket:function(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll:function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl:function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read:function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write:function(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close:function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname:function(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer:function(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}var opts=undefined;if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer:function(sock,addr,port){return sock.peers[addr+":"+port]},addPeer:function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer:function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents:function(sock,peer){var first=true;var handleOpen=function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll:function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl:function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return 28}},close:function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>2]=value;return value}function inetNtop4(addr){return(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)}function inetNtop6(ints){var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}}function inetPton4(str){var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0}function jstoi_q(str){return parseInt(str)}function inetPton6(str){var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_connect(fd,addr,addrlen){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function ___syscall_ftruncate64(fd,length_low,length_high){try{var length=convertI32PairToI53Checked(length_low,length_high);if(isNaN(length))return-61;FS.ftruncate(fd,length);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}var tupleRegistrations={};function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function __embind_finalize_value_array(rawTupleType){var reg=tupleRegistrations[rawTupleType];delete tupleRegistrations[rawTupleType];var elements=reg.elements;var elementsLength=elements.length;var elementTypes=elements.map(function(elt){return elt.getterReturnType}).concat(elements.map(function(elt){return elt.setterArgumentType}));var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;whenDependentTypesAreResolved([rawTupleType],elementTypes,function(elementTypes){elements.forEach((elt,i)=>{var getterReturnType=elementTypes[i];var getter=elt.getter;var getterContext=elt.getterContext;var setterArgumentType=elementTypes[i+elementsLength];var setter=elt.setter;var setterContext=elt.setterContext;elt.read=ptr=>{return getterReturnType["fromWireType"](getter(getterContext,ptr))};elt.write=(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,o));runDestructors(destructors)}});return[{name:reg.name,"fromWireType":function(ptr){var rv=new Array(elementsLength);for(var i=0;ifield.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName;var getterReturnType=fieldTypes[i];var getter=field.getter;var getterContext=field.getterContext;var setterArgumentType=fieldTypes[i+fieldRecords.length];var setter=field.setter;var setterContext=field.setterContext;fields[fieldName]={read:ptr=>{return getterReturnType["fromWireType"](getter(getterContext,ptr))},write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,o));runDestructors(destructors)}}});return[{name:reg.name,"fromWireType":function(ptr){var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},"toWireType":function(destructors,o){for(var fieldName in fields){if(!(fieldName in o)){throw new TypeError('Missing field: "'+fieldName+'"')}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:rawDestructor}]})}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}var name=registeredInstance.name;if(!rawType){throwBindingError('type "'+name+'" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError("Cannot register type '"+name+"' twice")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":8,"readValueFromPointer":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}var finalizationRegistry=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}var delayFunction=undefined;function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function attachFinalizer(handle){if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle["delete"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError("Cannot construct "+name+" due to unbound types",[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError("Tried to invoke ctor of "+name+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(registeredClass.constructor_body).toString()+") parameters instead!")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2])}return array}function __embind_register_class_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,fn){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}var proto=classType.registeredClass.constructor;if(undefined===proto[methodName]){unboundTypesHandler.argCount=argCount-1;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-1]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));var func=craftInvokerFunction(humanName,invokerArgsArray,null,rawInvoker,fn);if(undefined===proto[methodName].overloadTable){func.argCount=argCount-1;proto[methodName]=func}else{proto[methodName].overloadTable[argCount-1]=func}return[]});return[]})}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!")}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})}function validateThis(this_,classType,humanName){if(!(this_ instanceof Object)){throwBindingError(humanName+' with invalid "this": '+this_)}if(!(this_ instanceof classType.registeredClass.constructor)){throwBindingError(humanName+' incompatible with "this" of type '+this_.constructor.name)}if(!this_.$$.ptr){throwBindingError("cannot call emscripten binding method "+humanName+" on deleted object")}return upcastPointer(this_.$$.ptr,this_.$$.ptrType.registeredClass,classType.registeredClass)}function __embind_register_class_property(classType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){fieldName=readLatin1String(fieldName);getter=embind__requireFunction(getterSignature,getter);whenDependentTypesAreResolved([],[classType],function(classType){classType=classType[0];var humanName=classType.name+"."+fieldName;var desc={get:function(){throwUnboundTypeError("Cannot access "+humanName+" due to unbound types",[getterReturnType,setterArgumentType])},enumerable:true,configurable:true};if(setter){desc.set=()=>{throwUnboundTypeError("Cannot access "+humanName+" due to unbound types",[getterReturnType,setterArgumentType])}}else{desc.set=v=>{throwBindingError(humanName+" is a read-only property")}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],function(types){var getterReturnType=types[0];var desc={get:function(){var ptr=validateThis(this,classType,humanName+" getter");return getterReturnType["fromWireType"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+" setter");var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function enumReadValueFromPointer(name,shift,signed){switch(shift){case 0:return function(pointer){var heap=signed?HEAP8:HEAPU8;return this["fromWireType"](heap[pointer])};case 1:return function(pointer){var heap=signed?HEAP16:HEAPU16;return this["fromWireType"](heap[pointer>>1])};case 2:return function(pointer){var heap=signed?HEAP32:HEAPU32;return this["fromWireType"](heap[pointer>>2])};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_enum(rawType,name,size,isSigned){var shift=getShiftFromSize(size);name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,"fromWireType":function(c){return this.constructor.values[c]},"toWireType":function(destructors,c){return c.value},"argPackAdvance":8,"readValueFromPointer":enumReadValueFromPointer(name,shift,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function __embind_register_enum_value(rawEnumType,name,enumValue){var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(enumType.name+"_"+name,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value}function embindRepr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_value_array(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){tupleRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),elements:[]}}function __embind_register_value_array_element(rawTupleType,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){tupleRegistrations[rawTupleType].elements.push({getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})}function __embind_register_value_object(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}}function __embind_register_value_object_field(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function __emval_as(handle,returnType,destructorsRef){handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=Emval.toHandle(destructors);HEAPU32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}function emval_allocateDestructors(destructorsRef){var destructors=[];HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors);return destructors}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol}var emval_methodCallers=[];function __emval_call_method(caller,handle,methodName,destructorsRef,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);return caller(handle,methodName,emval_allocateDestructors(destructorsRef),args)}function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function __emval_equals(first,second){first=Emval.toValue(first);second=Emval.toValue(second);return first==second}function emval_get_global(){if(typeof globalThis=="object"){return globalThis}return function(){return Function}()("return this")()}function __emval_get_global(name){if(name===0){return Emval.toHandle(emval_get_global())}else{name=getStringOrSymbol(name);return Emval.toHandle(emval_get_global()[name])}}function emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a}var emval_registeredMethods=[];function __emval_get_method_caller(argCount,argTypes){var types=emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=["retType"];var args=[retType];var argsList="";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function __emval_instanceof(object,constructor){object=Emval.toValue(object);constructor=Emval.toValue(constructor);return object instanceof constructor}function __emval_is_number(handle){handle=Emval.toValue(handle);return typeof handle=="number"}function __emval_is_string(handle){handle=Emval.toValue(handle);return typeof handle=="string"}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;iHEAPU32;var functionBody="return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n"+" var HEAPU32 = getMemory();\n";for(var i=0;i>2)], 'parameter "+i+"');\n"+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n"+"argTypes += 4;\n"}functionBody+="var obj = new constructor("+argsList+");\n"+"return valueToHandle(obj);\n"+"}\n";return new Function("requireRegisteredType","Module","valueToHandle","getMemory",functionBody)(requireRegisteredType,Module,Emval.toHandle,getMemory)}var emval_newers={};function __emval_new(handle,argCount,argTypes,args){handle=Emval.toValue(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer}return newer(handle,argTypes,args)}function __emval_new_array(){return Emval.toHandle([])}function __emval_new_cstring(v){return Emval.toHandle(getStringOrSymbol(v))}function __emval_new_object(){return Emval.toHandle({})}function __emval_run_destructors(handle){var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}function __emval_set_property(handle,key,value){handle=Emval.toValue(handle);key=Emval.toValue(key);value=Emval.toValue(value);handle[key]=value}function __emval_take_value(type,arg){type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)}function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296}function __gmtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}var __MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var __MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];function __yday_from_date(date){var isLeapYear=__isLeapYear(date.getFullYear());var monthDaysCumulative=isLeapYear?__MONTH_DAYS_LEAP_CUMULATIVE:__MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday}function __localtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=__yday_from_date(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=__yday_from_date(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getYear();return date.getTime()/1e3|0}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function __tzset_js(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAPU32[tzname+4>>2]=summerNamePtr}else{HEAPU32[tzname>>2]=summerNamePtr;HEAPU32[tzname+4>>2]=winterNamePtr}}function _abort(){abort("")}function _emscripten_date_now(){return Date.now()}function getHeapMax(){return 2147483648}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else _emscripten_get_now=()=>performance.now();function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();InternalError=Module["InternalError"]=extendError(Error,"InternalError");embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var asmLibraryArg={"v":___cxa_throw,"U":___syscall_connect,"ea":___syscall_faccessat,"o":___syscall_fcntl64,"Z":___syscall_fstat64,"S":___syscall_ftruncate64,"K":___syscall_ioctl,"W":___syscall_lstat64,"X":___syscall_newfstatat,"G":___syscall_openat,"F":___syscall_socket,"Y":___syscall_stat64,"r":__embind_finalize_value_array,"ka":__embind_finalize_value_object,"T":__embind_register_bigint,"ga":__embind_register_bool,"e":__embind_register_class,"f":__embind_register_class_class_function,"g":__embind_register_class_constructor,"b":__embind_register_class_function,"a":__embind_register_class_property,"fa":__embind_register_emval,"i":__embind_register_enum,"d":__embind_register_enum_value,"M":__embind_register_float,"p":__embind_register_integer,"l":__embind_register_memory_view,"L":__embind_register_std_string,"B":__embind_register_std_wstring,"q":__embind_register_value_array,"ia":__embind_register_value_array_element,"ja":__embind_register_value_object,"N":__embind_register_value_object_field,"ha":__embind_register_void,"t":__emval_as,"la":__emval_call_method,"P":__emval_call_void_method,"c":__emval_decref,"Q":__emval_equals,"y":__emval_get_global,"C":__emval_get_method_caller,"E":__emval_get_module_property,"w":__emval_get_property,"m":__emval_incref,"D":__emval_instanceof,"na":__emval_is_number,"ma":__emval_is_string,"O":__emval_new,"n":__emval_new_array,"u":__emval_new_cstring,"k":__emval_new_object,"s":__emval_run_destructors,"j":__emval_set_property,"h":__emval_take_value,"aa":__gmtime_js,"ba":__localtime_js,"ca":__mktime_js,"da":__tzset_js,"z":_abort,"I":_emscripten_date_now,"H":_emscripten_get_now,"V":_emscripten_resize_heap,"_":_environ_get,"$":_environ_sizes_get,"x":_fd_close,"J":_fd_read,"R":_fd_seek,"A":_fd_write};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["pa"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ra"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["sa"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ta"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["ua"]).apply(null,arguments)};var __embind_initialize_bindings=Module["__embind_initialize_bindings"]=function(){return(__embind_initialize_bindings=Module["__embind_initialize_bindings"]=Module["asm"]["va"]).apply(null,arguments)};var _htons=Module["_htons"]=function(){return(_htons=Module["_htons"]=Module["asm"]["wa"]).apply(null,arguments)};var _ntohs=Module["_ntohs"]=function(){return(_ntohs=Module["_ntohs"]=Module["asm"]["xa"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["ya"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["za"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["Aa"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Ba"]).apply(null,arguments)};var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); - - - return rhino3dm.ready -} -); -})(); -export default rhino3dm; \ No newline at end of file diff --git a/public/assets/lib/vendor/three/rhino3dm/rhino3dm.module.min.js b/public/assets/lib/vendor/three/rhino3dm/rhino3dm.module.min.js deleted file mode 100644 index 43b0bef7..00000000 --- a/public/assets/lib/vendor/three/rhino3dm/rhino3dm.module.min.js +++ /dev/null @@ -1 +0,0 @@ -var rhino3dm=(()=>{var e=import.meta.url;return async function(r){var t,n,o=r||{},a=void 0!==o?o:{};a.ready=new Promise(function(e,r){t=e,n=r});var i,s,u,c=Object.assign({},a),l=[],f="./this.program",d="object"==typeof window,p="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";if(h){const{createRequire:e}=await import("module");var v=e(import.meta.url),w=v("fs"),y=v("path");m=p?y.dirname(m)+"/":v("url").fileURLToPath(new URL("./",import.meta.url)),i=((e,r)=>(e=oe(e)?new URL(e):y.normalize(e),w.readFileSync(e,r?void 0:"utf8"))),u=(e=>{var r=i(e,!0);return r.buffer||(r=new Uint8Array(r)),r}),s=((e,r,t)=>{e=oe(e)?new URL(e):y.normalize(e),w.readFile(e,function(e,n){e?t(e):r(n.buffer)})}),process.argv.length>1&&(f=process.argv[1].replace(/\\/g,"/")),l=process.argv.slice(2),process.on("uncaughtException",function(e){if(!(e instanceof ie))throw e}),process.on("unhandledRejection",function(e){throw e}),(e,r)=>{if(T)throw process.exitCode=e,r;!function(e){if(e instanceof ie)return;E("exiting due to exception: "+e)}(r),process.exit(e)},a.inspect=function(){return"[Emscripten Module object]"}}else(d||p)&&(p?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),e&&(m=e),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",i=(e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText}),p&&(u=(e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)})),s=((e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=(()=>{200==n.status||0==n.status&&n.response?r(n.response):t()}),n.onerror=t,n.send(null)}),e=>document.title=e);var g=a.print||console.log.bind(console),E=a.printErr||console.warn.bind(console);Object.assign(a,c),c=null,a.arguments&&(l=a.arguments),a.thisProgram&&(f=a.thisProgram),a.quit&&a.quit;var b,_=4;a.wasmBinary&&(b=a.wasmBinary);var k,T=a.noExitRuntime||!0;"object"!=typeof WebAssembly&&Z("no native wasm support detected");var P=!1;function C(e,r){e||Z(r)}var S,D,A,F,$,M,O,j,x="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function R(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;if(o-r>16&&e.buffer&&x)return x.decode(e.subarray(r,o));for(var a="";r>10,56320|1023&c)}}else a+=String.fromCharCode((31&i)<<6|s)}else a+=String.fromCharCode(i)}return a}function N(e,r){return e?R(D,e,r):""}function z(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i);if(s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function U(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r}function W(){var e=k.buffer;a.HEAP8=S=new Int8Array(e),a.HEAP16=A=new Int16Array(e),a.HEAP32=$=new Int32Array(e),a.HEAPU8=D=new Uint8Array(e),a.HEAPU16=F=new Uint16Array(e),a.HEAPU32=M=new Uint32Array(e),a.HEAPF32=O=new Float32Array(e),a.HEAPF64=j=new Float64Array(e)}a.INITIAL_MEMORY;var B,L=[],I=[],H=[];var V=0,q=null,G=null;function X(e){return e}function Y(e){V++,a.monitorRunDependencies&&a.monitorRunDependencies(V)}function K(e){if(V--,a.monitorRunDependencies&&a.monitorRunDependencies(V),0==V&&(null!==q&&(clearInterval(q),q=null),G)){var r=G;G=null,r()}}function Z(e){a.onAbort&&a.onAbort(e),E(e="Aborted("+e+")"),P=!0,1,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw n(r),r}var J,Q,ee,re,te="data:application/octet-stream;base64,";function ne(e){return e.startsWith(te)}function oe(e){return e.startsWith("file://")}function ae(e){try{if(e==J&&b)return new Uint8Array(b);if(u)return u(e);throw"both async and sync fetching of the wasm failed"}catch(e){Z(e)}}function ie(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function se(e){for(;e.length>0;)e.shift()(a)}a.locateFile?ne(J="rhino3dm.wasm")||(Q=J,J=a.locateFile?a.locateFile(Q,m):m+Q):J=new URL("rhino3dm.wasm",import.meta.url).href;var ue={isAbs:e=>"/"===e.charAt(0),splitPath:e=>{return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=ue.isAbs(e),t="/"===e.substr(-1);return(e=ue.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=ue.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=ue.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments);return ue.normalize(e.join("/"))},join2:(e,r)=>ue.normalize(e+"/"+r)},ce={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:he.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=ue.isAbs(n)}return(r?"/":"")+(e=ue.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=ce.resolve(e).substr(1),r=ce.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t:U(e)+1,o=new Array(n),a=z(e,o,0,o.length);return r&&(o.length=a),o}var fe={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){fe.ttys[e]={input:[],output:[],ops:r},he.registerDevice(e,fe.stream_ops)},stream_ops:{open:function(e){var r=fe.ttys[e.node.rdev];if(!r)throw new he.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new he.ErrnoError(60);for(var a=0,i=0;i0?t.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(r=window.prompt("Input: "))&&(r+="\n"):"function"==typeof readline&&null!==(r=readline())&&(r+="\n");if(!r)return null;e.input=le(r,!0)}return e.input.shift()},put_char:function(e,r){null===r||10===r?(g(R(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(g(R(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(E(R(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(E(R(e.output,0)),e.output=[])}}};function de(e){Z()}var pe={ops_table:null,mount:function(e){return pe.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(he.isBlkdev(t)||he.isFIFO(t))throw new he.ErrnoError(63);pe.ops_table||(pe.ops_table={dir:{node:{getattr:pe.node_ops.getattr,setattr:pe.node_ops.setattr,lookup:pe.node_ops.lookup,mknod:pe.node_ops.mknod,rename:pe.node_ops.rename,unlink:pe.node_ops.unlink,rmdir:pe.node_ops.rmdir,readdir:pe.node_ops.readdir,symlink:pe.node_ops.symlink},stream:{llseek:pe.stream_ops.llseek}},file:{node:{getattr:pe.node_ops.getattr,setattr:pe.node_ops.setattr},stream:{llseek:pe.stream_ops.llseek,read:pe.stream_ops.read,write:pe.stream_ops.write,allocate:pe.stream_ops.allocate,mmap:pe.stream_ops.mmap,msync:pe.stream_ops.msync}},link:{node:{getattr:pe.node_ops.getattr,setattr:pe.node_ops.setattr,readlink:pe.node_ops.readlink},stream:{}},chrdev:{node:{getattr:pe.node_ops.getattr,setattr:pe.node_ops.setattr},stream:he.chrdev_stream_ops}});var o=he.createNode(e,r,t,n);return he.isDir(o.mode)?(o.node_ops=pe.ops_table.dir.node,o.stream_ops=pe.ops_table.dir.stream,o.contents={}):he.isFile(o.mode)?(o.node_ops=pe.ops_table.file.node,o.stream_ops=pe.ops_table.file.stream,o.usedBytes=0,o.contents=null):he.isLink(o.mode)?(o.node_ops=pe.ops_table.link.node,o.stream_ops=pe.ops_table.link.stream):he.isChrdev(o.mode)&&(o.node_ops=pe.ops_table.chrdev.node,o.stream_ops=pe.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r)if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=he.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,he.isDir(e.mode)?r.size=4096:he.isFile(e.mode)?r.size=e.usedBytes:he.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&pe.resizeFileStorage(e,r.size)},lookup:function(e,r){throw he.genericErrors[44]},mknod:function(e,r,t,n){return pe.createNode(e,r,t,n)},rename:function(e,r,t){if(he.isDir(e.mode)){var n;try{n=he.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new he.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=he.lookupNode(e,r);for(var n in t.contents)throw new he.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=pe.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!he.isLink(e.mode))throw new he.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||t+r{if(!(e=ce.resolve(e)))return{path:"",node:null};if((r=Object.assign({follow_mount:!0,recurse_count:0},r)).recurse_count>8)throw new he.ErrnoError(32);for(var t=e.split("/").filter(e=>!!e),n=he.root,o="/",a=0;a40)throw new he.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var r;;){if(he.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?t+"/"+r:t+r:t}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%he.nameTable.length},hashAddNode:e=>{var r=he.hashName(e.parent.id,e.name);e.name_next=he.nameTable[r],he.nameTable[r]=e},hashRemoveNode:e=>{var r=he.hashName(e.parent.id,e.name);if(he.nameTable[r]===e)he.nameTable[r]=e.name_next;else for(var t=he.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=he.mayLookup(e);if(t)throw new he.ErrnoError(t,e);for(var n=he.hashName(e.id,r),o=he.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return he.lookup(e,r)},createNode:(e,r,t,n)=>{var o=new he.FSNode(e,r,t,n);return he.hashAddNode(o),o},destroyNode:e=>{he.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=he.flagModes[e];if(void 0===r)throw new Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>he.ignorePermissions?0:(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var r=he.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate:(e,r)=>{try{he.lookupNode(e,r);return 20}catch(e){}return he.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{var n;try{n=he.lookupNode(e,r)}catch(e){return e.errno}var o=he.nodePermissions(e,"wx");if(o)return o;if(t){if(!he.isDir(n.mode))return 54;if(he.isRoot(n)||he.getPath(n)===he.cwd())return 10}else if(he.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?he.isLink(e.mode)?32:he.isDir(e.mode)&&("r"!==he.flagsToPermissionString(r)||512&r)?31:he.nodePermissions(e,he.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,r=he.MAX_OPEN_FDS)=>{for(var t=e;t<=r;t++)if(!he.streams[t])return t;throw new he.ErrnoError(33)},getStream:e=>he.streams[e],createStream:(e,r,t)=>{he.FSStream||(he.FSStream=function(){this.shared={}},he.FSStream.prototype={},Object.defineProperties(he.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new he.FSStream,e);var n=he.nextfd(r,t);return e.fd=n,he.streams[n]=e,e},closeStream:e=>{he.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=he.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new he.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{he.devices[e]={stream_ops:r}},getDevice:e=>he.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),he.syncFSRequests++,he.syncFSRequests>1&&E("warning: "+he.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=he.getMounts(he.root.mount),n=0;function o(e){return he.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach(r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)})},mount:(e,r,t)=>{var n,o="/"===t,a=!t;if(o&&he.root)throw new he.ErrnoError(10);if(!o&&!a){var i=he.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,he.isMountpoint(n))throw new he.ErrnoError(10);if(!he.isDir(n.mode))throw new he.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?he.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:e=>{var r=he.lookupPath(e,{follow_mount:!1});if(!he.isMountpoint(r.node))throw new he.ErrnoError(28);var t=r.node,n=t.mounted,o=he.getMounts(n);Object.keys(he.nameTable).forEach(e=>{for(var r=he.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&he.destroyNode(r),r=t}}),t.mounted=null;var a=t.mount.mounts.indexOf(n);t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=he.lookupPath(e,{parent:!0}).node,o=ue.basename(e);if(!o||"."===o||".."===o)throw new he.ErrnoError(28);var a=he.mayCreate(n,o);if(a)throw new he.ErrnoError(a);if(!n.node_ops.mknod)throw new he.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=void 0!==r?r:438,r&=4095,r|=32768,he.mknod(e,r,0)),mkdir:(e,r)=>(r=void 0!==r?r:511,r&=1023,r|=16384,he.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,he.mknod(e,r,t)),symlink:(e,r)=>{if(!ce.resolve(e))throw new he.ErrnoError(44);var t=he.lookupPath(r,{parent:!0}).node;if(!t)throw new he.ErrnoError(44);var n=ue.basename(r),o=he.mayCreate(t,n);if(o)throw new he.ErrnoError(o);if(!t.node_ops.symlink)throw new he.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o=ue.dirname(e),a=ue.dirname(r),i=ue.basename(e),s=ue.basename(r);if(t=he.lookupPath(e,{parent:!0}).node,n=he.lookupPath(r,{parent:!0}).node,!t||!n)throw new he.ErrnoError(44);if(t.mount!==n.mount)throw new he.ErrnoError(75);var u,c=he.lookupNode(t,i),l=ce.relative(e,a);if("."!==l.charAt(0))throw new he.ErrnoError(28);if("."!==(l=ce.relative(r,o)).charAt(0))throw new he.ErrnoError(55);try{u=he.lookupNode(n,s)}catch(e){}if(c!==u){var f=he.isDir(c.mode),d=he.mayDelete(t,i,f);if(d)throw new he.ErrnoError(d);if(d=u?he.mayDelete(n,s,f):he.mayCreate(n,s))throw new he.ErrnoError(d);if(!t.node_ops.rename)throw new he.ErrnoError(63);if(he.isMountpoint(c)||u&&he.isMountpoint(u))throw new he.ErrnoError(10);if(n!==t&&(d=he.nodePermissions(t,"w")))throw new he.ErrnoError(d);he.hashRemoveNode(c);try{t.node_ops.rename(c,n,s)}catch(e){throw e}finally{he.hashAddNode(c)}}},rmdir:e=>{var r=he.lookupPath(e,{parent:!0}).node,t=ue.basename(e),n=he.lookupNode(r,t),o=he.mayDelete(r,t,!0);if(o)throw new he.ErrnoError(o);if(!r.node_ops.rmdir)throw new he.ErrnoError(63);if(he.isMountpoint(n))throw new he.ErrnoError(10);r.node_ops.rmdir(r,t),he.destroyNode(n)},readdir:e=>{var r=he.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new he.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=he.lookupPath(e,{parent:!0}).node;if(!r)throw new he.ErrnoError(44);var t=ue.basename(e),n=he.lookupNode(r,t),o=he.mayDelete(r,t,!1);if(o)throw new he.ErrnoError(o);if(!r.node_ops.unlink)throw new he.ErrnoError(63);if(he.isMountpoint(n))throw new he.ErrnoError(10);r.node_ops.unlink(r,t),he.destroyNode(n)},readlink:e=>{var r=he.lookupPath(e).node;if(!r)throw new he.ErrnoError(44);if(!r.node_ops.readlink)throw new he.ErrnoError(28);return ce.resolve(he.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=he.lookupPath(e,{follow:!r}).node;if(!t)throw new he.ErrnoError(44);if(!t.node_ops.getattr)throw new he.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>he.stat(e,!0),chmod:(e,r,t)=>{var n;"string"==typeof e?n=he.lookupPath(e,{follow:!t}).node:n=e;if(!n.node_ops.setattr)throw new he.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{he.chmod(e,r,!0)},fchmod:(e,r)=>{var t=he.getStream(e);if(!t)throw new he.ErrnoError(8);he.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;"string"==typeof e?o=he.lookupPath(e,{follow:!n}).node:o=e;if(!o.node_ops.setattr)throw new he.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{he.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=he.getStream(e);if(!n)throw new he.ErrnoError(8);he.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new he.ErrnoError(28);var t;"string"==typeof e?t=he.lookupPath(e,{follow:!0}).node:t=e;if(!t.node_ops.setattr)throw new he.ErrnoError(63);if(he.isDir(t.mode))throw new he.ErrnoError(31);if(!he.isFile(t.mode))throw new he.ErrnoError(28);var n=he.nodePermissions(t,"w");if(n)throw new he.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=he.getStream(e);if(!t)throw new he.ErrnoError(8);if(0==(2097155&t.flags))throw new he.ErrnoError(28);he.truncate(t.node,r)},utime:(e,r,t)=>{var n=he.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(e,r,t)=>{if(""===e)throw new he.ErrnoError(44);var n;if(t=void 0===t?438:t,t=64&(r="string"==typeof r?he.modeStringToFlags(r):r)?4095&t|32768:0,"object"==typeof e)n=e;else{e=ue.normalize(e);try{n=he.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var o=!1;if(64&r)if(n){if(128&r)throw new he.ErrnoError(20)}else n=he.mknod(e,t,0),o=!0;if(!n)throw new he.ErrnoError(44);if(he.isChrdev(n.mode)&&(r&=-513),65536&r&&!he.isDir(n.mode))throw new he.ErrnoError(54);if(!o){var i=he.mayOpen(n,r);if(i)throw new he.ErrnoError(i)}512&r&&!o&&he.truncate(n,0),r&=-131713;var s=he.createStream({node:n,path:he.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),!a.logReadFiles||1&r||(he.readFiles||(he.readFiles={}),e in he.readFiles||(he.readFiles[e]=1)),s},close:e=>{if(he.isClosed(e))throw new he.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{he.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(he.isClosed(e))throw new he.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new he.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new he.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new he.ErrnoError(28);if(he.isClosed(e))throw new he.ErrnoError(8);if(1==(2097155&e.flags))throw new he.ErrnoError(8);if(he.isDir(e.node.mode))throw new he.ErrnoError(31);if(!e.stream_ops.read)throw new he.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new he.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new he.ErrnoError(28);if(he.isClosed(e))throw new he.ErrnoError(8);if(0==(2097155&e.flags))throw new he.ErrnoError(8);if(he.isDir(e.node.mode))throw new he.ErrnoError(31);if(!e.stream_ops.write)throw new he.ErrnoError(28);e.seekable&&1024&e.flags&&he.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new he.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(he.isClosed(e))throw new he.ErrnoError(8);if(r<0||t<=0)throw new he.ErrnoError(28);if(0==(2097155&e.flags))throw new he.ErrnoError(8);if(!he.isFile(e.node.mode)&&!he.isDir(e.node.mode))throw new he.ErrnoError(43);if(!e.stream_ops.allocate)throw new he.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o)=>{if(0!=(2&n)&&0==(2&o)&&2!=(2097155&e.flags))throw new he.ErrnoError(2);if(1==(2097155&e.flags))throw new he.ErrnoError(2);if(!e.stream_ops.mmap)throw new he.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:(e,r,t,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new he.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:(e,r={})=>{if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var t,n=he.open(e,r.flags),o=he.stat(e).size,a=new Uint8Array(o);return he.read(n,a,0,o,0),"utf8"===r.encoding?t=R(a,0):"binary"===r.encoding&&(t=a),he.close(n),t},writeFile:(e,r,t={})=>{t.flags=t.flags||577;var n=he.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(U(r)+1),a=z(r,o,0,o.length);he.write(n,o,0,a,void 0,t.canOwn)}else{if(!ArrayBuffer.isView(r))throw new Error("Unsupported data type");he.write(n,r,0,r.byteLength,void 0,t.canOwn)}he.close(n)},cwd:()=>he.currentPath,chdir:e=>{var r=he.lookupPath(e,{follow:!0});if(null===r.node)throw new he.ErrnoError(44);if(!he.isDir(r.node.mode))throw new he.ErrnoError(54);var t=he.nodePermissions(r.node,"x");if(t)throw new he.ErrnoError(t);he.currentPath=r.path},createDefaultDirectories:()=>{he.mkdir("/tmp"),he.mkdir("/home"),he.mkdir("/home/web_user")},createDefaultDevices:()=>{he.mkdir("/dev"),he.registerDevice(he.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),he.mkdev("/dev/null",he.makedev(1,3)),fe.register(he.makedev(5,0),fe.default_tty_ops),fe.register(he.makedev(6,0),fe.default_tty1_ops),he.mkdev("/dev/tty",he.makedev(5,0)),he.mkdev("/dev/tty1",he.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(h)try{var r=v("crypto");return()=>r.randomBytes(1)[0]}catch(e){}return()=>Z("randomDevice")}();he.createDevice("/dev","random",e),he.createDevice("/dev","urandom",e),he.mkdir("/dev/shm"),he.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{he.mkdir("/proc");var e=he.mkdir("/proc/self");he.mkdir("/proc/self/fd"),he.mount({mount:()=>{var r=he.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=+r,n=he.getStream(t);if(!n)throw new he.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>n.path}};return o.parent=o,o}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{a.stdin?he.createDevice("/dev","stdin",a.stdin):he.symlink("/dev/tty","/dev/stdin"),a.stdout?he.createDevice("/dev","stdout",null,a.stdout):he.symlink("/dev/tty","/dev/stdout"),a.stderr?he.createDevice("/dev","stderr",null,a.stderr):he.symlink("/dev/tty1","/dev/stderr");he.open("/dev/stdin",0),he.open("/dev/stdout",1),he.open("/dev/stderr",1)},ensureErrnoError:()=>{he.ErrnoError||(he.ErrnoError=function(e,r){this.node=r,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},he.ErrnoError.prototype=new Error,he.ErrnoError.prototype.constructor=he.ErrnoError,[44].forEach(e=>{he.genericErrors[e]=new he.ErrnoError(e),he.genericErrors[e].stack=""}))},staticInit:()=>{he.ensureErrnoError(),he.nameTable=new Array(4096),he.mount(pe,{},"/"),he.createDefaultDirectories(),he.createDefaultDevices(),he.createSpecialDirectories(),he.filesystems={MEMFS:pe}},init:(e,r,t)=>{he.init.initialized=!0,he.ensureErrnoError(),a.stdin=e||a.stdin,a.stdout=r||a.stdout,a.stderr=t||a.stderr,he.createStandardStreams()},quit:()=>{he.init.initialized=!1;for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=he.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{e=(n=he.lookupPath(e,{follow:!r})).path}catch(e){}var t={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=he.lookupPath(e,{parent:!0});t.parentExists=!0,t.parentPath=n.path,t.parentObject=n.node,t.name=ue.basename(e),n=he.lookupPath(e,{follow:!r}),t.exists=!0,t.path=n.path,t.object=n.node,t.name=n.node.name,t.isRoot="/"===n.path}catch(e){t.error=e.errno}return t},createPath:(e,r,t,n)=>{e="string"==typeof e?e:he.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=ue.join2(e,a);try{he.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=ue.join2("string"==typeof e?e:he.getPath(e),r),i=he.getMode(n,o);return he.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:he.getPath(e),i=r?ue.join2(e,r):e);var s=he.getMode(n,o),u=he.create(i,s);if(t){if("string"==typeof t){for(var c=new Array(t.length),l=0,f=t.length;l{var o=ue.join2("string"==typeof e?e:he.getPath(e),r),a=he.getMode(!!t,!!n);he.createDevice.major||(he.createDevice.major=64);var i=he.makedev(he.createDevice.major++,0);return he.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i=0,s=0;s{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!i)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=le(i(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new he.ErrnoError(29)}},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,a=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,i=1048576;o||(i=n);var s=this;s.setDataGetter(e=>{var r=e*i,o=(e+1)*i-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=((e,r)=>{if(e>r)throw new Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):le(o.responseText||"",!0)})(r,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]}),!a&&n||(i=n=1,n=this.getter(0).length,i=n,g("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!p)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var i=new a;Object.defineProperties(i,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:i}}else s={isDevice:!1,url:t};var u=he.createFile(e,r,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};function l(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var s=0;s{var r=u.stream_ops[e];c[e]=function(){return he.forceLoadFile(u),r.apply(null,arguments)}}),c.read=((e,r,t,n,o)=>(he.forceLoadFile(u),l(e,r,t,n,o))),c.mmap=((e,r,t,n,o)=>{he.forceLoadFile(u);var a=de();if(!a)throw new he.ErrnoError(48);return l(e,S,a,r,t),{ptr:a,allocated:!0}}),u.stream_ops=c,u},createPreloadedFile:(e,r,t,n,o,a,i,u,c,l)=>{var f=r?ce.resolve(ue.join2(e,r)):e;X("cp "+f);function d(t){function s(t){l&&l(),u||he.createDataFile(e,r,t,n,o,c),a&&a(),K()}Browser.handledByPreloadPlugin(t,f,s,()=>{i&&i(),K()})||s(t)}Y(),"string"==typeof t?function(e,r,t,n){var o=n?"":X("al "+e);s(e,t=>{C(t,'Loading data file "'+e+'" failed (no arrayBuffer).'),r(new Uint8Array(t)),o&&K()},r=>{if(!t)throw'Loading data file "'+e+'" failed.';t()}),o&&Y()}(t,e=>d(e),i):d(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r,t)=>{r=r||(()=>{}),t=t||(()=>{});var n=he.indexedDB();try{var o=n.open(he.DB_NAME(),he.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=(()=>{g("creating db"),o.result.createObjectStore(he.DB_STORE_NAME)}),o.onsuccess=(()=>{var n=o.result.transaction([he.DB_STORE_NAME],"readwrite"),a=n.objectStore(he.DB_STORE_NAME),i=0,s=0,u=e.length;function c(){0==s?r():t()}e.forEach(e=>{var r=a.put(he.analyzePath(e).object.contents,e);r.onsuccess=(()=>{++i+s==u&&c()}),r.onerror=(()=>{i+ ++s==u&&c()})}),n.onerror=t}),o.onerror=t},loadFilesFromDB:(e,r,t)=>{r=r||(()=>{}),t=t||(()=>{});var n=he.indexedDB();try{var o=n.open(he.DB_NAME(),he.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=(()=>{var n=o.result;try{var a=n.transaction([he.DB_STORE_NAME],"readonly")}catch(e){return void t(e)}var i=a.objectStore(he.DB_STORE_NAME),s=0,u=0,c=e.length;function l(){0==u?r():t()}e.forEach(e=>{var r=i.get(e);r.onsuccess=(()=>{he.analyzePath(e).exists&&he.unlink(e),he.createDataFile(ue.dirname(e),ue.basename(e),r.result,!0,!0,!0),++s+u==c&&l()}),r.onerror=(()=>{s+ ++u==c&&l()})}),a.onerror=t}),o.onerror=t}},me={mount:function(e){return a.websocket=a.websocket&&"object"==typeof a.websocket?a.websocket:{},a.websocket._callbacks={},a.websocket.on=function(e,r){return"function"==typeof r&&(this._callbacks[e]=r),this},a.websocket.emit=function(e,r){"function"==typeof this._callbacks[e]&&this._callbacks[e].call(this,r)},he.createNode(null,"/",16895,0)},createSocket:function(e,r,t){if(1==(r&=-526337)&&t&&6!=t)throw new he.ErrnoError(66);var n={family:e,type:r,protocol:t,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:me.websocket_sock_ops},o=me.nextname(),a=he.createNode(me.root,o,49152,0);a.sock=n;var i=he.createStream({path:o,node:a,flags:2,seekable:!1,stream_ops:me.stream_ops});return n.stream=i,n},getSocket:function(e){var r=he.getStream(e);return r&&he.isSocket(r.node.mode)?r.node.sock:null},stream_ops:{poll:function(e){var r=e.node.sock;return r.sock_ops.poll(r)},ioctl:function(e,r,t){var n=e.node.sock;return n.sock_ops.ioctl(n,r,t)},read:function(e,r,t,n,o){var a=e.node.sock,i=a.sock_ops.recvmsg(a,n);return i?(r.set(i.buffer,t),i.buffer.length):0},write:function(e,r,t,n,o){var a=e.node.sock;return a.sock_ops.sendmsg(a,r,t,n)},close:function(e){var r=e.node.sock;r.sock_ops.close(r)}},nextname:function(){return me.nextname.current||(me.nextname.current=0),"socket["+me.nextname.current+++"]"},websocket_sock_ops:{createPeer:function(e,r,t){var n;if("object"==typeof r&&(n=r,r=null,t=null),n)if(n._socket)r=n._socket.remoteAddress,t=n._socket.remotePort;else{var o=/ws[s]?:\/\/([^:]+):(\d+)/.exec(n.url);if(!o)throw new Error("WebSocket URL must be in the format ws(s)://address:port");r=o[1],t=parseInt(o[2],10)}else try{var i=a.websocket&&"object"==typeof a.websocket,s="ws:#".replace("#","//");if(i&&"string"==typeof a.websocket.url&&(s=a.websocket.url),"ws://"===s||"wss://"===s){var u=r.split("/");s=s+u[0]+":"+t+"/"+u.slice(1).join("/")}var c="binary";i&&"string"==typeof a.websocket.subprotocol&&(c=a.websocket.subprotocol);var l=void 0;"null"!==c&&(l=c=c.replace(/^ +| +$/g,"").split(/ *, */)),i&&null===a.websocket.subprotocol&&(c="null",l=void 0),(n=new(h?v("ws"):WebSocket)(s,l)).binaryType="arraybuffer"}catch(e){throw new he.ErrnoError(23)}var f={addr:r,port:t,socket:n,dgram_send_queue:[]};return me.websocket_sock_ops.addPeer(e,f),me.websocket_sock_ops.handlePeerEvents(e,f),2===e.type&&void 0!==e.sport&&f.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(65280&e.sport)>>8,255&e.sport])),f},getPeer:function(e,r,t){return e.peers[r+":"+t]},addPeer:function(e,r){e.peers[r.addr+":"+r.port]=r},removePeer:function(e,r){delete e.peers[r.addr+":"+r.port]},handlePeerEvents:function(e,r){var t=!0,n=function(){a.websocket.emit("open",e.stream.fd);try{for(var t=r.dgram_send_queue.shift();t;)r.socket.send(t),t=r.dgram_send_queue.shift()}catch(e){r.socket.close()}};function o(n){if("string"==typeof n){n=(new TextEncoder).encode(n)}else{if(C(void 0!==n.byteLength),0==n.byteLength)return;n=new Uint8Array(n)}var o=t;if(t=!1,o&&10===n.length&&255===n[0]&&255===n[1]&&255===n[2]&&255===n[3]&&n[4]==="p".charCodeAt(0)&&n[5]==="o".charCodeAt(0)&&n[6]==="r".charCodeAt(0)&&n[7]==="t".charCodeAt(0)){var i=n[8]<<8|n[9];return me.websocket_sock_ops.removePeer(e,r),r.port=i,void me.websocket_sock_ops.addPeer(e,r)}e.recv_queue.push({addr:r.addr,port:r.port,data:n}),a.websocket.emit("message",e.stream.fd)}h?(r.socket.on("open",n),r.socket.on("message",function(e,r){r&&o(new Uint8Array(e).buffer)}),r.socket.on("close",function(){a.websocket.emit("close",e.stream.fd)}),r.socket.on("error",function(r){e.error=14,a.websocket.emit("error",[e.stream.fd,e.error,"ECONNREFUSED: Connection refused"])})):(r.socket.onopen=n,r.socket.onclose=function(){a.websocket.emit("close",e.stream.fd)},r.socket.onmessage=function(e){o(e.data)},r.socket.onerror=function(r){e.error=14,a.websocket.emit("error",[e.stream.fd,e.error,"ECONNREFUSED: Connection refused"])})},poll:function(e){if(1===e.type&&e.server)return e.pending.length?65:0;var r=0,t=1===e.type?me.websocket_sock_ops.getPeer(e,e.daddr,e.dport):null;return(e.recv_queue.length||!t||t&&t.socket.readyState===t.socket.CLOSING||t&&t.socket.readyState===t.socket.CLOSED)&&(r|=65),(!t||t&&t.socket.readyState===t.socket.OPEN)&&(r|=4),(t&&t.socket.readyState===t.socket.CLOSING||t&&t.socket.readyState===t.socket.CLOSED)&&(r|=16),r},ioctl:function(e,r,t){switch(r){case 21531:var n=0;return e.recv_queue.length&&(n=e.recv_queue[0].data.length),$[t>>2]=n,0;default:return 28}},close:function(e){if(e.server){try{e.server.close()}catch(e){}e.server=null}for(var r=Object.keys(e.peers),t=0;t>8&255)+"."+(e>>16&255)+"."+(e>>24&255)}function we(e,r){var t,n=A[e>>1],o=mt(F[e+2>>1]);switch(n){case 2:if(16!==r)return{errno:28};t=ve(t=$[e+4>>2]);break;case 10:if(28!==r)return{errno:28};t=function(e){var r="",t=0,n=0,o=0,a=0,i=0,s=0,u=[65535&e[0],e[0]>>16,65535&e[1],e[1]>>16,65535&e[2],e[2]>>16,65535&e[3],e[3]>>16],c=!0,l="";for(s=0;s<5;s++)if(0!==u[s]){c=!1;break}if(c){if(l=ve(u[6]|u[7]<<16),-1===u[5])return r="::ffff:",r+=l;if(0===u[5])return r="::","0.0.0.0"===l&&(l=""),"0.0.0.1"===l&&(l="1"),r+=l}for(t=0;t<8;t++)0===u[t]&&(t-o>1&&(i=0),o=t,i++),i>n&&(a=t-(n=i)+1);for(t=0;t<8;t++)n>1&&0===u[t]&&t>=a&&t>2],$[e+12>>2],$[e+16>>2],$[e+20>>2]]);break;default:return{errno:5}}return{family:n,addr:t,port:o}}function ye(e){return parseInt(e)}var ge={address_map:{id:1,addrs:{},names:{}},lookup_name:function(e){var r,t=function(e){for(var r=e.split("."),t=0;t<4;t++){var n=Number(r[t]);if(isNaN(n))return null;r[t]=n}return(r[0]|r[1]<<8|r[2]<<16|r[3]<<24)>>>0}(e);if(null!==t)return e;if(null!==(t=function(e){var r,t,n,o,a=[];if(!/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i.test(e))return null;if("::"===e)return[0,0,0,0,0,0,0,0];for((e=e.startsWith("::")?e.replace("::","Z:"):e.replace("::",":Z:")).indexOf(".")>0?((r=(e=e.replace(new RegExp("[.]","g"),":")).split(":"))[r.length-4]=ye(r[r.length-4])+256*ye(r[r.length-3]),r[r.length-3]=ye(r[r.length-2])+256*ye(r[r.length-1]),r=r.slice(0,r.length-2)):r=e.split(":"),n=0,o=0,t=0;t>2]=n.dev,$[t+8>>2]=n.ino,$[t+12>>2]=n.mode,M[t+16>>2]=n.nlink,$[t+20>>2]=n.uid,$[t+24>>2]=n.gid,$[t+28>>2]=n.rdev,re=[n.size>>>0,(ee=n.size,+Math.abs(ee)>=1?ee>0?(0|Math.min(+Math.floor(ee/4294967296),4294967295))>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],$[t+40>>2]=re[0],$[t+44>>2]=re[1],$[t+48>>2]=4096,$[t+52>>2]=n.blocks;var o=n.atime.getTime(),a=n.mtime.getTime(),i=n.ctime.getTime();return re=[Math.floor(o/1e3)>>>0,(ee=Math.floor(o/1e3),+Math.abs(ee)>=1?ee>0?(0|Math.min(+Math.floor(ee/4294967296),4294967295))>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],$[t+56>>2]=re[0],$[t+60>>2]=re[1],M[t+64>>2]=o%1e3*1e3,re=[Math.floor(a/1e3)>>>0,(ee=Math.floor(a/1e3),+Math.abs(ee)>=1?ee>0?(0|Math.min(+Math.floor(ee/4294967296),4294967295))>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],$[t+72>>2]=re[0],$[t+76>>2]=re[1],M[t+80>>2]=a%1e3*1e3,re=[Math.floor(i/1e3)>>>0,(ee=Math.floor(i/1e3),+Math.abs(ee)>=1?ee>0?(0|Math.min(+Math.floor(ee/4294967296),4294967295))>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],$[t+88>>2]=re[0],$[t+92>>2]=re[1],M[t+96>>2]=i%1e3*1e3,re=[n.ino>>>0,(ee=n.ino,+Math.abs(ee)>=1?ee>0?(0|Math.min(+Math.floor(ee/4294967296),4294967295))>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],$[t+104>>2]=re[0],$[t+108>>2]=re[1],0},doMsync:function(e,r,t,n,o){if(!he.isFile(r.node.mode))throw new he.ErrnoError(43);if(2&n)return 0;var a=D.slice(e,e+t);he.msync(r,a,o,t,n)},varargs:void 0,get:function(){return Ee.varargs+=4,$[Ee.varargs-4>>2]},getStr:function(e){return N(e)},getStreamFromFD:function(e){var r=he.getStream(e);if(!r)throw new he.ErrnoError(8);return r}};function be(e,r){return r+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*r:NaN}var _e={};function ke(e){for(;e.length;){var r=e.pop();e.pop()(r)}}function Te(e){return this.fromWireType($[e>>2])}var Pe={},Ce={},Se={},De=48,Ae=57;function Fe(e){if(void 0===e)return"_unknown";var r=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return r>=De&&r<=Ae?"_"+e:e}function $e(e,r){return e=Fe(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(r)}function Me(e,r){var t=$e(r,function(e){this.name=r,this.message=e;var t=new Error(e).stack;void 0!==t&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},t}var Oe=void 0;function je(e){throw new Oe(e)}function xe(e,r,t){function n(r){var n=t(r);n.length!==e.length&&je("Mismatched type converter count");for(var o=0;o{Ce.hasOwnProperty(e)?o[r]=Ce[e]:(a.push(e),Pe.hasOwnProperty(e)||(Pe[e]=[]),Pe[e].push(()=>{o[r]=Ce[e],++i===a.length&&n(o)}))}),0===a.length&&n(o)}var Re={};function Ne(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var ze=void 0;function Ue(e){for(var r="",t=e;D[t];)r+=ze[D[t++]];return r}var We=void 0;function Be(e){throw new We(e)}function Le(e,r,t={}){if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");var n=r.name;if(e||Be('type "'+n+'" must have a positive integer typeid pointer'),Ce.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;Be("Cannot register type '"+n+"' twice")}if(Ce[e]=r,delete Se[e],Pe.hasOwnProperty(e)){var o=Pe[e];delete Pe[e],o.forEach(e=>e())}}function Ie(e){if(!(this instanceof lr))return!1;if(!(e instanceof lr))return!1;for(var r=this.$$.ptrType.registeredClass,t=this.$$.ptr,n=e.$$.ptrType.registeredClass,o=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)o=n.upcast(o),n=n.baseClass;return r===n&&t===o}function He(e){Be(e.$$.ptrType.registeredClass.name+" instance already deleted")}var Ve=!1;function qe(e){}function Ge(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}var Xe={};function Ye(){return Object.keys(rr).length}function Ke(){var e=[];for(var r in rr)rr.hasOwnProperty(r)&&e.push(rr[r]);return e}var Ze=[];function Je(){for(;Ze.length;){var e=Ze.pop();e.$$.deleteScheduled=!1,e.delete()}}var Qe=void 0;function er(e){Qe=e,Ze.length&&Qe&&Qe(Je)}var rr={};function tr(e,r){return r=function(e,r){for(void 0===r&&Be("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r}(e,r),rr[r]}function nr(e,r){return r.ptrType&&r.ptr||je("makeClassHandle requires ptr and ptrType"),!!r.smartPtrType!==!!r.smartPtr&&je("Both smartPtrType and smartPtr must be specified"),r.count={value:1},ar(Object.create(e,{$$:{value:r}}))}function or(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=tr(this.registeredClass,r);if(void 0!==t){if(0===t.$$.count.value)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?nr(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):nr(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var a,i=this.registeredClass.getActualType(r),s=Xe[i];if(!s)return o.call(this);a=this.isConst?s.constPointerType:s.pointerType;var u=function e(r,t,n){if(t===n)return r;if(void 0===n.baseClass)return null;var o=e(r,t,n.baseClass);return null===o?null:n.downcast(o)}(r,this.registeredClass,a.registeredClass);return null===u?o.call(this):this.isSmartPointer?nr(a.registeredClass.instancePrototype,{ptrType:a,ptr:u,smartPtrType:this,smartPtr:e}):nr(a.registeredClass.instancePrototype,{ptrType:a,ptr:u})}function ar(e){return"undefined"==typeof FinalizationRegistry?(ar=(e=>e),e):(Ve=new FinalizationRegistry(e=>{Ge(e.$$)}),qe=(e=>Ve.unregister(e)),(ar=(e=>{var r=e.$$;if(!!r.smartPtr){var t={$$:r};Ve.register(e,t,e)}return e}))(e))}function ir(){if(this.$$.ptr||He(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,r=ar(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return r.$$.count.value+=1,r.$$.deleteScheduled=!1,r}function sr(){this.$$.ptr||He(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Be("Object already scheduled for deletion"),qe(this),Ge(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function ur(){return!this.$$.ptr}function cr(){return this.$$.ptr||He(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Be("Object already scheduled for deletion"),Ze.push(this),1===Ze.length&&Qe&&Qe(Je),this.$$.deleteScheduled=!0,this}function lr(){}function fr(e,r,t){if(void 0===e[r].overloadTable){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||Be("Function '"+t+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[r].overloadTable+")!"),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}}function dr(e,r,t){a.hasOwnProperty(e)?((void 0===t||void 0!==a[e].overloadTable&&void 0!==a[e].overloadTable[t])&&Be("Cannot register public name '"+e+"' twice"),fr(a,e,e),a.hasOwnProperty(t)&&Be("Cannot register multiple overloads of a function with the same number of arguments ("+t+")!"),a[e].overloadTable[t]=r):(a[e]=r,void 0!==t&&(a[e].numArguments=t))}function pr(e,r,t){for(;r!==t;)r.upcast||Be("Expected null or instance of "+t.name+", got an instance of "+r.name),e=r.upcast(e),r=r.baseClass;return e}function hr(e,r){if(null===r)return this.isReference&&Be("null is not a valid "+this.name),0;r.$$||Be('Cannot pass "'+zr(r)+'" as a '+this.name),r.$$.ptr||Be("Cannot pass deleted object as a pointer of type "+this.name);var t=r.$$.ptrType.registeredClass;return pr(r.$$.ptr,t,this.registeredClass)}function mr(e,r){var t;if(null===r)return this.isReference&&Be("null is not a valid "+this.name),this.isSmartPointer?(t=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,t),t):0;r.$$||Be('Cannot pass "'+zr(r)+'" as a '+this.name),r.$$.ptr||Be("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&r.$$.ptrType.isConst&&Be("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);var n=r.$$.ptrType.registeredClass;if(t=pr(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(void 0===r.$$.smartPtr&&Be("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:Be("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var o=r.clone();t=this.rawShare(t,Rr.toHandle(function(){o.delete()})),null!==e&&e.push(this.rawDestructor,t)}break;default:Be("Unsupporting sharing policy")}return t}function vr(e,r){if(null===r)return this.isReference&&Be("null is not a valid "+this.name),0;r.$$||Be('Cannot pass "'+zr(r)+'" as a '+this.name),r.$$.ptr||Be("Cannot pass deleted object as a pointer of type "+this.name),r.$$.ptrType.isConst&&Be("Cannot convert argument of type "+r.$$.ptrType.name+" to parameter type "+this.name);var t=r.$$.ptrType.registeredClass;return pr(r.$$.ptr,t,this.registeredClass)}function wr(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function yr(e){this.rawDestructor&&this.rawDestructor(e)}function gr(e){null!==e&&e.delete()}function Er(e,r,t,n,o,a,i,s,u,c,l){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=o,this.pointeeType=a,this.sharingPolicy=i,this.rawGetPointee=s,this.rawConstructor=u,this.rawShare=c,this.rawDestructor=l,o||void 0!==r.baseClass?this.toWireType=mr:n?(this.toWireType=hr,this.destructorFunction=null):(this.toWireType=vr,this.destructorFunction=null)}function br(e){return B.get(e)}function _r(e,r,t){return e.includes("j")?function(e,r,t){var n=a["dynCall_"+e];return t&&t.length?n.apply(null,[r].concat(t)):n.call(null,r)}(e,r,t):br(r).apply(null,t)}function kr(e,r){var t,n,o,a=(e=Ue(e)).includes("j")?(t=e,n=r,o=[],function(){return o.length=0,Object.assign(o,arguments),_r(t,n,o)}):br(r);return"function"!=typeof a&&Be("unknown function pointer with signature "+e+": "+r),a}var Tr=void 0;function Pr(e){var r=pt(e),t=Ue(r);return ft(r),t}function Cr(e,r){var t=[],n={};throw r.forEach(function e(r){n[r]||Ce[r]||(Se[r]?Se[r].forEach(e):(t.push(r),n[r]=!0))}),new Tr(e+": "+t.map(Pr).join([", "]))}function Sr(e,r){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var t=$e(e.name||"unknownFunctionName",function(){});t.prototype=e.prototype;var n=new t,o=e.apply(n,r);return o instanceof Object?o:n}function Dr(e,r,t,n,o){var a=r.length;a<2&&Be("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var i=null!==r[1]&&null!==t,s=!1,u=1;u0?", ":"")+f),d+=(c?"var rv = ":"")+"invoker(fn"+(f.length>0?", ":"")+f+");\n",s)d+="runDestructors(destructors);\n";else for(u=i?1:2;u>2]);return t}function Fr(e,r,t){return e instanceof Object||Be(t+' with invalid "this": '+e),e instanceof r.registeredClass.constructor||Be(t+' incompatible with "this" of type '+e.constructor.name),e.$$.ptr||Be("cannot call emscripten binding method "+t+" on deleted object"),pr(e.$$.ptr,e.$$.ptrType.registeredClass,r.registeredClass)}var $r=[],Mr=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Or(e){e>4&&0==--Mr[e].refcount&&(Mr[e]=void 0,$r.push(e))}function jr(){for(var e=0,r=5;r(e||Be("Cannot use deleted val. handle = "+e),Mr[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var r=$r.length?$r.pop():Mr.length;return Mr[r]={refcount:1,value:e},r}}};function Nr(e,r){var t=Ce[e];return void 0===t&&Be(r+" has unknown type "+Pr(e)),t}function zr(e){if(null===e)return"null";var r=typeof e;return"object"===r||"array"===r||"function"===r?e.toString():""+e}var Ur="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Wr(e,r){for(var t=e,n=t>>1,o=n+r/2;!(n>=o)&&F[n];)++n;if((t=n<<1)-e>32&&Ur)return Ur.decode(D.subarray(e,t));for(var a="",i=0;!(i>=r/2);++i){var s=A[e+2*i>>1];if(0==s)break;a+=String.fromCharCode(s)}return a}function Br(e,r,t){if(void 0===t&&(t=2147483647),t<2)return 0;for(var n=r,o=(t-=2)<2*e.length?t/2:e.length,a=0;a>1]=i,r+=2}return A[r>>1]=0,r-n}function Lr(e){return 2*e.length}function Ir(e,r){for(var t=0,n="";!(t>=r/4);){var o=$[e+4*t>>2];if(0==o)break;if(++t,o>=65536){var a=o-65536;n+=String.fromCharCode(55296|a>>10,56320|1023&a)}else n+=String.fromCharCode(o)}return n}function Hr(e,r,t){if(void 0===t&&(t=2147483647),t<4)return 0;for(var n=r,o=n+t-4,a=0;a=55296&&i<=57343)i=65536+((1023&i)<<10)|1023&e.charCodeAt(++a);if($[r>>2]=i,(r+=4)+4>o)break}return $[r>>2]=0,r-n}function Vr(e){for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r}var qr={};function Gr(e){var r=qr[e];return void 0===r?Ue(e):r}var Xr=[];function Yr(){return"object"==typeof globalThis?globalThis:Function("return this")()}var Kr=[];var Zr={};function Jr(e){return M[e>>2]+4294967296*$[e+4>>2]}var Qr,et=[0,31,60,91,121,152,182,213,244,274,305,335],rt=[0,31,59,90,120,151,181,212,243,273,304,334];function tt(e){var r;return((r=e.getFullYear())%4==0&&(r%100!=0||r%400==0)?et:rt)[e.getMonth()]+e.getDate()-1}function nt(e){var r=U(e)+1,t=lt(r);return t&&z(e,S,t,r),t}function ot(e){var r=k.buffer;try{return k.grow(e-r.byteLength+65535>>>16),W(),1}catch(e){}}Qr=h?()=>{var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:()=>performance.now();var at={};function it(){if(!it.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:f||"./this.program"};for(var r in at)void 0===at[r]?delete e[r]:e[r]=at[r];var t=[];for(var r in e)t.push(r+"="+e[r]);it.strings=t}return it.strings}var st=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=he.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n};Object.defineProperties(st.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return he.isDir(this.mode)}},isDevice:{get:function(){return he.isChrdev(this.mode)}}}),he.FSNode=st,he.staticInit(),Oe=a.InternalError=Me(Error,"InternalError"),function(){for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);ze=e}(),We=a.BindingError=Me(Error,"BindingError"),lr.prototype.isAliasOf=Ie,lr.prototype.clone=ir,lr.prototype.delete=sr,lr.prototype.isDeleted=ur,lr.prototype.deleteLater=cr,a.getInheritedInstanceCount=Ye,a.getLiveInheritedInstances=Ke,a.flushPendingDeletes=Je,a.setDelayFunction=er,Er.prototype.getPointee=wr,Er.prototype.destructor=yr,Er.prototype.argPackAdvance=8,Er.prototype.readValueFromPointer=Te,Er.prototype.deleteObject=gr,Er.prototype.fromWireType=or,Tr=a.UnboundTypeError=Me(Error,"UnboundTypeError"),a.count_emval_handles=jr,a.get_first_emval=xr;var ut,ct={v:function(e,r,t){throw new function(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){M[this.ptr+4>>2]=e},this.get_type=function(){return M[this.ptr+4>>2]},this.set_destructor=function(e){M[this.ptr+8>>2]=e},this.get_destructor=function(){return M[this.ptr+8>>2]},this.set_refcount=function(e){$[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[this.ptr+13>>0]},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=$[this.ptr>>2];$[this.ptr>>2]=e+1},this.release_ref=function(){var e=$[this.ptr>>2];return $[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){M[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return M[this.ptr+16>>2]},this.get_exception_ptr=function(){if(vt(this.get_type()))return M[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}(e).init(r,t),e,0,e},U:function(e,r,t){try{var n=function(e){var r=me.getSocket(e);if(!r)throw new he.ErrnoError(8);return r}(e),o=function(e,r,t){if(t&&0===e)return null;var n=we(e,r);if(n.errno)throw new he.ErrnoError(n.errno);return n.addr=ge.lookup_addr(n.addr)||n.addr,n}(r,t);return n.sock_ops.connect(n,o.addr,o.port),0}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return-e.errno}},ea:function(e,r,t,n){try{if(r=Ee.getStr(r),r=Ee.calculateAt(e,r),-8&t)return-28;var o=he.lookupPath(r,{follow:!0}).node;if(!o)return-44;var a="";return 4&t&&(a+="r"),2&t&&(a+="w"),1&t&&(a+="x"),a&&he.nodePermissions(o,a)?-2:0}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return-e.errno}},o:function(e,r,t){Ee.varargs=t;try{var n=Ee.getStreamFromFD(e);switch(r){case 0:return(o=Ee.get())<0?-28:he.createStream(n,o).fd;case 1:case 2:return 0;case 3:return n.flags;case 4:var o=Ee.get();return n.flags|=o,0;case 5:return o=Ee.get(),A[o+0>>1]=2,0;case 6:case 7:return 0;case 16:case 8:return-28;case 9:return a=28,$[dt()>>2]=a,-1;default:return-28}}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return-e.errno}var a},Z:function(e,r){try{var t=Ee.getStreamFromFD(e);return Ee.doStat(he.stat,t.path,r)}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return-e.errno}},S:function(e,r,t){try{var n=be(r,t);return isNaN(n)?-61:(he.ftruncate(e,n),0)}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return-e.errno}},K:function(e,r,t){Ee.varargs=t;try{var n=Ee.getStreamFromFD(e);switch(r){case 21509:case 21505:return n.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return n.tty?0:-59;case 21519:if(!n.tty)return-59;var o=Ee.get();return $[o>>2]=0,0;case 21520:return n.tty?-28:-59;case 21531:return o=Ee.get(),he.ioctl(n,r,o);case 21523:case 21524:return n.tty?0:-59;default:return-28}}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return-e.errno}},W:function(e,r){try{return e=Ee.getStr(e),Ee.doStat(he.lstat,e,r)}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return-e.errno}},X:function(e,r,t,n){try{r=Ee.getStr(r);var o=256&n,a=4096&n;return n&=-6401,r=Ee.calculateAt(e,r,a),Ee.doStat(o?he.lstat:he.stat,r,t)}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return-e.errno}},G:function(e,r,t,n){Ee.varargs=n;try{r=Ee.getStr(r),r=Ee.calculateAt(e,r);var o=n?Ee.get():0;return he.open(r,t,o).fd}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return-e.errno}},F:function(e,r,t){try{return me.createSocket(e,r,t).stream.fd}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return-e.errno}},Y:function(e,r){try{return e=Ee.getStr(e),Ee.doStat(he.stat,e,r)}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return-e.errno}},r:function(e){var r=_e[e];delete _e[e];var t=r.elements,n=t.length,o=t.map(function(e){return e.getterReturnType}).concat(t.map(function(e){return e.setterArgumentType})),a=r.rawConstructor,i=r.rawDestructor;xe([e],o,function(e){return t.forEach((r,t)=>{var o=e[t],a=r.getter,i=r.getterContext,s=e[t+n],u=r.setter,c=r.setterContext;r.read=(e=>o.fromWireType(a(i,e))),r.write=((e,r)=>{var t=[];u(c,e,s.toWireType(t,r)),ke(t)})}),[{name:r.name,fromWireType:function(e){for(var r=new Array(n),o=0;o>a])},destructorFunction:null})},e:function(e,r,t,n,o,i,s,u,c,l,f,d,p){f=Ue(f),i=kr(o,i),u&&(u=kr(s,u)),l&&(l=kr(c,l)),p=kr(d,p);var h=Fe(f);dr(h,function(){Cr("Cannot construct "+f+" due to unbound types",[n])}),xe([e,r,t],n?[n]:[],function(r){var t,o;r=r[0],o=n?(t=r.registeredClass).instancePrototype:lr.prototype;var s=$e(h,function(){if(Object.getPrototypeOf(this)!==c)throw new We("Use 'new' to construct "+f);if(void 0===d.constructor_body)throw new We(f+" has no accessible constructor");var e=d.constructor_body[arguments.length];if(void 0===e)throw new We("Tried to invoke ctor of "+f+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(d.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)}),c=Object.create(o,{constructor:{value:s}});s.prototype=c;var d=new function(e,r,t,n,o,a,i,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=o,this.getActualType=a,this.upcast=i,this.downcast=s,this.pureVirtualFunctions=[]}(f,s,c,p,t,i,u,l),m=new Er(f,d,!0,!1,!1),v=new Er(f+"*",d,!1,!1,!1),w=new Er(f+" const*",d,!1,!0,!1);return Xe[e]={pointerType:v,constPointerType:w},function(e,r,t){a.hasOwnProperty(e)||je("Replacing nonexistant public symbol"),void 0!==a[e].overloadTable&&void 0!==t?a[e].overloadTable[t]=r:(a[e]=r,a[e].argCount=t)}(h,s),[m,v,w]})},f:function(e,r,t,n,o,a,i){var s=Ar(t,n);r=Ue(r),a=kr(o,a),xe([],[e],function(e){var n=(e=e[0]).name+"."+r;function o(){Cr("Cannot call "+n+" due to unbound types",s)}r.startsWith("@@")&&(r=Symbol[r.substring(2)]);var u=e.registeredClass.constructor;return void 0===u[r]?(o.argCount=t-1,u[r]=o):(fr(u,r,n),u[r].overloadTable[t-1]=o),xe([],s,function(e){var o=[e[0],null].concat(e.slice(1)),s=Dr(n,o,null,a,i);return void 0===u[r].overloadTable?(s.argCount=t-1,u[r]=s):u[r].overloadTable[t-1]=s,[]}),[]})},g:function(e,r,t,n,o,a){C(r>0);var i=Ar(r,t);o=kr(n,o),xe([],[e],function(e){var t="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[r-1])throw new We("Cannot register multiple constructors with identical number of parameters ("+(r-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[r-1]=(()=>{Cr("Cannot construct "+e.name+" due to unbound types",i)}),xe([],i,function(n){return n.splice(1,0,null),e.registeredClass.constructor_body[r-1]=Dr(t,n,null,o,a),[]}),[]})},b:function(e,r,t,n,o,a,i,s){var u=Ar(t,n);r=Ue(r),a=kr(o,a),xe([],[e],function(e){var n=(e=e[0]).name+"."+r;function o(){Cr("Cannot call "+n+" due to unbound types",u)}r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(r);var c=e.registeredClass.instancePrototype,l=c[r];return void 0===l||void 0===l.overloadTable&&l.className!==e.name&&l.argCount===t-2?(o.argCount=t-2,o.className=e.name,c[r]=o):(fr(c,r,n),c[r].overloadTable[t-2]=o),xe([],u,function(o){var s=Dr(n,o,e,a,i);return void 0===c[r].overloadTable?(s.argCount=t-2,c[r]=s):c[r].overloadTable[t-2]=s,[]}),[]})},a:function(e,r,t,n,o,a,i,s,u,c){r=Ue(r),o=kr(n,o),xe([],[e],function(e){var n=(e=e[0]).name+"."+r,l={get:function(){Cr("Cannot access "+n+" due to unbound types",[t,i])},enumerable:!0,configurable:!0};return l.set=u?()=>{Cr("Cannot access "+n+" due to unbound types",[t,i])}:e=>{Be(n+" is a read-only property")},Object.defineProperty(e.registeredClass.instancePrototype,r,l),xe([],u?[t,i]:[t],function(t){var i=t[0],l={get:function(){var r=Fr(this,e,n+" getter");return i.fromWireType(o(a,r))},enumerable:!0};if(u){u=kr(s,u);var f=t[1];l.set=function(r){var t=Fr(this,e,n+" setter"),o=[];u(c,t,f.toWireType(o,r)),ke(o)}}return Object.defineProperty(e.registeredClass.instancePrototype,r,l),[]}),[]})},fa:function(e,r){Le(e,{name:r=Ue(r),fromWireType:function(e){var r=Rr.toValue(e);return Or(e),r},toWireType:function(e,r){return Rr.toHandle(r)},argPackAdvance:8,readValueFromPointer:Te,destructorFunction:null})},i:function(e,r,t,n){var o=Ne(t);function a(){}r=Ue(r),a.values={},Le(e,{name:r,constructor:a,fromWireType:function(e){return this.constructor.values[e]},toWireType:function(e,r){return r.value},argPackAdvance:8,readValueFromPointer:function(e,r,t){switch(r){case 0:return function(e){var r=t?S:D;return this.fromWireType(r[e])};case 1:return function(e){var r=t?A:F;return this.fromWireType(r[e>>1])};case 2:return function(e){var r=t?$:M;return this.fromWireType(r[e>>2])};default:throw new TypeError("Unknown integer type: "+e)}}(r,o,n),destructorFunction:null}),dr(r,a)},d:function(e,r,t){var n=Nr(e,"enum");r=Ue(r);var o=n.constructor,a=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:$e(n.name+"_"+r,function(){})}});o.values[t]=a,o[r]=a},M:function(e,r,t){var n=Ne(t);Le(e,{name:r=Ue(r),fromWireType:function(e){return e},toWireType:function(e,r){return r},argPackAdvance:8,readValueFromPointer:function(e,r){switch(r){case 2:return function(e){return this.fromWireType(O[e>>2])};case 3:return function(e){return this.fromWireType(j[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}(r,n),destructorFunction:null})},p:function(e,r,t,n,o){r=Ue(r),-1===o&&(o=4294967295);var a=Ne(t),i=e=>e;if(0===n){var s=32-8*t;i=(e=>e<>>s)}var u=r.includes("unsigned");Le(e,{name:r,fromWireType:i,toWireType:u?function(e,r){return this.name,r>>>0}:function(e,r){return this.name,r},argPackAdvance:8,readValueFromPointer:function(e,r,t){switch(r){case 0:return t?function(e){return S[e]}:function(e){return D[e]};case 1:return t?function(e){return A[e>>1]}:function(e){return F[e>>1]};case 2:return t?function(e){return $[e>>2]}:function(e){return M[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}(r,a,0!==n),destructorFunction:null})},l:function(e,r,t){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][r];function o(e){var r=M,t=r[e>>=2],o=r[e+1];return new n(r.buffer,o,t)}Le(e,{name:t=Ue(t),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},L:function(e,r){var t="std::string"===(r=Ue(r));Le(e,{name:r,fromWireType:function(e){var r,n=M[e>>2],o=e+4;if(t)for(var a=o,i=0;i<=n;++i){var s=o+i;if(i==n||0==D[s]){var u=N(a,s-a);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),a=s+1}}else{var c=new Array(n);for(i=0;i>2]=n,t&&o)z(r,D,i,n+1);else if(o)for(var s=0;s255&&(ft(i),Be("String has UTF-16 code units that do not fit in 8 bits")),D[i+s]=u}else for(s=0;sF),s=1):4===r&&(n=Ir,o=Hr,i=Vr,a=(()=>M),s=2),Le(e,{name:t,fromWireType:function(e){for(var t,o=M[e>>2],i=a(),u=e+4,c=0;c<=o;++c){var l=e+4+c*r;if(c==o||0==i[l>>s]){var f=n(u,l-u);void 0===t?t=f:(t+=String.fromCharCode(0),t+=f),u=l+r}}return ft(e),t},toWireType:function(e,n){"string"!=typeof n&&Be("Cannot pass non-string to C++ string type "+t);var a=i(n),u=lt(4+a+r);return M[u>>2]=a>>s,o(n,u+4,a+r),null!==e&&e.push(ft,u),u},argPackAdvance:8,readValueFromPointer:Te,destructorFunction:function(e){ft(e)}})},q:function(e,r,t,n,o,a){_e[e]={name:Ue(r),rawConstructor:kr(t,n),rawDestructor:kr(o,a),elements:[]}},ia:function(e,r,t,n,o,a,i,s,u){_e[e].elements.push({getterReturnType:r,getter:kr(t,n),getterContext:o,setterArgumentType:a,setter:kr(i,s),setterContext:u})},ja:function(e,r,t,n,o,a){Re[e]={name:Ue(r),rawConstructor:kr(t,n),rawDestructor:kr(o,a),fields:[]}},N:function(e,r,t,n,o,a,i,s,u,c){Re[e].fields.push({fieldName:Ue(r),getterReturnType:t,getter:kr(n,o),getterContext:a,setterArgumentType:i,setter:kr(s,u),setterContext:c})},ha:function(e,r){Le(e,{isVoid:!0,name:r=Ue(r),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,r){}})},t:function(e,r,t){e=Rr.toValue(e),r=Nr(r,"emval::as");var n=[],o=Rr.toHandle(n);return M[t>>2]=o,r.toWireType(n,e)},la:function(e,r,t,n,o){return(e=Xr[e])(r=Rr.toValue(r),t=Gr(t),function(e){var r=[];return M[e>>2]=Rr.toHandle(r),r}(n),o)},P:function(e,r,t,n){(e=Xr[e])(r=Rr.toValue(r),t=Gr(t),null,n)},c:Or,Q:function(e,r){return(e=Rr.toValue(e))==(r=Rr.toValue(r))},y:function(e){return 0===e?Rr.toHandle(Yr()):(e=Gr(e),Rr.toHandle(Yr()[e]))},C:function(e,r){var t=function(e,r){for(var t=new Array(e),n=0;n>2],"parameter "+n);return t}(e,r),n=t[0],o=n.name+"_$"+t.slice(1).map(function(e){return e.name}).join("_")+"$",a=Kr[o];if(void 0!==a)return a;for(var i=["retType"],s=[n],u="",c=0;c4&&(Mr[e].refcount+=1)},D:function(e,r){return(e=Rr.toValue(e))instanceof(r=Rr.toValue(r))},na:function(e){return"number"==typeof(e=Rr.toValue(e))},ma:function(e){return"string"==typeof(e=Rr.toValue(e))},O:function(e,r,t,n){e=Rr.toValue(e);var o=Zr[r];return o||(o=function(e){for(var r="",t=0;t>2)], 'parameter "+t+"');\nvar arg"+t+" = argType"+t+".readValueFromPointer(args);\nargs += argType"+t+"['argPackAdvance'];\nargTypes += 4;\n";return n+="var obj = new constructor("+r+");\nreturn valueToHandle(obj);\n}\n",new Function("requireRegisteredType","Module","valueToHandle","getMemory",n)(Nr,a,Rr.toHandle,()=>M)}(r),Zr[r]=o),o(e,t,n)},n:function(){return Rr.toHandle([])},u:function(e){return Rr.toHandle(Gr(e))},k:function(){return Rr.toHandle({})},s:function(e){ke(Rr.toValue(e)),Or(e)},j:function(e,r,t){e=Rr.toValue(e),r=Rr.toValue(r),t=Rr.toValue(t),e[r]=t},h:function(e,r){var t=(e=Nr(e,"_emval_take_value")).readValueFromPointer(r);return Rr.toHandle(t)},aa:function(e,r){var t=new Date(1e3*Jr(e));$[r>>2]=t.getUTCSeconds(),$[r+4>>2]=t.getUTCMinutes(),$[r+8>>2]=t.getUTCHours(),$[r+12>>2]=t.getUTCDate(),$[r+16>>2]=t.getUTCMonth(),$[r+20>>2]=t.getUTCFullYear()-1900,$[r+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-n)/864e5|0;$[r+28>>2]=o},ba:function(e,r){var t=new Date(1e3*Jr(e));$[r>>2]=t.getSeconds(),$[r+4>>2]=t.getMinutes(),$[r+8>>2]=t.getHours(),$[r+12>>2]=t.getDate(),$[r+16>>2]=t.getMonth(),$[r+20>>2]=t.getFullYear()-1900,$[r+24>>2]=t.getDay();var n=0|tt(t);$[r+28>>2]=n,$[r+36>>2]=-60*t.getTimezoneOffset();var o=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=0|(a!=i&&t.getTimezoneOffset()==Math.min(i,a));$[r+32>>2]=s},ca:function(e){var r=new Date($[e+20>>2]+1900,$[e+16>>2],$[e+12>>2],$[e+8>>2],$[e+4>>2],$[e>>2],0),t=$[e+32>>2],n=r.getTimezoneOffset(),o=new Date(r.getFullYear(),0,1),a=new Date(r.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=Math.min(i,a);if(t<0)$[e+32>>2]=Number(a!=i&&s==n);else if(t>0!=(s==n)){var u=Math.max(i,a),c=t>0?s:u;r.setTime(r.getTime()+6e4*(c-n))}$[e+24>>2]=r.getDay();var l=0|tt(r);return $[e+28>>2]=l,$[e>>2]=r.getSeconds(),$[e+4>>2]=r.getMinutes(),$[e+8>>2]=r.getHours(),$[e+12>>2]=r.getDate(),$[e+16>>2]=r.getMonth(),$[e+20>>2]=r.getYear(),r.getTime()/1e3|0},da:function(e,r,t){var n=(new Date).getFullYear(),o=new Date(n,0,1),a=new Date(n,6,1),i=o.getTimezoneOffset(),s=a.getTimezoneOffset(),u=Math.max(i,s);function c(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}M[e>>2]=60*u,$[r>>2]=Number(i!=s);var l=c(o),f=c(a),d=nt(l),p=nt(f);s>2]=d,M[t+4>>2]=p):(M[t>>2]=p,M[t+4>>2]=d)},z:function(){Z("")},I:function(){return Date.now()},H:Qr,V:function(e){var r=D.length;if((e>>>=0)>2147483648)return!1;let t=(e,r)=>e+(r-e%r)%r;for(var n=1;n<=4;n*=2){var o=r*(1+.2/n);if(o=Math.min(o,e+100663296),ot(Math.min(2147483648,t(Math.max(e,o),65536))))return!0}return!1},_:function(e,r){var t=0;return it().forEach(function(n,o){var a=r+t;M[e+4*o>>2]=a,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);t||(S[r>>0]=0)}(n,a),t+=n.length+1}),0},$:function(e,r){var t=it();M[e>>2]=t.length;var n=0;return t.forEach(function(e){n+=e.length+1}),M[r>>2]=n,0},x:function(e){try{var r=Ee.getStreamFromFD(e);return he.close(r),0}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return e.errno}},J:function(e,r,t,n){try{var o=function(e,r,t,n){for(var o=0,a=0;a>2],s=M[r+4>>2];r+=8;var u=he.read(e,S,i,s,n);if(u<0)return-1;if(o+=u,u>2]=o,0}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return e.errno}},R:function(e,r,t,n,o){try{var a=be(r,t);if(isNaN(a))return 61;var i=Ee.getStreamFromFD(e);return he.llseek(i,a,n),re=[i.position>>>0,(ee=i.position,+Math.abs(ee)>=1?ee>0?(0|Math.min(+Math.floor(ee/4294967296),4294967295))>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],$[o>>2]=re[0],$[o+4>>2]=re[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return e.errno}},A:function(e,r,t,n){try{var o=function(e,r,t,n){for(var o=0,a=0;a>2],s=M[r+4>>2];r+=8;var u=he.write(e,S,i,s,n);if(u<0)return-1;o+=u,void 0!==n&&(n+=u)}return o}(Ee.getStreamFromFD(e),r,t);return M[n>>2]=o,0}catch(e){if(void 0===he||!(e instanceof he.ErrnoError))throw e;return e.errno}}},lt=(function(){var e={a:ct};function r(e,r){var t,n=e.exports;a.asm=n,k=a.asm.oa,W(),B=a.asm.qa,t=a.asm.pa,I.unshift(t),K()}function t(e){r(e.instance)}function o(r){return function(){if(!b&&(d||p)){if("function"==typeof fetch&&!oe(J))return fetch(J,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+J+"'";return e.arrayBuffer()}).catch(function(){return ae(J)});if(s)return new Promise(function(e,r){s(J,function(r){e(new Uint8Array(r))},r)})}return Promise.resolve().then(function(){return ae(J)})}().then(function(r){return WebAssembly.instantiate(r,e)}).then(function(e){return e}).then(r,function(e){E("failed to asynchronously prepare wasm: "+e),Z(e)})}if(Y(),a.instantiateWasm)try{return a.instantiateWasm(e,r)}catch(e){E("Module.instantiateWasm callback failed with error: "+e),n(e)}(b||"function"!=typeof WebAssembly.instantiateStreaming||ne(J)||oe(J)||h||"function"!=typeof fetch?o(t):fetch(J,{credentials:"same-origin"}).then(function(r){return WebAssembly.instantiateStreaming(r,e).then(t,function(e){return E("wasm streaming compile failed: "+e),E("falling back to ArrayBuffer instantiation"),o(t)})})).catch(n)}(),a.___wasm_call_ctors=function(){return(a.___wasm_call_ctors=a.asm.pa).apply(null,arguments)},a._malloc=function(){return(lt=a._malloc=a.asm.ra).apply(null,arguments)}),ft=a._free=function(){return(ft=a._free=a.asm.sa).apply(null,arguments)},dt=a.___errno_location=function(){return(dt=a.___errno_location=a.asm.ta).apply(null,arguments)},pt=a.___getTypeName=function(){return(pt=a.___getTypeName=a.asm.ua).apply(null,arguments)},ht=(a.__embind_initialize_bindings=function(){return(a.__embind_initialize_bindings=a.asm.va).apply(null,arguments)},a._htons=function(){return(ht=a._htons=a.asm.wa).apply(null,arguments)}),mt=a._ntohs=function(){return(mt=a._ntohs=a.asm.xa).apply(null,arguments)},vt=a.___cxa_is_pointer_type=function(){return(vt=a.___cxa_is_pointer_type=a.asm.ya).apply(null,arguments)};a.dynCall_ji=function(){return(a.dynCall_ji=a.asm.za).apply(null,arguments)},a.dynCall_vij=function(){return(a.dynCall_vij=a.asm.Aa).apply(null,arguments)},a.dynCall_jiji=function(){return(a.dynCall_jiji=a.asm.Ba).apply(null,arguments)};function wt(e){function r(){ut||(ut=!0,a.calledRun=!0,P||(!0,me.root=he.mount(me,{},null),a.noFSInit||he.init.initialized||he.init(),he.ignorePermissions=!1,fe.init(),se(I),t(a),a.onRuntimeInitialized&&a.onRuntimeInitialized(),function(){if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)e=a.postRun.shift(),H.unshift(e);var e;se(H)}()))}e=e||l,V>0||(!function(){if(a.preRun)for("function"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)e=a.preRun.shift(),L.unshift(e);var e;se(L)}(),V>0||(a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),r()},1)):r()))}if(G=function e(){ut||wt(),ut||(G=e)},a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.pop()();return wt(),o.ready}})();export default rhino3dm; \ No newline at end of file diff --git a/public/assets/lib/vendor/three/rhino3dm/rhino3dm.wasm b/public/assets/lib/vendor/three/rhino3dm/rhino3dm.wasm deleted file mode 100644 index de6213621c753bd4c0bc21d1281d68204fa32801..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2535180 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%0A;gByEoe(j-bi1)NTKe%mvsouj9hC7woD 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

2usVZko30&91gOWlOJDQ>wQ-JqxHh`BI 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

gCrD*<9SP}mPPKIn2_CV$LMnVQW#r$ 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�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 Ky=yYTq)6etub`o!ExM>P#@*mehv{tp|zJX3iv$ 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�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

C1>wa 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 z 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

j0Y!8MNFoulT{mJbg^U zVSH%)Db`1zrhEb9u&tl}LWYw$)`|R}=x)l?p#0DAaU|6cRq=N|=yx8QsvxP_u*eq8@|~Coj}Fe{j>b|i6CC>wI}eCyGO@^8Kl+91CF@7 zk6KqW-5Y*@cvNhCWI=W*cTL?m&VB}{BfRN>DFaD(QGX{#T)?%mCo%-#yE(hJ2y9L! zM`Vi8tCim4nXO#+-Q_|4ZFAc=@XKCiXM?tphCzMbH`4H&D0>UU8dKr`woksVp>Ym* z&6Ej{VK0&GUc&X^SZz#8k*WG0@`kzScw%mG=VktcdEUU#BCQ>Gk#%9Mwdf~Jy@xetDeK|UPiG;dtyh4b%DDTa=NX`$$DCv@kPaWJ+h}B znW#th)+3Wdx()BICmpCq4%H)5^~hl&=TwjG3}6h3c%``p4fkVvBbku-;=ohNP7UwN znpDo=z<|o%esH#LRGhZHnL@=nbZ-==V}VvA1wd2mv(ZZzx8ZD+w_gx!d$3leX3((a zet)4kx&;l@8=Ny?YCG7qI+Rtld(9== zQc$H9nW{$~tVa&lBM)~YHuvuEpXxYK-M63eA1hlzeyAsyk4R9I8jALL@m;y}%DH4yUGnoorDv3XEy6qo=(|Kmj^(k|1_C&Mwj@X4IIGyAbRuh?L+0THOlzjTaMfd`b z!wCqOYtqrtc+Py58v2lA|EdK;)(9}CYq*eu34EcdxLOlu_sD2XMgz4(5SH(@nq(hD z4sm})oXej$uAM7*9evz8b zY9zc83(e&;ut277W{Qh+ z#fKZk7d{&!T-jZyq=@vQ42BQc`vy-iBI5FlJM6b;=$C< za1a{8ANja_r_9%yzvh1*Ueb=)mE>;bGJf%*Ws!FL1tHmgM8%Z^#t-0c+IGE6Ev6@l zgnEuGO|}O_09sumD}!qfrlV|oGQS> zEIG1`towLm(4P^R<|wb<-_fQtDwgrCpeT^iu^n9s`%0Wj7lOMn@$zjPZD{B#kkB3o z%&^cxSwE3Wn;Xp&wDUC>z}e>E&|EtPbMl5xL;s$!C)oo{OdU1L**`APZ*&sa+~%Hw zLI<#?+7=T|Pi4D-bOzy-M$(cCU7YGr$|!xijF*V1bds$PUysC?w`(g_W|KK)p$!xG zNdQJ*z5tM>iYKlfC?4F=pWT{>pM~D)ZFSO^dU?1E3)*k5G7gAUU|jt3&1v>2Jk!Um zHI?{lEK2yHU15zk@r({|vF>h7=FEd6`l;JE6Mdmc{8-+U@(DJOeMj6(i)pJF6=QMh z_T!TN>irk(qIpx~CkwI<20L*rtuNNPP5oK%?|UztdNVilB#Ft|*?ySFa@FO-iQ3E~ z=jn~NcoFk~KHx-u>p(N|?gch8v?7a*uJCdhkmyPq9ADL9SN6oldtz7j#4tgrm75|K zZZf!4dlkVHqnn~huoN53JRg+Ac$aUv=%gXRdNriTM>NkzWF>T6gm)oI5fsmdEIP7| z2l(>vB~p;d0M`~-C92p^RXoFgfB^}t5S?57vWS$Ob01aey|PgSQ{7Zh_fYdloFXCh>FUu!Cv*_8Z1 zOlyozAn1mvh-@bF?C+~Cc>O*s5BspDwRK;l#^8rGuJozKWt(;!5}s(l;!XzuLblWB zPt4w$`m1Qp#BBE9c`s+U%o6tzkhb2?M(DE?Scg*Z-q7bM3b3rQ-Q~fwLYGfXH>J5_ zb8hogP8U&wAHV9b`lB3b%(AL(yV$DJJWjwRFOiey#yU7uHVq=yE3#irSqVsF`k-q~ zD*>L4vpxo#h>DV(3M+UF0IC;L_L#9#yC_>P>vHV49@$95B=N#*-LqdtWWN}^xAAz}cIfXG-#8m5gVqMRP5~Ax1lTrOgr=%?wUt%QWHGr5+rX&wi^cG(A-LmVo zJ3G`+=L}SKwVV99NXk5Ve<-eW_JVIPkpcAd=j>wO@PBBjqA^?YG%&5M7k%}+{(NkT zD974ta`mzZSe3z~3~J~*q%{)qV~$nl+zfT^V8Mj;O<6jd!Xl8L%`&> z!#sB+plVmo1lY1>*YjD_!YbEprlSZLdMb?5Fk})QXph6(HGPpo{)`Y%3%kdKyJ zzd5N>M6Ht&B>PMxW(W7yEEzz66ADRGYmBm@vYYE)5;@rQS#Ngp*>@yDH;m!q>ftqC zRjd8JjEB0r|3cDNH*LHg!+&S@?jmY}GD6*(Ow8*BqVh{pKJp|k!B(9AxPMi)K;){1 z7p+1SzYj`?5a+FeSJ{m@V}@dA)Ws8c+z0Hyc_n~}Aq6(i3xOl6oB>Quu!m4;50Rsl!OP~XzfH!#Zk#$K_ZWf0h|(_5&9EFvcB ztKOlS+1EbP2iSM@R(TlBQ1&W4s;GWjukXV|Q_!Q^)1VhR8lczcgtPM|_b^f1DTfvt zno~9{Bc>m-h^=cvVvlKEt70doQ{b&>CaAS+P|JcH3;B{JeI%)N#MTHpLQp31r!hr( z>aNxAD;t=IwKFrN_cOPvWhz7pu6IpfDaUS)p=#m&stIKFzGp(CD&;5Ji`j0t(Tz|?8d)`9Tc7(+TI35zIEM?% z40^?DyV}}i(Z`6u*O?1mjq~EmqU*akPUb>qO}~jgx4e#ha*CqXE?}F?LbKxH(z;qF zmPOY|f7#{RdPRt(3-u=tv(c2!emEO5#;gaQQFVkm{-lT{XK=58)0`xG^f?$lYZxbVNo6Qaj4*Uo$Dg^(5W^1!4TF?_2Cfa1>oY*5Y7oBAuQ!*IqyS!a6Ynw-TNvI zh8&Zs^6n7X8%u6H3EhaU#(8)P;r&1xNzqtm}e)#IU#bZ121JX>Hpo zBzxuy%zq}TPU|wz7xD&Nbv%sd>!evjYo5B+{8=f9wmb_Z(aDu^%y#H-U7DS=y$IJW5ZL61 zG=XiRQ2K(-W@`I+A%u?qi}yUllA=Rn;3Q1=xjqJGzJxydgKo08*tF#L*ODcSOiTVn zt#U~x(~>W$mDcWNTJn?M@3yUFp(mMPitU93{Qn)@UHFZ53|By%;-)91h)0Eh&O$l& z*K+Csl(-nT9LsewZ#nk%$^}bwfr;8fO1YEwIX!p}~@SaNAmNYKG+csv zogHQ^JG4OlbrxzyrCp^V1wS|}M&L)ud#)^xl2wKhgE~q+El&Pk%}1E-$a_l&rLWX! z0M8XCs~6AKj*xIcH&)9TG(&jRVs|6)b@^+#G@z9qQMmgGW2v@@paZ6-qdL8}&1Thh z<|b0mbB4x#=H(o{-`p{J=jrS~iZVCJ?k&}4E-&Z=QKF0OQ>&^Il&PvZwyKMxypud@ zW+kjU@38gHrQR4g+b0RUQUWfEF7{*-fkX1eCMqlWWS$`@MaA1OfsgFp#OdyjBDGpn zrSfS}@+x}G2)_GRgpb5 z*Q%FfyGalcqe*xNUC^|1*r>HV_2VjCtC3z>=m4!7DsEw#Ir;I&r@poa8P}zJQ}hvJ6s)hg87S2}X$wVU-XXnWt!`ZP9lj-qNPh!#!fu&B8G{h<~iIg|nR z6j4hY$t`a_(SV7;f{tSqEXF0Pkt^GWl}zw2_O-5I&23AN{Yq|l=M^P4R3W5#LE&?p4B%>$YjxPgk>Jeb=+j%%=Qw+ zrP*UDAEBixYatA-rTk~hs{Qz<2X#nbY1O>yx~Qaydv@r2eAYmPN+gpv5p*aIQ!ey2bzeN*#~F$B=P8)cQn&3ycl( zY{0B0e6wrqa2TN)|HJ1F{2P#!oi3{|0B`OsB9M7#EV6du}_9c+f?+#ZAabi-TrpuN@kO|Z~?tly0%iUI~g z^V2&UDq*0Z(6r{a1L=l0Z`FwYnFuZ92s%1w-Vs-qiN^`zA3PAWdUk-*j(E;od!bpESha#C1u9u^Bx+4|4H7{b4k^r}@(`2B)@8pmByh+o!d4lwGyhWLVHD6Sw{8^zWfpn}jM1H3 zzJX`UJp`I9^$?o&Tzn#!9$ScSbQaQ(p-TJ)X~r0)Mv%6?oh0esn#hl4aey(5(j8rH z694k0mS~b)B^^+~4Lzf}&Y=3wCV$XyOMJkNw%B^f$pI_BnJQ>b*TLyzPYVumWtRig zb&KuS*2KKIesPBzt6|TSIr(v|8Piy@2_Dp z?IRshhU`O4)=jL<;nI0}QVJ0Pc7;S_dTocGNRNe2L3rLm53O*#lo)BY@JszO2)^7y zp!EuP(C8+W1Ka5xQOHHQQmn8Ca2R2Ag7vz;KrXOemr@Ba7chUF5M!{lhCVm4YhoSC z!Pc@%5_AD2j3wO#w0$J<+=7gVsIYT}gr{ zsLeU{KVVTZ>ZI5wB4fRSz;L3%v<58Tnh9pOK#**7l4}pjlE<%YaL_=6QoF)8k6cwc zcRO-MOEL!Z$gK&{iiL6!p>c&&mk;dQQg*u9Z<<+X(=eYqaIf@g+o2Ur0V~NM(+JYazU(H+Dzs^>+f720>6ui$3gZ&@1~HUhJ_3@q97}2W?WVh?r$Zj(*a^OiPSzvyK?vEN$a#O#5`}BY^ zR_?!|DEssPG@iEh#dXsqYlWOJElefN;@6HJCF$9A06{P$BvnFhr!=sbzR1Aw@^AtV z>%2unjKnx^VS!Iv6VD`*>uz`$Nyr-1l&uq%h^x`}ID1Ga094D*`Xb2K4!7Zc>*^rE zZ?U!0t<2-0f{3-d_2-Tr67RL912$MRJx2ABeTNmT9Vesu&%OiCTj$cTc%xkjq3;*i zJ+mTi(-G+#q#7}!IhQq~)|UiQitELUPFk4hrRE5)yP5=$#cJ0fmgWrFSb5KLe*1%; zJo=p{l?g6oKNp_Vcu6k=I2|ggVL1_R7gHP0vb@C_+jqry$KaH671~W{2hepALaj@$gawg}z&~mN1#uBsS?2rktu{ZnzQe69V(u!?|D;UwIH&p3NcAlA^+}${JRy>CQqtJC0_^y zi$hv>(bTkpgGRRTg$be>2Au>H-%492QAj4;ws}MY!%UiPgrVOiLc9Ro3gpQ7Z@=XP zNok}&PNo`824UYq5`3Ez5Q1!MmFDWiTxBqYrc^3}_Xp`-qM73-Ob6Z1o(092ox@<0 zc4WS-@Y?Uy1w`%iiph|u_jW?BVbH))5&mZ`Ck?69x1UJtDz>6*SQ&+X*%iOR;*gN4 z?`Lbr6GW0m>kl9u-#xQ$&c4y&^l55KIDN8tr;u%dW64xeNpk>0%NOF<3WY#$?VFR< zD>N0i4^RtW%j2^bi`DSy=Ys}0Kv>qNs)zqD{g z*g#1PAV6f^oCwp`6PfJt%Zc{oIkhiK?8|d&Urx6#&!bTR3o|c_m21f_oCARNJx3yC zx89ZIMwGk3mC$xdo%e@17t^fj_iFJ565L{xIjG`1nCu}pK0R~8&-wa#~r7-e?=2>!@m zXk|9q&T*RkO~t3opf>0$R#bJYs_GbpacM@R zfKpl0(3rGrAtdeGze%*QUOh$S8>-6RTvdL4SvdmM|5oK=-QjN!LB_vTVvlVd5Z<>0 zak$(&NK(PL6sd^Yt33LB6Yrm9Vb;V~*lY(pbSJ&?zh7k1c$y&Pk`{Z5?7==Atyz)m zTdZT*p80$|EG3t@vnE8qY*&)jJ?Ly)2R(rw)`o;sV^N_0lA>?ZNF$D-7?~3k0IX@Y zXQ9cY+>3yT6||E5m8s9-?4$7MmJ~F_I2UoU>|(p#Eje*d-0APm@0odsjJ;}fonPZ} z@dvkSXoQr#aMh2re;eU9BKrxCE zU0vjeiS0~NBkgGG8+we6mG5#55%MY4(ALSp-St4R{>;*O%`|W~05{Y6bl@J&n*mVr zN@<-iB>+8PngwoLG6~!Wtx}Hs8`hgZK7iUgT~1ilaSf=a+sM?lL3Cp?hc1f$b28i5 zyOp5MsbGX+o-UKIGiX^2eEt!V?hJK5N}Itz@c76#^}kj?{_zxLoB?mA&d5F^KOJat z?fbNu5TH&}Eariuyq6%|WbKN{((a`O9%iXW&<}R+|FBA2U2danb?L@r zq+u61)X+pdGD)PH?@&Dn2^s7C$U4VGo$kFBc~H zn5u4ssro_BR8=u?nwlxyL^q-%kZvh?KMnZ`HVh0jdw&HKW~*yO#%z_w8zv1@O%;Mx z6?3~qml%KCaP9dhJ6u#~7yni}6{#`ds8Q_yOnv>oE_WU_-rV2p8)y|b{N^x!-~F2y z$?*GA{r0ztUB3xOE`GI)7{A};Yat$89JElI<8M6F5dYk7N}ckFD>wiG1Hd<1I6)7_ z$`S}|i*h)=aF-KrAJg7HciW$<4mViU%sS|#bgg;v7VBB#hgF1DiwVUPV8VL#{|(9c z#e2QHEq2DSxLMNWSUT|X9bHw&QP@psT$DGhj{QA#yt(Sc`Bf)2)H=~qfv$AM#XUV0 z=pfB{;hO)@2WkGxPN3fCsfA7oQv+>bh~-L>cbR#WD@iINGxAnWZ_{3TuCA$>Wje*I zBasDqjJ~kR3KnISi5oZS)wE33p*@(7M2zlT7`{lklCTb-yKlp|wZdcjF#HnNHGJSF zQSp1l{%bheX4YNe|87te{5RjumTD|X-nw+o54HHwG31|J1=DvbZ@rQdT=}qT@7Jd6 zx*z-%@0HUNO{Hm`Erg7WCP{r+sHa)!EcDq zC8HJp%;o0=Kb%qcr}HX#eVOqkoAD*@`O;IPJbO;7aruldqcgs&>iN=BK3<@}y6JvF|0dX3p#h}IJJ5WxeivpYDL()CcLcRTVwt1$n^ateu>dB85jJm#U# z+h~G$I*L@>Z%W}}ybr7T3l|8b;6{iTO!po5#r8b5qs3iKAE)%-wZsoj_PC~iS%{$& zhd0#$F(I~HIxLjaIOG5xXpjjA3-0$oSomROS17T?n&X%$)vf`F8aYrcl?8RUqw}2X zJP`f??1zH$P?@%rZon+WhSHYA&^7x1E0}22SU95KiWHEs)iZ}d8bO`U*#?M2v!n^v zOG>LfsI!CHcsfi(Ps`G3nb8awJ{kt9v?{Qp{nj=8$)M|Y$58dPDAY1}l!;KQ#pKoO zN*A+3(%`=gtj}3?_WmJP>@?2Az?c&l$VIhKxTU=_o1BsC!~eBH z;dbgrdV{`?;~+(ww6JSwhJB17i^ zj0G^Wm?d1s2}Lpru3CdU5n@hs*i%KTNc6`>`pLk1 z)1s=h@{zipYobVK+UxR++>NMICM*;a0=9S8=&<0%8E#gJ!B)h`u9C5-6gmlG_7GfUy z3f49sKb~uH1G3VZXq89c#v5pGBJS8NB`D_B29V?Tpx9rt7;izZw6K3k0xm#6eB065 zSnPS*g24GOL?u36i|+{GtvWUyBXP2pcywrEv9}hV2;n2<2^6bU8pMv7U14!#NWpgl zCLE*__C))REdt*L>0361{j;AZEQ{{xV~0=YztYDYOFL*MH@U22wzf0t3eXq^JKkFP z;|<^5dehMdKecXg6FW9${`}Ag%}59m-ca8D^$y_ zTz6*x*x<&ByH$Z~y?K%#dHdkT?4!>WPxqG965secLCWJWQEynsl9BzxC!?Ah=tilH zZ2Jf098}=gF}SO3aM?cCo@4MCZ1c`Lw}1M1<%Qp=eqMFqq;rzj=)nUvVw|=*FDyBt zfIrgDj-k&TeaCyP?;@2={YdxQ?YqbM#==v}RWGd);Cn5V z570~PgZjERrWyhC$iOiHii7~>BRas*bZNX?iu*g|qdY@bm*qDj|k3ZfFapVzy^Qon_x*zs0Br zgfw8$NzArbm<6W@MlD7&hz)eDTd%bnY>s)dj}d#AQ=3>uG`kz!r8WXSqU(98b~Jf5 zmJX8a6+89s7M>%3ROg^B1#(Z*0(c8CGw-zOO}* ztEYULX5UACR8RL3<-MlkK$IQ8FrSBC;-eS=E{h)16@B2Q#Rh=_hHJ`cMGgCmy&@J+ z4^R?EN50YC5TihQ6w~HaE1NHBwwz@V0vEPEFMt3qKtl(|c5L|w0 zIuU|vPUVFmuVghmCInYu!JW`Dk^*z?gI!x;nk-Xm<8Gp~(Hgd&tWkDdAVB^~S7kK^HF1G30)#9#s@v$1Nm0XE$v7ukdFlf{|NNS7 z>^ehDz0VqdFZaworgf4j$}WqMrJBoV$a^2qXpJfk;njpoDQE@Z(M>%9-d+%m=(7XQ%hQVNxQ$O)Iim6%W|c(H%1 zP=6ueQs_ebBxWZ&&!q9E!B$+Q9Rpjz;Sw944u{J;yi%^twPb0S$OhtdJr+)woV@FV z>*CNiyFNUWofcc6tcOS1tN`*R5p7l|ah-A0 z`YrTHz&N&-wgE|;O)O%b)h(5KY_4Q>zXJxE*%Q-I_PwCKdX-E`Ci>9su&v5&TEuqh z%3r!V%1Un;lD5e=mpEMwvo@|t-5Vl%m}oyqr^)Q|OXynbs&H89XU=B)fViULIc*B1 zS&)UBoZZ5aXqjDA2kjTTkfn;+E+qF5T$LTTzCq~-_Xe0PLj4NR_RE9n%YegqtN`ZM8h=ndLx1Pv z!`a_*Har9>W)Cfpf&Dic@nCqgI|UIK*`2_z@+UUQ5(ffw{ZxuN#@;d}RY-7BSvumS zC`$MJX=g|z!@Zl}$i<2`z!n`yRIYOi4iz9dvNf`!bBnk=n2wT1@w{mgVs_CYyO`I{ zCMu{a8`)Q;oibJ3>6+io@C%%%{|#~q?sVX%qG{R!dxPS?VP`ZXYhDo`Hyb{hM-+ER zq=Ysi=|Isa)A01ulSYNu`)_vtYT7WH+bI=rBbHJ96GSZ z$hS}EXrDT2oT=Hxj&1|yiGV?s<|eq zZMS1Jw^Dj>AGT@k@WR~UtLgZOv^)DZU4^B9#M2pk9| zKzd?2yY~eyF^s)#ba!PPaTV>u3irF}{}9ehi@P5)UYi*88lPoJK#(-@y8DUpTtLa$ zXV|H=mIC1Ho+Xu@f7;u=WMX{50PosM=eIH)HmF6k_g`KD2QwS2dtcD{j9Y^;ajNll zI>X#WOfS|JF+Ug!bvMZ{8lyKZ)aLS3D&sxby`@F|65$X4*5~#nEj1w}fzn7qk!V`R zdXmjLDcH^M$LlhD#k5=Wi6J%2oq6xTW%Scr7Z4g=hJr3)9@S6_ADEL-cn>lAcAR}3 zVd&90;c9bbxe2$zH#Y?MJIUej`(XH;qKCzvOBZJMFKI`~sQ;HM@i4Y3N%0_Xztzr1 z!K%YhEL-88Y*S=7r(CI%5iu~_QkNd<Nb+I2uDnN*CRqpiE>jy#Nb4BxVx%(w`MP@HntU+u43~2p`$tvqf ztR7Gm8lmMIDSNGJID?1MaNuveiXq^HOsxW*yUHQl)iZ><47VIt3@6Gl9351ds^LaC zfZ$IC{gCwnFuH@8bfRoPGvF2yOux;C+yv^%+fL7IIH#DTl!w0qR$sAi?8$dnI!K~0(l`Y?$C-lPCA4PO1g ziykz54Kn$u*akv2v;BDDeg6+0R>)GioYAmD(ggQR;vcLtaU zFKxbQDH%;5ehEe3I88O6GEGjF|^lLdn=Si2{{zQvY;85y6=>!UUL zO#D7lc`~ZpOOw19GwH&_iH5A}a6>motw-6%eW5S*;KAEG>%pch_-&ZyNr@d)a^vcx z1nS4BR(93=bTl6>9*oX5hbZu*CsTCcx;$db~9fwqn=zBgX9~oKYRO-MwML$ zhA)ejup~a#%C`1*Mrg>YBg-FIy47mFa#I_K^csX12<%q|AZT+Dv^ss}_!BM4pv`HT z{o_gC;1_-r6>rUptM|IE4edv>hvq^aA?;$)ZVPET3$|mEr5ii5i>0y_f*P~0j%W^~ zk!xgEYDMAOx6J#7D&LtGTi%yCLiYIq9T~}TaD=SZ{)h77uANo;R?od7?E&gki>iw{ z(c)#>PYNYIk{6d=MWs5?(4%O-AOEd}I~%58-LejZLYJRZo*hTzNGi4M{r4=5oVfq{oS6jp44#K{gufa+4SQtZ8rN1llx2SDwBpE0B?nz+A|6~5( zRKGsU;h9wdRGqczo|s{V5CqOC6po9IcDE*y8vl)S0nphh8ikfR&q{2>6c^9;4YP7f zqQ}-wZz0%L06N|TLlhBA%##+g(Yhyg^ETJxq_LmJgM|x?RU@9dwu&}Em^bDW8r7}DZSN2Z;BoN z2z}BdT`9+2Ty|x%c>MiMeTf!Z5Cx!hONzf%n{sE;vzt0t_qk8Y;_=&2jmp;(66zaT z|IHP*nlQKg}V^X>CyI8aRE#LoOV2Dx{s}-3VqNvr}WCB}KXd(V(EBijY!HT8X zpV&Iuunt@j7q{C$j$F1-P03?8+!qQm#;7(q&CLxysvCu`zPUjo=U^73Xg6q6CBhiH&9fX;9}y& zdD-h1wfeZg@X!6N=SmH)!VkTm0|gcfW#9=?y|rOl_vIi2%8KmF>>gCz**z~1>GI8J z&~0nD(ON!!cUNEQEypLV3sND?6v~)>>5^G{*k@k3F#Fkm;l9K}OSsiz>t=8p?MBix z^Cas8#u)wTa}S%j$Y3o8u; zuzk5*&tb7zn!GS5ClbN@DO|8`g@}>y0T12dkfbp+zbq|VzgtPxde9y$ z?e+kp?N9|hSem_cQAf~{V_2-fvL|r4#`hIPf|VOcCn2r~JMk4F{+F5>6HKBB8z7lY zbs3+lCl<;m6)Yx^eX&0NCc2O&fTkssRcw5 zNGmo1m`;Zgp@2@DCpEz^$Xh-b5!vZQoo>$~7x3CZ_t4OB$Z9UUYLt6kFXgT`nw>_w z0vfF(Ciy z|6~fb7u7YpGbngXw+r}*EN77}ta%C&-f%1u-oUQ-SR}jw6Kd%ETr5=UBy1EO)s-My zjmBO36sXxFfto!MsM#Y>voO#jfrvd4h}a{6h&>XB*du|6J<>zOE1Zaf@|IQN9L(5C zBHm!*fuwr-FI;9yDH^C+fYK)2soLK#5l#9VCYkVGNa>XFloV}3R!P;^W(2BUb!@7J zq7VX?CL5lHsyF;+QZ-E#rbg8;ky(5*x|(4+^I8SfNwD|L9@LLFQr4B^97D$DE>1P-Q5KT>qyL|` zcY(93s`C8LrBKu;0si0LTKhbzQi<9# z(>&_#bIyLQz4lsbueJ8tENz6HhHez-L8Nd|PM=R4#Em8$2I%-pqthTE=v(Vr8`}#D zvL1HSAI5noiQUfn!$kdIPyJz%hms6Fz(YwO_wi7j5S&sWF$GKtAwoL)3ZM}lHa0Du zO&f=yM!U6PRTOpRu8sC02Lc26hDa%Fks)CcTs{k-F<~{|uQnm%^{S>fVjELoo)|DY z&(lpg?xNH=zM=&y1go=YC)jUogDQHBR?G`&iM!~8Oxi&)N?fSUynpP>KRLoTYyN*< z%CF+|wdb8{jow>BrcXIZ8n@6seqp#fMqqwH%CuC^J!jjdgv3AMGe+I zbO=3JJ7Kl#O=YY|v^2uibMn1lpQ<9&+-T-Rlr&zsc7kjQBwYqa3Q9o*Rb?kP>t!8L zoBi3k$o`R2FS66p4$f`I5jh$;Krk%XOBRRN5Rh?k?(orZ+=bc2POv?VD?z${Pm;d(iM0x{0H8- zxb94ZYR-818PqLJ@0zk@-In+7>tTmnnLoZ?wg>Gttk6Crq*CR|YR5~y9i+bZi& zV3bD{ygdAF4!_rg-y6d3*6>T9dCR|zU+(aYxAUu!?XYLeso{BCzl=uz*d>$U{hk@` z_wlTHre?e!>9Ts0$Lu?7iRTCHLeG8 z?5yY5RnM`TZLxHgs5gJrwe%*^ARK9KA|O05NNDdj^IoUl@lHhsI00F}(>IXb zsC{8;LZEdntbKnXl$J$_pB{!@IE2C3 znDpC_eh)8L+f^TzB54{@z?S_uEuU=WdQ31M#*loh5Oz#gBt0;|s*SC8Wc> z@m7rUiC+{BiO1rA1lhC3j!nl&kCVpHa04?X2wyK24vXTEzxi%w@*buD@xN5GqitX! z$|@`!sMDNC4#OQCZATH=j>28Ff6#{*^1r8TWK$U;&VV1rd*p$&il>GXk>K*y(VM`RGGX`PE>+sr| zR93ckKg<|QE1MlXSQAbjSRjnuQx$%p%at_=7k`@xOWEvLs;#hbmcsNSdl30nTR4-} z3+X^M1&ZacqgpgekBCuDu^W&y#iXn;OIgL1vWhLGiYsKh=8}MH>N<8eEtb}cJ&s|R zHX%v}H+;?P4BGy?PavL=B6j8Et@_<257$`=wN4^;jm7v}+zr2EMET7RvG1HQr*~eA zamkFNwo&{8@@X2G-oL9RaO2Ny;-$91Olq?Jufjo+V?bOab-!Ze`ay)|TOP65OsK;v zk|f?*NyXWt2T#v-oS&34R+BHNz`f&b0or>pt?Hv;N~BzkT8VJpYsnx#Y@Lg(`b$T4lvH%+6s{e1WZ~s6RlS zV**c>ZJh70_*o#FCzp%3*hk?}0?p31A$zc9^T~&C^EUSpbEIK1&d6TJ-*P9_T1M5! z;neA5eq_2E`9Bg3o<0{B0~rX=Cu$kcgmZXc&6AD1HAqsGbrP>GilV=1ClwGdgyd0E z1q7XXuKW$JtYc}X>4Pm;(>3fM(g0zL)Ak#2XSEJn+;}2pr z@q*>gpJRN?M}CC#+gewId!E^fS5DrvY=wS%E0J1J(^h?Ibpp~PABnSjR<;(>1Q{<9 zGvEdQT0azV!I)l6M;JDfrmq?R-x7%Z3l+zU?SEjyK4B26qB2W;Z^T-vqdx_^xe-s+3 zGe_?;e?P}!{_`FW36>d0Xmy@EX}9bQG|z++QBJNPu^M=jwdeR7FPr*aLQ3I==GFMI zZEt@0uU&x!89sEFlfnmN*CQo&LJjbbj<^9rEDdyJNWt-|6_kUA2vp+H&ZzLzj=129 zck*C#nIQ9&u@-yBTnf}WTFa-XzsVB;nzFg}18qY*Fo?oW3?Xs<$@lIPLM~y+v9beo z-Pf02^Hb-Pey88hD}m}F!o$P)PLo%{?oGuJHb4LIYonciDndQ3H`49wlUC-y!(Ll1 z68d~*UB5W0X`CWiC^txpHdq+Eq;;xL`LP*9T%~B+%aWliOS&wpf+Mv)PQ7_?>%W!P zB4`O%s|_@wGeB)9%6bBJe6s^UCEUT(R{tMIoY20b%jU(RrSeX2v$00mZ*26>IC%6s ze_Ti%qGHeD{~4oQqfY-~#%OIETGC}9OFM|FIk@CaVGcqs9=Bc`G@qCMs6L;+oP9pG zUMyG{J)Oj6d}v@9e1$^c_47jp<=R%?Z)T>0WINTAfHR<8N6G!;YpaB1JMoM2s#-rAiiQ^qaJ`n`+sj(xocdr0Q$ZRY9XD9)T zBv;D*K2$pkw9<|O**ClrTScfVK0H)3e~0tj?0-)BB{NT=DV+(&lK6& zP`Q|{ZiUv6vuF6xyomsC@G%o_ARCAa8?lM1qtY(eDNL)FVc-dqzx+aN3>x|T3twSF zG2@d+bEqVyhpOa_E98&D4&AS;PXcRnzo-X}X}ub3Q=jr!$kafnd-ih=v2j2rTyCVH zVwDaXs8xd0O1k9Pa7NO==}Eraa##>mZT(x9#$W>6Y1o23()uO$&xL5e*fJM;kZs|e zm_N;(0r<$d<9;bpaJqOggu-g(Lt9mRPanu=ALy(*CGNA=%%JC|ujG%&KmL94>#ezJ zw4N^fpy_|CGmOWtFBpa+@>lxV3b5boB{LZMp?R$j#&Nes0*bL(u`x0`FuU$t!Jw&; z$n(TVrdv3*5*n+S>TGDYOlf9w>4o!B0yf%ZL7WtO!Xi&7S_8&9!sv!$i{f+=;Iza1 zo}`?nM`LOyufV#PgO3QttT?*$YCAm=!as|LnYb^U9}--8%oLsh=rf?h#J17>|P{G={6({LZ^TyjiNSN z7sXDjGn29mgeLEHnXS}RLiw(@7!JwvUpRAbuNnFM+fzG>Z`2Gr8}86gKt`7lJCzMd z!ZG&VpLH?$y5x{G)dMOHaS6C>Rix=Ad6%S46QU>mh$OWmx2}uAKiO9-QkL0_ zI|7WE%10EXie^&~0Zc=D)mF>;?8-X%Y#?)Mg13ky5w00mHj1;T_&+qoQ~ zygE#0t5(i0LzzcYx}x{aL?b@yIp6^k6ory+TVOQWe6;Z>X#JCp(L?Q6o4~7Dn?_o+ut0T?JAZ_$h*68! z`qWOM(}g8e+Hj`T;&rBASew(+TGNSbI~XGo=NkDSu@qadbgLZfUT;P0TCVJKgu>AJ zkqbVJ*})%j7y+spfAou0_Km_8DKs{K^k$Yd#f9e9Yut;bukN<*DHAW#+ zUUMZ?4+7DRaoh}SO27zgDo?Q07$$KO7nls~EcS^|1eS|9Q>RC`%pXx)rq_595GfHI z4Vw<|mmk4G7H{BEjo+0^g$vxG*4<&=#HAe3{~vNGkvoShuqgOc`Nr6V7Mg=cVSwOB z3|#~>Fz!yTz{4Mb2i7j|Xg_^0c)~|TVzt<+X*NN?7XVtsUGZ|5duDOc#2NpauO}IzDOGa>g>%KtjST7Qmle%6L)bbD}m2&z}F+;2z z%dJ)f7q5hnC#(iAmyNRIR*zQ&%73#TMWeb6W6A!~=(IYvi>&}&UQlD1h;#+^tnRuK zWGk&*d-R~HbR0NkY{5g<)itM_UYvNOS%BaD#1WF3d+tD4931Ni(ufq+g9R( z$F%-HTQ5~LO$tCO7{mV==sN~lK_fX4a*RyZNNzq1diWMX)7ms!9yB<=VcR`+^qfYa zqXpbStHQb=gn$=-DQf?l{Q|sZe)cI%%|#oPr>53!x=#w)_SazxqwPzYH*L@1=xSCF zO{oPMQ!~t}H*<(7q`ZxQ_#w%Kt^$607Gy=O z+~2W6$P6W6xT2H07a+qE6b8{$5?3xk*@Srh>IxT$oI%IcZnkbL1{-a&z09t3QLh%rls&-X#g;0xPPR&71v{HvEqtF8K2JiLd-yvTp+RV@vB z2^Ho73+<0@xs-z1*m++9`IiEP`{Ym6Cd~rqf%M^s{+YyOVbm?LsIxA7?vD0>WjVOX&T;s&!{SKDcCf z41uRvR&w4_BBfIC5WM$uiS4kFxV7J?mC*8HKh36)EZr%4%XYU^&fQg|7J`{QnoSoD z$nCD{J6+db+3qPf3tK{)Q-3l>*@6y(%enz^fFE|lXo2#Fek622<*;6nV>vm@?xjIw zNz4b58Z?TVF_l5kXJ#(|~u5@kqr7KGJf={lfG_jix1XW--#`n$@NWNzj_bLau1`%kpLXI=} z##a$=IisQ3!j6<^isE)W1{pFsf$3;ablG`L+?vl~%k`-j5L*fyye zvl;Oak#v~^5x3y{pu;b?H(*G@n5UE(1*^MAJFFygYmhSoDf}e>nNk!HM&ipp0><%o*K4@uDcGj38#_ zXUqPlHy;TKqwZw5Xve}xS)QOjq8jNuWv}RTpTg`no@Yd##H-jzrBt%PER&`L?cQM5 zsK|r{rQ}j`byl&#!6EicFGCwh4-!hS0!?EifRREI&mjt>&=|2>)fzQ5l*GyQoZpt; ztap_i&-_v97CjAGRDyW9ggr$^mG``&)6ESUgQAnxOE{1&L#Y%?zWQFF5opa#`-Y$c zV5HH7yZ0NzrEP$9UADr+bVDUO6-Ci&z$&XH z=akN7h=|BfsPlbsC(dqJtinc4r1%rc>rc=k1awB95YX9DhRzK~V*o%DY4qPAgQb)~ z91Q?i_kmpEfKUQMG^IW~NHREx0^t&c%S85i6Ve0?IVX5PH%4GJ>cZ@HXKtDKJdHx) zMfrxSwFQp3>t4`^_~(;o7hRkhs;2*M?3EmchY;ZyMIzv8S|kMw$_e5L&e9rKKvuy< z-nEhwKEIgk0udYHIiE85O;9NE60MLt}u>f~&3Fy$!8hzwwt+t%ZNu(8Wl@{?QmB^mDz~8YjXuOj4%*T3u_z z$1vL$;KS=-VNg5LFsMM$#0g8G)kZIDv9W4ovN1J3C-Ig;LF$r6QT=Kn3(qg-kQ(i~Fyka_4J`D4y3#r_>dkIyG|3p-TT&6~+E_#G&X#Y#*5 zT*&Ub9^u_)uH`8-&=7`724VH<`=zBEqJd#uL`wnf_pjPH!uZ@c`sUBG6#{o`^XE_y z!_RQd<|pbjLD_mS_Kaeih!1LK$Gy^PYu~8ctG!Trwn7qED5TBK{>NmFvCWQ`BkX~S z6VmfVv#6@sv1mtQ#oH8rfVkd?Xrs(p>Y9XYi{}xULzPThdF0^hI(2DlvGiDyq7c(H zBrZ{x&*2ee7Olx(24mx}?rTqb#|KL-t(TrdlrVJSGc3BL?)WHHyl8@^KDDl5J z&UEQiLlfxx1_?Nxr!e)i@> zR|VzcR4|X*HXe+(@S9C5sXX(^gY=`@A}r5*$b0ts97!!@E31Q_2o$LcSWO97Om5B* z@=CzM!0q?cZPVol?K#sVEF!JHtRwhyOMp4o;k4b5OlqRg4wCYcM(W%~5}h}6G<5^s z2;tRRze5p|(BR=gYD3NvCLy(%!0T{Lq#&XXj1y(Mq%LHw9?4q0OoPc<1Pq=oPci8T z8YXMWS}}{PHJ7MT;8CycUqcvG5N1p_0c==m5SJ1M9M(n|fq;$4Rstati>Z@}jlmYO zXs^CB3P|n2Lq0%if@FZyPLfeuR?z^dNhHbM0I9Jn0I8U{<5Kdl`8 za8g6CBIs5LE1O0n!iHa0g)70|c3?CSAhdx9j?=&d2vN-)9)uL`DUhA`JqV z4>!%uhCOm=FJNbeB=GI$qh2@t^=6wmc>uf?J?lTPD7*Xvn+(f83f60vR+iXj7Hu!V zo#!mkloIH(b)VS0zd41jhl`k=^Ah(WgxVg<5Nf3GPM3M28`-%f*E2uIpf%zMG*CEJ7mJ$ng{rVtOz544?JQNnQheHk5gO*X%&pRlBs&*sh<>oIQspss6{ST#2;Dp` zokR%N8L%<^OvMEO?iqgHV7Bfr?4NI(G}tFnFN$8yhDrA(uZpqS{;2#m*jJVe+!nj` z8fmast4s50U8=K$^OnLPtd&mx`=I9i=kubh^gLM1Jch#(;-8t97WYYV^u6I6005wj zO|fnWw8xpYm|q-O_V8LNCZh#1SWu2S=F%m{TzP+) zm$k(WLq-49c}%@+w%7nhCGsLpYDZYv6KoshoU$nc* z-j@mCX;1bE0)+_~M-xZJE==C<=`I`#vBv(V2q~1CGP65l9LIlSUSqt%o5W*hC^SbI zOz!b!{XUj-IUXK>9EZ+<{DJ5KbZ)>UWo=6|*Xw0E+|UTh9-R#^iMNeh)z%;Bb4~0R zsEcaMu0)X@AeP(S7`_!Qh+$Rd`$JlS>{LjjztGVXsijzQaqCYcy-y;&qpSQ>3%~Ty zy@hA?u^8Cx{5z!S*km{9-7y%>Xmy+yHW;@~q>AkFO85V1BZXxKzLo_o?G>Uh2;TDB ze{+QUi>n6!^=)h&qSpUXpE&77m+Xkzf&0oX`Kd8==%6ENB9sw-JovzJJ>cYOkqB7Y z<`Sm|jb-Ht_!`G06?sLY17$^@ z29b&(KK#otM3rQSZ<(#8?cc4}bm{ChZTiLZnl@QYx(j>S1U`IE1uaQJ@E?Phga~+0 z+&YC4kXWoQpk+IiN{k;eflS$Vde%nsfmV{;Ln+8en$O>m-7I1&iTOeDnB}E4$521R z%eh6E#W=gH-f7{q%VgquN_$T#u-x$T88bf{ST=pD4wiS-Tc~Ope{?!nF0q>a&<8n! zP2NUH45abK8ii!+|H%>N*#Usj@WR4? zDhfueizIu1An{TLph&WVF`K{cMn8^Hr(sI0ME-kN{d7d!X$w;%cYO}18wZr1y4bF! zQKy4B<4xmwYl3|;%oh~2eDJ9FasqM(IVM`G9QT@^bB2p;!71kR(@F9Asm1S`Fv}uh z0{%eoRdWb3O+^_HVM=Wm0TK4IBE)l~apm=tb(IeC);x;*lBz12!a;=~vIs_$u zmgZ3F`>e;g@rrHrgHyQ2=3`%*n~x;fXBW1PV+CZJD=InT>;#$dnynD}@`nTIp|mK* z6)Qke!A)%-Hav9ypI5|JG!2$s1L;2)a=86CU=sy&o zuRb)O71XAJ^R^!aI8#_~zEW`RW%jb~^oJ7#*)=OjJ-!gJ)SS1WnR7)mvd^>%e%{Fc zNI@E4;f?%6tpQS5{=-jQH2In{Fh+8SLKghFPG$9sx7FNiixz?|wgyK=xQR?ETSx{r zNl`1J(ERYo>^iREp&=+0RV?!#j-+@29+%0w#2sD1?+>@uWqv@$3M^t$<(fb|^_%+y z=kl$+vy&@)=Psb^x)pXwPs1#8arVV<1zsb^fK{CCZD?OyJzP_N7~|nacdeD0ejzQV z`NDur>8faO%w85fW-bklyY8qsHjaAXZkWkqiB})1E9~&&TrBm1P(VJ;l29ZFOvkZ;w>VdU{Y*Gd; z*s%=6;<1InP&kf(K_6_iB>jISdAWJ&C<@sK1BK z@-rv=K`b-Gr5*>t?*D>J?Qi$M+NkKc6PjPDCg0HedjphNAc6(L_!tQjZt08thu>DEm9X zJj#CA7?@-NfJc{EH0n-n)$xR z7H2O|CDcXMX7+bQK4DkL$T!7miuim6Fz@ECgg(R)BGga(VzH_(sC1TUbk zU2Y!e@Yf*-D#cD;^a1H|j>cl>xA(_izb`T~oH%L9c`I;>*0?KD5J6mjbaB3#-Uk@q zc`@xZNNSz+YbWzJ94~(ez{NBtx!9G{c=5O#gt2QVzLc6Zqjl=i>~nqx!G?)gJWsnEW6#@2~x1g667oL*BU2Th;NrK97;4y246nTS4Eqc%rK3fyfd zicU>{by2$^?mU;Lou4HFv4j_MY)`Yd&V`((+1r}z9>d-Q!9vp1TM0kLI*9?fE?bF| zGO4XN{cBQN`Jg!~A2jEeNC(KxkEuFG_pDP$6FA_c5t|HAt-wK`RCbVqjwmdP#$x@W zK}}gt_E(gHNVS_wtqn3XnLGADScKy2y=`|ZXBFF1(QjdD2f?ZgwaG$%crkjy?5TNS z!v#CCjRL}0_Jv}UlJLsY9~NWtOxX;(^Ap#*3p40IDWnHF0W7n-TZj=R{1bpv`$wUS z9Ncp>!ocsIe&u$gKpKZ8USxPV&gLL{FMA5@UwBK12KnA7CMC7rnVMQ$m4ThAvf=!& zmum=um>14G_{kOkvL@SZ0y#AZ2YeKE%A!8N-+LOFk7D}L(;Q+6_{H$~FcVwu=_d#< za1dutb)rV|=~8Lvt`LLC=e{6}44uMSqHiVNg4V=0ZZ$lC++IF%ud(c^$f8;)_`a5zF zbQ$?E%!W?|FS7@={S%8tyTTbI^#treGG*AsZA2#7+Gm3JiAaSaw)0kzV4g)+qq>+Y z&zxFjR~YR0f-4MK0ND257sUiwsq32Tb*JIt1(_hxpf;VZ{LTv~@wPfC)EG{N1;sKt zqFpMgarj*zcF=1U4S{^liwetyVWp%Vc!Psz6@Bn9xwQjaLJ}Lp-zg5(yj9ios%|hg*l{DW6T}n)q^PcX(mT9ToZE3y(ft6d|yFtlo(HDsMO6VfUP;4#YnBW!sm1f9DBR+xIFS>&0 zWmVFXH`?A4=0C3BAkFM;M+*qkTWgw0NsT3HjHulRxRH?>uJnZK(>>9hG#_iixboPK zN9W^^tijm#bi` zh3W&e!B#*OD1U5l(BsxRKPVvuuf|9b^UjrI9?4lb%`RrXnBfumMDq^)1$m~pNJ#G- zUN2)UXfZG9@Q27p30>p==Pree@#X;zN2bHnn23zhi0>2kAdOBY-J+zL;?E!Peen@DGenf!g7=tcYJJmt!LlLX3r;ayR6U zj^tqgIKpTfI~?ASOXc#r2Vi%UZDh6{iWBttNZTcI#y`PRrD&7C@paCB-T) zlr9KX&S<60*i?p}L!5g^Oh=tFx#`Aqnxgr{Lb(Y>R`Q+dD7Bgr32!kCL{Y~jjX|W2 zr1cL0UEQv2GuX4ilm@pc{utz&c1;4w-+usVZ{BwryKp(mF43LfOqqwry9S17>EVALF)0V!!G9%F5)S z_>ByZYKu(OdffLACJ?EOO%27*>DeVKS)sO`vfG!~6lJaTyvQy+Qg7Kz$s+3#>MnSR zgV|G(O+6)XG9t}qRCB!BkZ)~nX#FSwgaRB(;uZ-|$*`X6vd;Y52b#7sri|p;R|};7 z^jUwWe4f`t?ozfTFHJ$X$@_y_l^1Sof{IRVz4dc?15b7NHX)xX{qSx6nx+$|dbV+a zt7O!bp=2y&4zNvbO;3(qpd|6Q>=idDgx?+E_m=QG9)9gA2J-I=&%09Sp5YD+y!o!8 zGm@j6IBEAluz=hSa6@y7-Ayy!`q4F4mHFAR? z9uvz@!8`a#>;7ia?XH=_pxkod)i>W}cm?oZVpE_H%lTD5ZKz0o$$uV1qf`8=VegCQ zH5yTz5N2lg?a5%Gcr)L-MG4w{a8r_B^j7>nbX%cD1mR6iT?&fFobE~>9r;ZkC$IXH zr~#S^u`&f`6OGRZydELXc)iqXtI2oYh|aL!7qq^jle6V*llMaxDK94DkXJZ3TV8q9 zUTt~NTC5KW5V(%BSZxLq76{u`lj1ww*_V#W{tERX+RZ3$DWZdRa;ENS*hw#uxMsfX zTfJ~_U1+L1JO72fim~(JY5*j{5EyCqZy?D)!8RC4*qNGaA+!{c&42L|n+d1`H}D?K z9BL9SfiC+|s2>s?o5QQQDGyzafOQt=1p{F(CKWOi_;u+(7 zK_0zI?Sw51k;EUS%@6Si<+7?H5Bw0XP%MLxgb@wA^_^^6Ex@XbuGT9iT+YlE?N25I z;rx|D7N{hHHJ1jO?2Y1Q^?)n<%j7?m$XmJ)<#UB2gM` z;@5DL2>$qzgH)Cfc3A=nmG6Jsk*3We13Tb+(~+0Vl}$FwiR5yo^&U-Z++@Hf#ntwdNrv&m`K`C49*@P31!`SvO#D($>*k2Kxca-y ze=0*fp3I1&jRIykt$EA7C>aKNiOg`OfaLR{PU`+YY!C>G9}Bv0;3A@(p6FaH zsI<70o#(Y0O*EJK)at|I0CtIV0GzUMWKYF*7>roE5GCH3xk5mno5(Yp`7KI`$ zTtGA~B4X-C;=TtKk+qF?(5=eASO`xns=^>F%14Zkrq=vlD%?CNcM&nkRFW&sXKYS3 z7=sqWkxPM?n{9sok{z#7iR(=ot%;b4D0)$D5eJsw=^AM811p3Gn|gatUzjk08yVe|q})TS z5gW>1gw1=O&IxJf+T~mEkH-jL<#w##lKNFUJK}jwG0KKOn1B6O!hSoZ9_Jqo58B!1 zw}%H)Vtp?>u)iSW`&|~QPi;cd^KaH7g$u1LRQN~lwR-8gV;3)tnCjLAEzi5(@03!6 z8vtn!*Lt>=q}GX{Cz(*~+SZZVz6bdaJ-&-je6Cw5wPt!qAKKV;5Y z&!eq!|2g*k+Wxbl#X;l|#lhEjsFc5<0jt5Ap&o(PiQB^;=~fU+Dr!B#Y;j9$zRB*= z8Vq7U41pQ83R199ZhPj6R*$-s*%XZA`p#5O2zBZrh^lrobeAx;-eRL0H>sC zD~dSTOEm6m%K(?n2zv!0egz^TeCM0C&pAGM4GBDe`FjZ%^7jdgA9-FoYnjIg*TS~9 zhkjsyr&H(m_elB3M_i!g2)r(`e~4kHC4X-5c+yyQK35USEwN2@Qh=TC7*r&dK$jm> z?-F?zQ|_#yoLBSG;;~kZgcz^JuH2(2fU|1iw*GBqPc^cSa#8&U1A~@!7drJr#XcIfU5UJTJMwap7R-H zS_T(;KjQ!BvY>ii)t%PrF4C%_NUIJ@*XkHZ!70b+^h_&5A3!Lq699pjyE$gjAS&81Cv%u4@IJUAph;9usqI`4behYfWSEtJ$;m9lQFd!mO#A3b=V@PsBly8D6){Lb$=Q&+ zR*T%82~e(QZ9SUdEV-pJ_w44K{FGUy=U}RHW{;PR`SEf!Z17_~%Tp|(^&sx>1zHO3 z5Ux~P=Mr%5vFcZoLEW~KMyc?pM^#&-0^$_V&}%UUa&+i*0g)qUC5F>;J9G5H4nLib zr68OL>BWhocz@e@GCinHtB&(5b2vOA2a;6Oi3KvJ0Mpc;xITsMXJkMw z2dV}pEfV1!y2?9oRd#;%xb+*TrJcEUH;&_f+UW!Sf*fxRnmhwZaL23g8j3?5<5qfH zbEg@w(l(P?OKE3bm`m!?i7%?saWCFRv&}^_`+48=IS@U)$cAB8e0H}k^t-5h1v)~A zwy_Q^yd}$nGeV8*TU_J>qzH_3s#q0`vB1RSFcOmoXSl!D`rP0rI(R4WrP)10gH)A$ z2TgZaXHo0_lPF}EH^`}pG5`pNEW-g9CR>HJ40O7r<|2z0HuRV(>DFn)1*@?}s5?g+ zjg;xuP|5RjL+-}r0Ck~-`yOeuZfLsTz(^rFCIm20u+FYCxQlHq)@K)%B(Jc6j!v#o zR5sE^Mctzg0P(aP+x@G!e~rDk_&k%G>bLNZWE^@^_(pyzb~RDy9LXX?Q$?Oe_DHFy z`w#R` zm>IQMw~Y6ukKqM|L=ZFC|XK!&~mmVrDGKNS|5Zje1!9Zn#{Mm+?+yB&HV+IKjxio1qt0!{kR+vBOq~f8SIVFzIH$EWM33^Fu@HqF zXp+aaZDH)wTss8ETLP4z&zq_pr-*goy#Nx~w)N`5wqPPJ6Qn78E*H0EXIexNTH&-f z>+#QZ!>}P6V|FQbkgRrzx4ILT#s>kg*bWO3uq$i(-4rBzK^iPecyfLFxWx;z}b z8n%Gk&|cvp*qeO`2#EmTfn}zdl;APUXyG2g(i@B&7twxFmFZv``D5P=dkwpC_)~aI zFzu4}QTXgw(WU~wa@gP*kX2QQfVkN(cmrtGAP74EM3}&F^(Jgc=y2q*FQ}QM&DJ{CPoaK$3Q#5w2YhEcb;6>0$<(F9zDad)p zOlV&x5)tPgxsk5(8bYoAgYE@d;94@y$}cZDX@T(_7Jk&}f@^g(sp7+Lb?bxPVz==9 z;BEf01^)5AAs!j$d*5U^g}ib8ollmz9jS#j{#Br%8`{_`|92Y@|kQ zSVOp_V3*r*U0Jgak4F(e#)C8OU{5NKzFxwygvHB^1MVQKfI46~1X!NTuyY5?S1*Q( zT5u0O%7=UeTedGJqqJy1!vS|uJ}F~AadFv$U@!$wY(xWWDDX=u@74LqwU!e)Dnbm) z1qX1~Ce{alV(O#p`*@Qzw7X5R``}050pe`~lE{m%0V?6v zmg@l(i=PINFuI&@_qfvjgE}*au2&Y;d|b2!^z(y*58P4OIkR0lcNBz-c!rRHk|YSi ztW(?_!owI3mhQ5Y%f;B~qt(;al7T77Kj~srWB$_ewaMr5yj&hl z(O?11s;PIIrG`7M~p#p>Az8t39y_V#RkWp;MmZQ4vxtz8Z`ujp z=?G}c<<(n6UndHUDcmw(hLr$T$ri!x4P*9koWbJW za|iY?Zb%gKxgG1fGoNw{peVU*I)aQdj*J5{r_Z88k_jXapl@`u}E5320*J9TL$#7Gk#EWp`8c=HGb0Uhxql<-?*R^ri=CfT2${!jvEv z=imCimq}bA$L+#R`Sp6Y{ung1+_icKihA3#*8ANbd6`hJ?f+J52dRnp`cE|wmoNb{ zIRUdQ2Jr=UX;A{ik+QX$MaGe=w|YHMR{0f=^jj60C4_aeA(cK!P=f}&#F0R|%s9Vz z%7!Ka3hmY|NDR9`l5llXIOS!k+b*Lyt#>Cy_&+v}+Myf5gY0|zwR%rck4|;p^nB~M zV<7lRE9$U5nl3n?6$}U`jU4A5u+#_EC07i`AIuWqPXlO!_}vl`fQQT!ohlZ`OHLtB zb`hZaJb8zS3PF$Gn5bgXtob)`px`JLLW`|-x6@836N;fX=~owIknVGFJWnpU-nGdu zHA!J*h~q|`eDS~et3EJRnC<7%*0~bP#!M`eKE?ef_TTP;nZw9M2$8<90xf8R1Oo&q z=`T$3f_LPX2X71V$%?aWMLY4}3*W7xIDE7wVC}i@2+3v#KHTkLCafPEbV5Ogjn<|J z7O^RA{r5P2J(J<;o;SL1ojr;qXTx%3yc`lG5aVPy7HeBH9(&kGUCiwS+V9lnD+E{y zN46@~KbTqmM>>j(ffwb?_SvTyj&a^W^~5>q;RA-7Cu8LXNry~@ph|RagTXrA zJzfP2mu>)9vI4Vuz;F}@es`cL4I)z-Xa+YjgKrKl-=Mrege~Ju1KD=l&D3E{VGIMQ{6k#2#NeC~DqLIA;bdk@vpOTGB5x}%z!Pt9T#Db2&5RP$i=74^!iiYy` zg?ZD@U{E`LG1A$@t)=oTMel`vM-8*M^WC@k(hkl$%i6ecKQoA9LbY>gB-zE|cTr5x8Zg-9xVf2j8UgQ}e@3z3>$=)O?szN&i< zg;x*t69?M{=`g{*37-(^S#qPPjfW#Ey94d2xW3*>(AgoKt!E(iU1%KGm?E_MZiCwmhA5O z^F#gF&ieC%{n_X1&kyuxclk5SXZnPEZsz+i4R_Yd-`}6zF*9F){O$F8_w{F=tv}z} zua#%>Ei!Bfo_#TBVS0I!{ZR2U6tRR%U9ZZ%?TeO0JWh1jG^_|c6s~+9kOSZG5EFre z-D7s^5?C){N(iaNzDmUEs^dCTdOT7;G`JGVb#KYfAT=^Rx%W$#N`C(#*52~ApPc~gC`F50n}9g_7k1wB`DN>-9{C&Q1jdykTd zC21`HtkSQ*gfw$JwT>bc#v~ZvP^tB>D7$T*du~1=?2&Lr)r*8Le?VIKFdi(Z&?2-X z>(u4*?WQb@Ut;}KM$vY>QljblrCjA*R#xEK$AoW-s1|z|SRh)KKm4zAiDvASU~V?C z!aMU=U+9eFgva`h^0!}=o9VKEugkK@2A)r~{@fd~eIX^A0(4pb!Cl9&(O4)(w1x&@ z8~BzVxS=QCb5(ctsl)`scP)!o*hvQlEhmzWouL;9_-`j$jXwwUu2g617wygfG0K(SiHU9VCz?KmoS%{G2TD=uvdF+I$4Dz!b!out^bk zf~gfx3$KbZQUj`MiPweDqq+vXt|e`3)6~Vs!`6j#sBR5(AV7`I0hh`<%2G*Hd^~Jbo4u-YI*U}*5ndJk;Tqr~uj+{Q zBCCpzhpkFG83wq%(^6I3H!Zje8L6t}Rn2d=tSUYprYb7g7!PtjU?_Rb;D6B1O9!8B zb2Yfkz&!Xg32W(ag7=DVBncs1EJ)_kX6H;96rX0Zi7S~Fq3rHD#MU7K(Q5f&E8jei zgh?DMRbUy3i#U|LYH*N78tJg&6%Dl;=+N?*V{a)c7QI>y?Fu9y)bt-{F=`J|(Y}a% zYM)KxV8^Cl@DJJ=Gg>LCK6`L+TfiJ#uBY<{SI|&ILxfL2RKy%k3#3AqSl6O`=pWio zR||Yx0gc$Hfe-;^UGZ^|HNV^`lMi@tdvV*c;C@DzYMEPSDx_IcJ6)q>o?m%eA?y00 zUa~T*dOlQ=n&!|czDq7RD8uQ8%YdV!MoB$)21T#+^GL=?V@Jx6a?Y8g_&vLQWa!ec zYP4(h^nOTpn5rH`atBYB_v8<1L$VA9H8hL^pBl>FfNF<$6s*cK?S7?DQNInjQ?G|v zg^fk7O)PC_K@lL7K&dJXV=iZYbd*h8VFf$r#kR5sMDStcu_7uKo-7}RMPW}`%9 zqJbkA@yvF^LhOhKwj<#jJSDqY-rPI7I~Ev(w{0#E(--0e;T#EOiI`E+)D_yzC2}&s z;um_3)~4)1+@5zD-LP>M{YVU7**KN`AZC*F0~0=`b#9o0ya0g6_U&&+$& z9~AF1TLyXOovId3y>J>JxZKDZ^gDF|Um|*tI3Vax3l$iu z_oDeOTcv1V90r8oU_}7HovfY?p2Wl<-7kTMBo2O4A&H0IKKX*&4xg6Yem`z-2r5cW zkwl579D@*Ob5-PEm&haqVeJ)rf!UIbnbMiyBYd+jH}D;A)hM6#}1s zT6@{?$$F%jqnJ2h{~nMavW26ia;|)!4e8Gj)oDdK4q*PBUGyy*^zeMR3*l7 zYYglgi;ZBjtzfFf{&r#RLTh7Z2_e?NwnMcK(}ZAPFQ^3vJ(we6-M*G>7I*g!!X8u| zpuJ;(5g9bPufQpwXrt#aZOr}s+CWEn$Y!#`G_&aUYzBMu^wFT5XPl)7Bku>!fXE(j z>V?t>cLO7&B0~*#tF*PkjO&TTYCf_^I16BT?-^=wPs|RS6ppaJ3+?X$`@6*cX7)GD zN9^E5QwHrYg%Y0V$x^qO$d}FzNgfTZaMoXVdbI63!P>7i*`ntAcOH>F(tnha4}|1{ zbK?27Q)drnJ4N=5-5wJ_M-I(Ru{*nID3~;|kvSpXGP9k@vvex*jbn`FRiCq)7bFUm zF9A`Rp{u>x_LJNQqVYxK98%Unp5gt@V*L{bOjnv zYZ@bhh5@{@+o=>Pr}JdMGn@1A2xs>C#NxHMQ=9+?UO*!YsA)R~v(bLi5P*&r)3{uB zPiPdna>IJu5+LW%!?3-BK_L{WV$S5uITIc|x836$4G;~9eOd@O9@_0DH~Pr403sC} z!+qKSeKs;guS9v9*^T&RNwVP*1SK7I-X*R?K*oT#H2I%kaN6j~klKK&80&&Q4<%=r z507d{^JnU07dNQS*p`BHps;j#RR1b~THp%nk1pfSEH`TmHd>IUUf7v~X)IdbnRj7l zK6ZQ%pxGt?&m)P{(4Hr^g*iAf$brEI0%Em*N;O(~J0IxNTQ(oBe1$TqPHiCR^ND~h zaJYau9Fj6_Q!y};+DcYNeL|il&2grODo&?jssJqwtcHCUYs>W+@DC)s00B9%y@vMi z01p>Mx~5s}AbB9O_#O*?ObU4)6M+ag2wqxM1)M_XRRF*gJq{^)9C#+oH=?(KmCe!V zKHlt!qO-4(rwmAFGr_HFf~VTCZCZe$t%N#0*jf?}^r`Ho_)OWul>~|VY_(}U1%|28 z!c;LYZ69d0J{tQ8^3pH|y0E*&H`){?=1*;6+N>&h#a@RhfdjRicO3vQV>Ij&yg%OK&LsRP_`{%!n7l~nEH?x8mcq9}d&Ew+B zp|W6LfQV67D7iWAZ;BbP5eb_%Qoa!*Pa@HcVX`dpNh^m~YAx2v*|N79oD}5ZBwQnH z<$yc0Z3jS6+;D8fO23djA5(6R#2#R+;cB=9(yfjGO(-5q4TnmRJ^oz4Ylx9N$mHeA zA9%=&k?ZXm{W)v;C);n$K4O!&t>-R0+laGr#M;)N873ELayvx+IvDvU3t5wXmzMBA{EJ;);wUF6hN(9Z_M~ zEpV9qGQK#cvhF}*Cn79&Y8pV{L>Fvvq_j_iNwyso%fX`!CnN|K=+%t+Y5=}b&XJVU zknFgTnwms8#^CySC^_lqCn4r*Jc`DV`KsXEO5Y+;g6Ujzas z*$2$Ap(`)W8II!mnimHUH|e1`aX6An;GAzO9LUlioYea^tb5usMo;;`Yrl8fL5Y*X zTAVs5y94*oe2UDwp8bZGTs!vAZQ)ZC6>m;j_neh;U;df)k3#0rc?Z{gQqjcBnzxZT z3jY)p-c}@L);v+qT$WnowWWzgzUVo;h^>q(jv_I=}35+0_y( z2lbiEWrbxo$~V)YF)>TcWfL=NX3gfQ|C?Rb>0of&)rapU(a-T`O0l6L7xCTV?B+XJ z9NcIQ-6_vcS81e#@;wC8(=`JrvIB&xILBS3>+e<0^3=+y-r}6M9K4IP$`$D{Pf_l+ zH#o5=4s|otO%b_(ZzfhME>zjzsw(?uIzQM($UxOdyTWR=u zbgk8!edMjZvF%Tsk5SnyZ)fC%9#bcGYfj7SZ+9~MdJQuAqIjC#zL|p2Kh4NX)O_-e zV?wXj;BWT>llohNIgocV*E=5kc6844x0^WD9_N!Y^7`9tGwPkNygPJIpn_NKZ})_H z(b}V(9q*@B6l48E$)rr^nr8scCk>*1L-telmY#LgjR&JBv1Vj7iH##X^sUN1GS6xr znRjsZNdqStYT21~b!1!X;Or9yQQ<{Z`zUvpkbQK~!P&rO#LaW-L z)*x!eg{TRCeYg@_YqEY41lOo_hSxNP_?sfh+CCZ=B!cltXl;}=HRyGc{dm^e(tIrJ z9A52?W0Qa`rZ%>e#2rBfuEfMB{8PTkzJlI}{hqW3<;)(OuxtP*&9)trz5VDxRnFGX z_AC1q#7oSgvMBp1rrkUmj5L1>-2Is_9Sb%fntXR?5bJb4#zUe9bay6jbhu~lLKXB}mBdKel$Xb37RQS0z?BHl!)ERm#_b-J=oOO431!dKr4 zx`Pm;Ty+P65ocwGGH5g0n|)GA1_2_VVd7dzJ)82K0vZJ?hnccV-4##rEmHfjHn96C zKs?u*X1DaPtmb9!Z%T#Ol?%h=IKW>@0~2i5Xe&@h>VH14o8`aki}qT4oXTq&Rq1{JymJt+q= zxlLz&jgSVBetFB_*sjOQcY?>^3v{P;U(e=FH>Dw+Fq269GN}U zTQ@wrY4zN;Sy<7*i#}Orn7IgdfL#2eH+$!N^M<0?-og#4w{nAuPSNDJ&sancyDTsL*3lk;NSJ0+F{sQG(filJ6PRrNuA1(BDp<6K3E>)0k`xOY&E|}Vvrc7=yRbdKb~;El(Qm* zrk5}$<-5XB;P~Vg{8q4%=8KrNBULRHN-!4>5n8Y+PrGnXr|fO!K`X=#=`qPpB!__$ z(s5)S1$6*p2{>d)@R;Z|geO<-?bC8+ye2a_dOSrjd{I2>jw)+-?M-B42!#OB0O0N7 zf2IgcfC?|*_I9420{}}ggtGq$b6{EM%F)b|y8janqqn+zJu>T;o)qIqyo97eAB8;Q zBrSya9PipKGrERmI>eZ=l*Xe4s&GoU4#LTPv{>Fbh9cfK7)b-v(aO=a(50SE9osBL zb?DhBRwi=te=R2n>Q|Wd$dnX@K)oUeM#|)mmHjyfu-b%HvP8Ame~rfvWIaC2ckV=~ zzI(=Le%>!0O&N`Hm&4c85tV}YnQT@`7Hu+xwfWm@A&5vJ877h9N(^`2tVW$))5 z@H_{~F@Qr*I?U=xPwh+T0Q40!#0||B6cA+%T%bRHwzRV_EC{O?eg9F+B=q*Vp(uF%E7ATCQ_Y2#?a`u7xI8}iXNSw^@*O1GzU2%$UWx^+efmZ zf&FO=pn=0e#||Q&>*tX%udBM`Rr%y&GBaRBJIBAg)PJzKvvg@jLYDCkbg0ke{O8&2 z7?K!4Hw+F92#v#`>L?4g-cdc;$+eUV#)}WrySy-Qm;zs;RSwcRH0kaD+Svl6J^yx) zI(V9O@GKN~nqolbw(SS-G#xw>6?p8+OFaYNp)Y_(Arhy7M|{yNJnL$diOZAH_QGsp z3GA@|pJ=rv-n>JE%_87}sh^4vwZ0X<;dVv5Z(WjoZb?bHO@NkIp8|iR^CPl58(<@o zgCPT}GgrI2>C_~h?8|s+a|PGOx{iYJ>2HGIWMUQkRYo0&96|m(s&zuJb>MA4`#N-> zuSSAp`%r9+D3sGIg>td`f`6e5K0Kk+|8Q9m+eLFZgEJB?oAj%>DZ*+Tgv(2?mB1{n z1&hWyh&aQ}hBk$s%tot!t)#a*x-7dXx1-i)lY~Hx5|Kmo5PVy#M4VKL1)ON zk$Q&or>#E&*$-rEu{a1#%j037wK2Sw+0b@@#1>MB`bzm>mVY@K^k6QZ6{oM`n`hVb zg#u`+_26YX=@y=nEt&(jtKSh0$CdKF>SW&0w=zhg$E5ISYv8Q+78ZoWO?&2%1z_IW-5LrDGnBHkFe>=R zE+#dyP4m?5DXlXtW3^(X9P-u@4v5&&%H9eWZYL^=Sk%ZSD9FR}&3x&Zb+H$>pv0}$ z`XVljFj}tc6tnxfJs)e5i-86ch+3>+`G9E84r*|#>?5fD6T*!jrX~KA)`? z&JObJ2%YArm$gQg*R>cN^=PI+Vj$_q>7*wKdF&IH{OFgqX~c3X8IHp9+)#h)3;sbp z09guzPD(AVZ1*`l&5VNyyi6W!WXHL0Z3ON?K-H=2+d4qXN?uDh{Ge)*bG^NvLLdDU zXE5k1r;JX?K67-4WMiGDbLU!&R-%6LBD<%&6GixM2a zj_!V)R(TPljK#`6$Z2k>=@k``D~<@np!g0ecyMkyEP+HolZD$u7YyP(AEM;g7hEHY zFZ21*MHw7DRK_gbc-tcw&EcIF7cK0?PYR)`gW^800ZSQcu$0OD@FQYMl9eBMv8y4H zuEnZcTxiC~ZW7cSMp>j@V1|eVY*B0IS4zL=kosluXjy{-0`JrlLQYDofO!pxd0DEh zZGffN-$Z1jaX&Vv3ZO=Idn&VdwyGCB(CbEaE*nZcpmphjgJkR@=MCa^$tx*rV%{wn zTxi{~AQ8y?RZmnM807pE783X=d_*buskqU69|BEv`p#!SeS`BQ0rj=#!OJ2Z=e5YC z?JQ0@>O;t7TbaIgf5_FZTnjvxdKGdl@VXX;TnpP*`(|pnz*5`OyjmP$WyFsy;8{ zGqi%w;Es6dhCxa@jfz^sUa8ovYGnyG@*8%v^6ej2UnW1^%EvyT^~?=4+1&|Dm`i@6 z>?}!+Q&I!Aj--&~+e=V~W`A?rLVJ^QsxQ15Uuca_8wN85k)snD zlXO|uBc3&g@}nM36}4>*TO&q9%daXLATxjm2vro7S|wD*e{H^$)Nnk=HN9lceqPG0 z?^*zbw0E~QNWIu0h3rUV5lMlHCd0{QMUz4IC-pS8FI~5S7F$tVy4zifrP9s$0{);H zgvjU*IzL?)&iAN)Uc_W{yC@bJUuTACLNriI7+`Bl&Ml{N$e0!xuaA?sjPPUFpbDex z5vD4jdt^7B*@S;NDVN0-7*yUEjFMpqg2d~pa*O*S&U6|xUk!Ac(_XRbc}bq+K((E| zq!V%4l2qd*OTjDQOc2TiIB@skIf3($C(b@_Ot@esTLngEAL(k1#WBI?Y1)X1$~dXX zJO$x3E~gkSh#LAyP0qH5fllheGN1v}TE{jj`^ey`ob72jdqPeIt2(oK&Y@{JvsUY9 zx&+Q>mlhcpu}5*pDElf>nMV0T-}I1rq}6(?lgxGRkV!P-wyN?S*9>Hr9s_h(iZApZ zeB*P!QY6Xuq85gFBjJZjMQHJbIP5YfG0O{=S4Tiu%5B4ryINJhAvS_hO2)y=CeC#-u!a}>#1Kw`IU|QitoqSbMpjiMoaP5 z<~5TjZN%~g&ZB2XPk`R}$Qw8I93TB!$%~R_$2()YOAH{?-xc|FR*fQ_Pk^Nw6@il! z#U;!jR(=6}$@IQ53!#S%_3-2Gi1W{+`88kWx`jMa57$!2;eM745~Y24^UPUxV;Em? zCpwE2M02}9QQ zQiFH`dZMe%n;aDdRo-;es%WbfJxhCtNoAgp1dxrQjjW%MpEMw_+_IhhUg>UZ-bK8! zd|%muk8nNhqIfKNN1N+wBeYAsX79&(^<$s^rC*dkfI0&|W%aaSru>4zPN7 zp#H!OqtzFA6xby`DkDpNIjUb54~bNEQTBZtXpT)x5<}WPHbM4S)7C(7WAzw4;D8=J zh6cpY`I+|lndRicC7)rhp5e_T!_+s0{6xPnw|y|w=Ew)(?A z)gLb5p{j3m+SBFJp1Ah6mh&2(%5lB7{(ya}n&_?d2N^L+N1TstTGD z^)GwsWxid1*jq0%S%28aLxpNn%|l=kYUQ+`{a>un{sy#vN=pO!Qq-h}5nNr$v1}?H z44p3}G{WrI`uM=w=u#=qSm`rzSjo}Dmc)o+xh^|wuFGURB?GUmjmr;N}#HXU?YN2Gm7|>oyVvchxn0@vb>P4v|@)MC!avdDv zDa)_D`J&0!{8^tF@7N7703Y3b-zTu6nR%_7giU+|~cH)`vPU(=yTlS%2 zvKx>GOaPP_pJ0A>hg{z{RIWOv-IU~yPDsj#adiRHzTuO%hoOO7 zz6+n^ftmD&eZ`lwxnMqfSbm_nwndxKN;HXaQRzFU;KEX_Avc4T&ij#U9k zxmeoCfVZGIN{~g6Ea)v$Oh$HyWg5RBlY%gptcn!m!wQna-lj4J_GDj5*G3#bP?jSO zk!6h09AULX*}_^L(|st4Co09MTjzYO&c)N~q>FJ>vfVAjDy7=em+8h=}- znVAbISFhodS^*aMSlVxS$i&(16>3ug<$K|cBQ&o}Dbj{dt+t5-XKZkB=G6oF5FwbD zU!9pMW?6pmSvkuMm#&z%RS_bzX4B@om}AZ6Z;oCYX~8y7JQ}wUR+u}5utK2GPKXK8 zTD6*xnk7ddXMh(zYfy&zBH7)Y-^eB1CW>p3=$w!GSqE}Z^*WF>%7)2Q0`<?t04!I@{wWza=M>rKxU0*$9t~ZfO>r%PCcF0_+s~|RCKV&Y|#qzbf zevM!B?1=Nk{I%LGS+3t4HrH=LuE!6X>+z85z+rP82)Uj(bS_9Gn>_2+lZVaqq-=Uo z{uI8qMg|Run=UdROxI_li&mm5AOxO{hn(t*kCCi6p~>cVc7R@d%<&1)ZLQAk63Mn5 zs!o=9DOcQ+=ASoeANG`(h^?9)RiiO}!#6GRXaPaKb;v%9z_Pv-a((lVxh^8tH^ZXu zEl0oSQ2CEf_CWSv#xnjUVK3oJ&7#bg4BMIYd&R7uN5>gLP&Q~Vrwq=OOguOHdCwq2 zV#8rK0vb`uw|(Qt?33)TBBex;*s83GkZZ^{5obU5?ZP5Q;BYNLL+t8hfW5Lnp@!{QZ7Sn^B17YWwGHZJDPRffSXpyR^+->uysL-CO~$ ziy(G!%gP{h9Te-RsRX2T60l7v;;^MQBCUgh4ZF5Pm)2Mj$BLS5sZLw9u_F9G-}^q# z%giK{cH8dqGQaaY&w07eeeQFg`|X?~bA>-d*>_jNKBMf|YE(P6T(KT?E^^cj5^b?% z)VT1wEXrPh>M-%KT#-SZZI6 z7GHn`o20?=1b0In7nUcBZb;Erp6ovELtqBDztU9x8=557+}Zr9F(1v|+=V53?SrJG$7rny@J8;AQl4qW1bpI?iJCH`td&6G`^9QKDrM z>D{bJtZ18;HFPkER^4Y;XSa>Ywk|at%liE%QL=Em7|vL%`}M&D{=SB8=s zqi@$AzEgkr+v*{gE?YGxUAB6XE?YfGmo1+*Mw882Tes97-d=xrNA-|Pmo00^rOQ@N z(q*eB>9Xb1#^}zfl8w=?RuAC4Sz_kQ^g#V#rg{MH%@Xgrvac*NmK@?ffsz#*uD)!H zj#OnfMxU=9#*!ziG7LxcfOV~2!F>J8vFZ!)B&`wx*i`i(hAME7&|sdPa1LC1cu$c< zU*6kN$0X4~Lwl+(QWncH(h184)7wNdRw$R=Ry|2)3r{eB3V_3{?4Av^=g%&Bexj;> zBT7=4^UU;!_0HPb7|m7Cf~)$M&$Q5q%3>Q4oEARMS0y(_f8`I%XCzbLd|%qILqKHo zi3-ftXAKKqrphC61XP_``eaX=k5yZUo#}O)=_Rhlyu(kLu~6_h^Czq56y50nqp*t_ z;!^ZaPy!h3#a%JEe*myiLAj*MqK(nt)gQiBe|Wb3@csJ3bM=Sk z+XW$)ZB(C4`Y0MRd82sP7!e0lJ^Zn)Ac5LGXNyL7_><~^rIrUYLPt`{T}^WKn`bNS ze(yS z*}qaonc%PB7ki#Eu@T~fDXp`2$5s#fz-Q{n_S(4$SX-4@?HyJ%dk8BfLQvHx0nfF@ z9_7Isn^mq`|3)8YLt`-Q(Ac-s)v7T*cpbII#Nla-NO3x6)yx!)O@_vPz3kbvavl1X z8k-J{vHpa{zO=Asd>|Wj)EeWR8k#@V$I^~fd`U5=E{l{Nh~9cgC& zSqd-akpWwv41r9T-F^tIy>8~u9O2S$qRcoJF#D*257X>E6k|JCK0oFkF((kfNF1AK z-kea8x+}gxrI3Y&Kr1eQP6*Hkz9T><3P9(>co%0~Kp5Cx^LfifZoCbcWP`-)g1j>H8!VeED`F7vcIzkC*?b=d^dkrpV`xwT|xb|D=zqhg} zdUvkvDj@IZ4|38HDIA+tQM*RYv#RE4t7g`q7LpXP2)eU>lZ+StiYc8jNDI>r8J_sN zZg#y~g{}NsmPG1p&yQZgmo#URu9bQ2<(ixj$b+i~=Kj-D zQ%`86>w74rEYQ6sN&0wFyzAb%jtl8oUEPn4TM~o{Uqb28ig8VQ3P@^(`|amHoBWbl|~zy zUKYCuog3E@P5uWQ=}cCvE^+>`FUUGR1C4F58Lh|y&88)}XO;U;Ew`c_LT(tyadTrj ziu2o_RNaTG+)Ul$=AKjT?^xZq`HQ-Z8<@%*Y~Rom!Lq&7zjpoSkf2)TcS}AFofH<2OWfMm}c^DMI54 zRrdLAzUT91Oj^s<6G={c-YQ7OuU!0n9p5+c{Ym>ysQseyr^~uxZvA}bCRKsA_=^15 zn?`h7jS-;ud!AewE=GIyX1>6`n6n6K2Es*o@>2{(lz%EhWMJy*gg|W`#^?l@%PBBy zQ9_yuu##Rwa{wv0D=wPmL$Z)_4#H!lwAWOmhAi?CWt*=d=q;Vqo}9xEjM%1!{O-rP z-E1eMFWO-OkyG7lf&gL>L^(}nl8{W$L74ln86vUUX6T1CQYI14*%+lTB7Pb$B7T~E z;%GNUEzTn6r%hBSKOHt6S~Hm5h*Rig!Wc)r=`w|8Z<&1b%^tVetl|f2oHApa<2r5G z>R`h%-8J}uXCfl!^8%2O@MX8@yP(<4YD-2Tn`V!3m2xTUV&=%7{Ur?$4yZ!J82If# zGCUF)nD2etNHd?A9LbN~GQx85^`W(0`fJNSt-=ozAAOf$vS(MYMG_Ox;c4QW*XFa4 z9W$mhl^dCOFhYtXk zf8{sy0lE)0?cu%X{kNsn-V3*nT7GaF-cR#B;{6@Uub1>5 z)(j@@^oXDQsN)INV+w*~HGSk!e3?Z>=dAHG(=5t$PX>3{)CvW0vS*ad#8Q8|6R~X` z$=<{bbjTEJN=75!H;DDyGbv-=fK4MjjpZOxE94fsi}a zRsoFN?k~iR>%nG}y=gP6Ds2=nRMosbd?^5`nk~K*z*WJL_60lQe$n85P5ffl3n7=i zGCuHgYly(lC;j%3ceefZktaF>$^Jt4yEjN)^62@SA1$Ki?fQ}IAsOC_6HmX?>9znr zdsFv65ewS7o}+U&%eV|WnForLWZui%!MrEvg)^D$COqanrKQfMO?cB<4wgYg zk{u~$CQ5q|Tt`~vIAuGsJBKw0G$mHi%HBV0;uNfEGiUtiJjix_5CNClnc2(UPsCf9 zzmV7_c0cX|u0(QHlD8yGCV^TU`fx8e$7! zhyb8qMQv;ylBK}DR977njZ|KqOGIim7sD{ED`@mq0ADmku`IGk>?fSIia%EyanDap zm8X>y8ww(JE|8T?2+Kh7aCR#PWNI6$YzrVnpwU&jr3U zfdndM?EFEKlSL=-4S#JZJzxc)m3nk`jU)PwVY`BpYA{b2mRuTZOB-gKJKY9SWA}%J zDuAwr?D5!r-JnvQ`-c<5m1y=Uu7hKJ`#C>cBIwX?$@|x2(;HaxIP2d!UGqh|3t28L zRj_v@b%7Q_Eio_tTkUm{_dVete#y(WohIqNoB(Xi4YTH1x!YHYXZwI;KjX!8uby!l z?oDEzhgJPoMiy$Y}FZZx6Tj-`-trAZZf!*le@Gum53gfh>VK zv%w5>WU6BGZ;rcO%{sJjq`ZrWNe*u!p zFLHTWIg{zUmCt_B4|%tGw-pV(H06NDqP5GGwDtnEmY-k%MFUcv9PsO^2Cl9e*m>dx z`a@-fi+dpPlP3HIu)#2=BM2pa3D}^^u?Wm6lv)f3c1PG?ghLa^(IY2(jmrtoNvHM8 z`@P})RCqrb-cRsbUNLrES^GKZ)n&Ekq&sVQw$<`%t>qyWnkV!+{_d3~%`Z|F$7}!| zf--uU6BCwKm=J4Slf-i}?%0n7KBIph@~+SY)i>);bcDfFzs~h;ZQ_7i)Lj03DP8po zAxKV>?D<>WilCG2Z0}M6c_GYxopmA<(gg|%O{I|TSYXLj(r>At5XG1P7M5&)tS2q^s}i(Z`<{yH*{XQNfx6{IjCH!>I`B~omO%Mc{RO<_MZpmFxEENu6?&M z;rpcBykf1JfsSUkz(e>scS-An)1E6ztVrtT#j3@gxJvi4r~k;W{ob*!KJTp$^*Re$ zufAIuxP-n>D#A&qVWu7x&5#^7)|cdSu%Ndl))n5)fyOyx66H8b`Y7DSvNM&7lA9Kk zl#ju(tLS{K=&=@^Fw%Bnv3VdaZY!2lJ7$4Nx@q?@1k>8~Dn$8v)@1v|v%>OaQO6;a z3c(+}Vd3%xTfikqu#Xn|L}7FmRs~>$RTa@t&rZbozV-Q$_bBk}$jlm+c2q4wqKr;)^ZdY&m?Zgacba?~1cOO9pW-o>qG(m+VB~ zhy&5m;npCjQ8$R{#rw4whZR3Yz|D``)?Tnj4X)>nGo!M<@SYt&#RY~2d@;|ge+ z#~!bb>X+wZ;dw%*u=9SeetA#azWp9jaX&hC!0Xvi>`3^X55L6G3}?R;(~B_D$h<7k z1d#yK&J`UqymsWl=?$YB=ug3RB4Snq@)7^G`gq^wYu|cdK#Ovd*zSrt7kmS0F}#>f ziEu&^LnH`w9HuS7F{E9vIwt926LW_o*bYgsWkf9lVlNp+#rTnh+40Cs=d)~(1Rrsv zP)8?u%%oHek6WxX44HA(YC@3jAWX~2-ORl!HbYx@nTpJ>&>Y3KVbf}cowUiuLVJ$79W|eK* zT}WIA!4Z6-bJWBDq^q5aYn z2`Tdw3qi+ItOHP^=jUz<7*9R>Sed<7W?zl=)XAQ!saxkWMoX*Ea_xOj;wK^@-MKXyE!%QMqDc3<>xhIWxYrC+19E6C|8Ks_L= zvRHJp%SF`LR;@K7(&SLV?Rp7j*<-O@Zj7Eq-;mRWjo#8nMzc3e_c_O=Layx#(s-fZ z(IjNQ0AhrWtDOpvId*z#Oh*K12m!;uVek1TWxRy7+YtSn=c6p-Z*)iDiIAl9bvnC= zFlekSvK;g|6bc;xXi>n7MK6~zVR<=h0Y=7%_B7gmo*}NIV)>CGJWw3c z?&MPxSeD~EzI8)?NccP~VMjy(%Cv039g}=WrUv7Iy~5T28+N8y8XAUSv&T0yIQK;Q zG3L#x8rDe+4MSGH85%lnWdNoYAoPa1kGGT74W{1B_}=s5+8aQsYj>u1l-iwXAAE2O zTv2I$(=90 zqJ>IY#|WlW(uPDdrGAF~f?Cxh&rW{$wv8WNN{?a@uuulDj!Xt&wHa^f;iLz}co_3{ zJIkF-c#hqh63L{4M1~N`-?J%gm)+BDk)Cc8Yc_W$jvOHN;)C+o-kMsI|-KuVEqO*t^v2mgsjH zNt8z1D?up)aSVT<6oS7kJi(v+y%2hC4|!bbr4&DK#{-gvVb_!NiRVJs+vG`TV9ZmH zK#wXCA=WffRPvhExKlc%mEKmWk6VRe6=5g86h{7F>8}-nC=ZD5xe_(4USX!MX-?BH z01csXNSU2;&53HvBvKSU*R}ajSm?15Dy@MiO3%CU6c9moW!a(graRe4$YNuvIuknT zG7#1*s0aKpGIR9w_ zv?@ipeqw=M;SyNA@xsf$*IzR}trNL6q0^z!+PD>>T2Gh?gdwzJiJfXY-bqf9L^FV8 zHueS3<}SdLoBcOXtu@1Rxj*Nu0MuAzgdDT4#ymvQA9WE`_Y-Ar-OTJq6JtGAcksCA zM@7X$`J=^O3gWxa5On?k@&P{tmfT*jnIE&2I@W6rpxLK}>FPc+aq(Q&OYwqA~p4d zQ+}A#NF^?e3bSLL6lQy@It(Jy`}EL%H_t8b&~2(7t4HjdD2+uoAlFCGH`~ zZGq;6=d$n-$S|o(vFzBm#pX%XM?+|FsAHXM3Sodb#B#u0`&ZYMQ@bwWX15yw6 zQWWEZrjDvGTMI=;t>_5KMkq8{6yjJU_8i(yoYU{nt>reM*6kRKuI=}rC%zukdR}X` z*PHg1q4~iIYg=G(FT~&^gy(6ZhjMI61MYzDz2pwMHM%ww8R4whZuUK`Y@A44 z9m_fGelTjSo6;y)1}p5j<8rltk<4p_4-s>KS*dA-y_mEOFA$VR72pC?iQi8tVn};R z6p2tEb)ww^sUvIqr!PUO_J^+PonAxgC|EMaXGmSa$d^dvR4Yg7$l6eZkOwlnNTjMQ zLn_6MI%-JuHkUx-uq;9|+2l^A+M_CiKe~Wx!1w3{EvsNp~8A}V?f1(0sbeUx9 z?y45i)63)zhy!w8cNZ7-f}LY6KjI^NpZ~Gxa!J-%Xr+8II~`7IQ&iCD#5J6!B@uEf zEAE|9CU>k=)$^_C!8&3pm8~sXEhX1wJ7i=+RGo({%E*LlaWw9&GK3yQApFj#kYLEQ zmCuGjQ%pA>kS+V|HChRo0pCc47UsYqY-krL@ja=_*KAhu`%3PnCN4x^2_JN`H!N02 zVJw`mZkGqZ+NDkU$jNh4XYHLutR2H!#o9TXy<+W&R*l404M2nKvtED8g3}=p(|>v6 zP4YclM{Qm+>?6AJBm0u*=Ma~B9BTJhIvP;z@A~OCm*KV~`y9b6i!XNx_9Jjek+X0VcyON`aU@)99MzZ}%)jEoL-P$iBXnH`83CyC`3htgNpV~(?P7jy#+ zeC)QAsfOQ4bG)N~>ycf9HKZ_yh4Les)d0rP2wU)^^Q_j8l3ouzGRxBcTDT?MV zcpZj@vY4OMZ^iJ~P?aD~v)@F66*XqAoRflVr1?69M&L(ARz#T7c4faSw`qjvr?DTQ zbrC=K>2)?nFQ?1=ykZbvvvxpWybzR_kBB^p2XYsssuMUXN>>`4W#PM$#mtz#Rzt?Hz4@&*NnLJ#wq|_pjqPV zaf$LroANC>KGIqKw003U%sMrkN`Fo@h|DH&lF)^*h%-l(GP{zcwwWygYyiKaT~`Mj zfJBaj4eZNOHUO5=0LZE4aXIGiSmwkBpIRoSH>O%G)ze^EYBjCrDPuvDD^$F!nv3&4 zww*v-T}%v*!am8$Or}KF54T54K&r&P|nJ^HB|9$Hc&Hxj{)R?ilt2> z%=8lmOPo*^vN|IO;dQ<&iU-nFghgYARD*U|aK=fkZo~Km3+{p?eK+&H*DiPrM7yAF zD4dWD@eD~S)TBj=qz}0cx?gnr*d}Jl-*>u2wt4s8KmY^{8zEjo2>n1FFXa2|7`AWlm%! ziRmhwQPopZyo(Vv^d#XN=D|A2)V(vduSL^dM}>&Gq!pE?rAIW~1LrvZVm+7`K$*M+c0#12e75BgCbBCQss^ced{`@i&>mK*lvYF30Q*jZlHP zFu;us@r3RfgUHy?D{0H^B3%BdRjznojTy?n0qTZB3}@Z)f$ay9&z@L`T{Vz-BnS3T z{*;{Np~P~Y=T*akuumQKTX|#ZrE#rL!j6L;lHm=D7ZVW6j{QAme{l%jvv2o0zR@msGTL0dPt_x;*cLWs`?R@bS!A4|Qo_ecAi4d{|Q$kYk zM?&x>A)9`aR}=nfnY)Sc3 zTlNRUA}q(@fgAaVp7swtg`r#8Z1m!6Oorj?S2jS**jM@Q-gpI@aiDxPI#6@ZCCFv& zD}&?s6=&SpsuU{&*S;!c{3}9(?xmFDkEIYXzb*qb!jVOKOv`!V-m3$6Uflo0{x4e< zY{P<&*3qwJ0*o|HXkh7Q*(2p~0UnqP9C z7BCfzTYif}SaaDk@}#>lBs&;((K?rRuG6+K;)0t?#r%{^n=i|FjIO5>?~fJT_q(2tHE?b5}GCVl0-K# zTLQ@_6c*2`8UYYNH|@rGFF#h5?^Wej=P}CJlcFd<{_c_vs-n4;^^Pvn$nkooOmb(d z&Et11r$}N&F!UH#_l5%U7j#c{?oc=wx>b0Kb?=J} zb?#7%hQROl+C&oa`~5Z!9)=i8^(wr`{gur81%6#IslrlCKE#Vv`vZ<;sZPy?b0SOi zaSCvcqjjb5qsR`K-l1bLYFw1t00t|}m0(d8)+r7D)m8s?R>QXqtwNiWxHHho9BEDa zFw{pLaxQT*5z<1=bxe=gJZu&YWg|I{FQ6R=BfIZ*Ve4QG3r8>5zuneI zOZxcnET~6z*Ea`pw=9)btoN<6cnK1G2O`zbT z{9yY{;IQT?Bj|!OF}n7Cnly2`2BhrJ0#c0?h83AeYK`sKY-cDG^_u~qtp8xG{+U|+ z2k^9n(Kp~lIwft9aPJ00`Nt{PcPf#>?exyyg~Tvj8&Sy8Mpq*W4}&-O1_uVp(i5?T zwpzN7cq@VZA3!a6+?VGWZ^V}xa4mZjxe%{so`{T}nipclQZEDqf-0@S6W>K2aU{ki z4@bqpVvxHl+ILzRS^0oFLE$Wr>Dd=o!f2$PdL#g5em%HfpSWN9@=KDy*3*+W@~)9h%-FC+3D>7SA)(1 zfw4W(g2q@EX_gyl-)znuB!RsD-MB&)Eys%}DMwGj^`&Kg;iqUx=qXwPJA!IK-V;Mr zu2SlXIc}^@NUo?~T)U`Wq-fZ8lyI%{DjFLN-W+H4MO!LYU_j+&kg{LK8T0I_$#fD=FyAuWK8r2>dbb!S82lA$7l zFT8$p$?W_x8fJp!puuv`bPwy{5Luv$SPzA?ZepDkZ!QK4#^YE5`7_0!kO@XrVsE;5 zPo4uIEns0_zS`TMkUn6;COgQ(gu>DdwK55v6!@PYUEu$iT7j-5F-okHV?Z7^h66Mv zCX8xiRL2Bdf2${t!67g6TD5!Kf_7-if(IbyqfGn|3mOdiOBhGjpkASoQ#Z&EzRE|!{SXD(XJDDJ5YqV^*ehaf)JtS2R zHlqUbn3I%rlC`9htRz3Z(wYf6GCa3 zO5^Tf50Z275PR(T5wY?^dc417j~~Wz7_^bTX1jwcgEkE=F$L=@CTX_>1H74ilkozZ zh@3~XwMaWyNq@d60wxAA-WBHX`~}(bNnh{o1A4jzbe;tit$>Y#SXx<|JVR zdtz2@k{k&^l8`x_#n36*<1j_4iL%ehn?g2!`V%wMD+sBh&=+1K2f`<@3?T)h9VI14 z$qsQsfdz?+jjhOT5~Ju~g=GIbiR`uwOru~DI@go36p8oZtzCgk3@K{|O<7|I0vakT z&yg;kOg6u9fcxQ%WTlMRZ8D8k1`3rB)*IVM;`x~KO= z)H~@yf)%z3VN}Oh6!I%u*_a6)h@5>`=yii?8!uh0*El7LFPcSZb_e@-!3p*P!;121 zb@nHFB}oU}%xK=`)QAq81${&2X&K2r^FtaP-tMixJ^VwEL2n584W7eFZE5YghH($c zOiM#vKlC97d{-?n^6lJ?V(Ml$58D|bT4j@}v8xJyO#a|KarTjzXIxqM0JFEQ z>9Jom%M>Ay=HES>=qo|I*{2nIQ2%!0J;s_6gzqs5;Y9sjJDeA!L%JtwJl z8Vb#JXjYEMvf0$?Wm@UR4F6VZ7Jr7IVrEvKYt4qwOk(@YIuEW>%!{dzl1@tVbUjqZ!tL3LEcOSjpaJ(=4KwT6u?utv~d?x0E& zrkMUMsfmUc9E-uKNPRC&x0xbkNkR>ZdU2dBs`u}$2s47iXgjEiig290*osU{Do&vo zpaY=1v3tju;{a}bNRPf_X~5QmSsr`jI;dYhqg5bMnC4*br^EZb;XS-5%IS2Dx@UIq z#PkS1eDC%Rw9dD%!-#5OUt}#CpHMBlmWz(YUHkuH5PL|xZ;j%_7urgIPWm($mXmh@e6bK@fuXAIVgZ2(c*lGtD#n9to7d7 zFW$_=e)%k=AYoZMRRNP_I_#_R5ohS&m(1-Y`>N1nZ0a-5_?#cxWBaOx>?ylzL-*;F z4U`;1ogltRj_YulG{+HxlmdhY;uS4aRS+!~=*m-Kxs>9(A4jzxAy+((e^M=Tvk zsh8S4d=W>bk{t_!Kow6ViYt3>trpU%rP&8AT~J{&NhjBugYE?|#<{j0jGHM?iRqSYQ63U4Ys+M^C2*i{=nWx?hfy zrthQ6?2O4`q#NTtm^huPS0G(n#?<$Jjojq4IU94t15T;gnETw1v3Cqi@P)m`4OB{o z%e0=x#^_~zFkv4oD!!$iX-uC5Z&qs~u}Jqd)-0{*EQ+D*y)D3w4fwWC7zq0pC38Kjyp-$d*eZ3jF%h2 zfGV6^;U{UcctzR!@qCDI8zyyu3V4A2EZjq7vM+B5Sy=i>JT83dm7GFnU?5G4U486qlH5%Pv{`4?t-`VPRNXqHa{Xrb)MDS;uMV>3s@}B%4XJ=}>%ou;3xK8Y+ z0q)x{hz(^i$EP{Ix~(X`^OGlcv!a#(qTB|WdYN8KwX15U?)GZsABXz+o1be(U3%TO ztSRf>U#t7z!{MYsRYl#;uhvO}U4YLY+0TBHv%K`%tJ1fwsUUme;Y=@T;6#^`3>j*sWi(h8c+i51wqhUGpP^M90}} zUBBAgo|q76c3{ooH_x5YeRsl+*rvp_S;RFHdnG;*Wr6^z6ibiMLx_4c%2++%Mseg! zQAuaOed0Y&XM;r7k0SyraFvfej2zNMbsxEELH;~f?-eN&>mu@<{P1n7f4htyE-ByU zKU?@A@0cn@8nV(zLsnoqJR=3!Gh&U^HxZt%=8>8X=n-HLlI-_75c8KCm=;_{;0u}Y zn&pIVidZpJ+|+Oa18vB`qVS1{gnh%V8o=!mO{TDOR*brleP3JV$UkUi_ed^4Thk%2 zrnFU;X^%*%K*+AH(k5CK1BK_*hHeT7u;TV@*<#2oOQS^KPn@=yzdvhcMa%obMZj_Iatl3-0T@tDbW+osq1*xxq5(N!kKQNawO1UWYJlnRTH5%e!S>Sz zTj+pA5f+)8A}3d<2O*b{&XUs+?R3`9F+GIO?A8^#@`;gM-M6@5GG$WBcwL!sA}(`IlC-RtfvP&EcpEC+TjibhyeWba%NjuCM`UR-(-4BN zrDyFg$BgnGi(2-D)3H`4>%I2sfc?GO{!ZK9JMHgYvOaY>OJkD%=>u{8)-S~QN01U) zIj2kWm&ok1lW#FuSmK`j(onC-<9y7R-uk>K3Av6Vc6C>Xu!5W`-zG!^n6W1h~2_Y=H76w;HV4~O&|d5(niQPOiEJx}^*NFN|S6V~dVA+0%{ z@BNh~P@-J`Ws*+_)3CHJb2K!M414wlomVKZC#h;86rUnJsWb=INw?wi1g~HN`D0V6 zkZ^CEhAy*8D>cC^yCqeq1a)PU@!m1dsV59LPkpRI=RG% zt0*_A2qq?yKkCVQN%lN>faH2l-c54MlhY*6qR#)hUv*-NpiXG@m@eGrce2?Z*6+Ly z%{DThD9n8SZhXJkGsf;9E7%KZFNHD3UPQbYs^{p?+9#i99vLOv3EpJ77QYK?%G+1e zSD0H?l&ms)tjz(!2oWFLz#^MnSR4mD-|aq>#?2e@$q^Fe`b2U*|1159csBW0{7=z2!u=EdWgFM~ zFs;5Ko{9ez|EpF+1#0c?%FmKG*06DQ=6i34=k5h`J^S?yrFe!to;P9Kocl9w+1{ao zMvQTPs3Wl(iCXLDBL`3J{s{4-MgxFwSAwDwXh1b&-=!sQ^AYTTVQs~sDY|?1HV&CT zt-Fde^3lM4NL@|9?2?yP>E(@0U#TbD_(bo}EV5AuCQghsQ6dv74x8KpG_8I*;CKL!*Q~_x1NQE zGE0=bN3FicT8*-I>*3uFf@l+Fq#u};eqfIJ8E2Ggan0G?*w%Srx`Nmf&#*#@vQdZ# zrH}pI=RW_X>%YM99)kKzRd!}NzWBq!D(_lUCC~rxDh*gHI)WJ%sUNtXetP}`7t<5G zOFtd|VT|YuQ!GJx=Fgb^z#zYevO)?~D-lPLxCJlcEr8JoGQr|5@s4J7p!-rJ00?w` zoDYD81Y7^mw`ge$Sn$dwjsVROnI*8BHnI;j`?083DTeN|vP4JDEguNnaxr=D6eT}a z$(+sg5#&l8oY+}Yj%6corE`zWI?1>)iH)`}7yP9QXfo#hUej+Wz+qx4>Qqeq#VavL zjwrJa^YMx}T5Fm&3OI5SJQ|Syf(0lvG?}be6`7DDMj$+7f5qC0Q2_f0+GeOITcKA$ zmu@VXsXP9k?cdG+sQ#V7h-+{Z#GgkTq?q^t|_kUk1QX)Ns>YG-BF>sz43~bIwBq*^7zU;c@?ADU~(CJG{=8NY?Si~ zhy)Pm3qN_4cF330MfORSK0A1Tl%o05>=VS)7{gJr&q2Hm8Gl7p+4lt{q8Sfuf8hKu z2=P(9N1Kc@Aj-N(e5Yt{q6iL)N{RFnaYFwI}>K4&pFBZ8jW_ zm~jI}*|dTKs2XEE(NzA39Ir_&Z&)Y0Ym^zJ%cSkO?a#zCm~BKONy=6$?32`kZ1Z99 zXg?T3<5`|6pzr!9q~O}MdF3;?N7PI0QE?mca|%=1#Aw*Dgcl0)mA&vq2I0gqcr_t| zMpg9BmQBQHA5l8X9ORJ^5Sm3)%sSSuX7>XzV!Io2QMe%s`7qepQlqG5ctFMs2(Xkd z*S-wJVme_gpcHzY2rF>8gu*Ol%wB9~*lHvg?i1iWSvfk^|14&u7QSdg3(VuTP$P81okbFZa07Ut9J zPRHeDuwf{}?s5{B!j5A0Q3%E(kGTL69jGvGw zL$kyY^l8v5kGq+X3M(L{@$;jb;;z&E0&z?5Q5XMxI$i;#o&!K$xz5p&OhykS>RLxE z;~`}v0x_2O!t3liL*4ENE8=D$1vv&F45aD=INM zmcyb@VS{QraQKEUTOi#S#H=ywD$iHr5AFFOHY^27nJdLoTHhRarwJNF0%Jk5#Us%g z9H+FXPKlRrZSA#a0`#o0%QYc72&5$VU3Xurs0D1SMBn`nL0~CN&l8hEt25BgYk-G5x#B7g96BL$!9Mg zK9}{0u5HHS;DuSj9b4?k|ZLVvafK*1( zQcG=gf2o;teCn_`5Oh$qvp|2n+caeE?0PkIv>67uORf$pu!bHef~tE!I0td*Ab|Cq; zlnq}86b&Y&-nb0-`eJVR`@yg(vDT7woSwtfWv7ra(!-N`!>@x=NkgOlG~{VtLd8wy zl_Ui__1xMu<&Dh1#0=+~orta$5`pQF;_BXlJXTbhn%RZrG(a4&InYqEfF{5cFbUaM zqmrU^K^y|!!umCOK7T0)=BzLPTtY8m!yu@qAS-+0!pQzX;w!4vmwl?R_HEc+(1R<1 zd?CJh3iYS2f-}WM{YV0;Df@2*T&;}Z20r7G6J~J+#z;KrzAth48X`1}O&t;WIKLK8 z;nB!Y!yLYa*FFi2PlFieya{Z8IVW^Et%{z(NnBJ6a>5iXC^pvtE(z;`o%|BnU`KAa zf*T9(bjtMn?IMbpDXI!XK2U5`R{0=BBMC=9!J8yU1~vtJb%vE@7y8tPmzOKs%bEK5 zDzvRQyC;=QtGgkImAc#R?Tom6k8qLCtc1$n%?MDTT$R0K`@rHkq)KR>=~ea?I7;_5 zrX`e$j3H9&P;-*nv+YO)HqP00Y1!afnm6Q!1O&9-nt|@kOPK@3MG(Y zNSoQinDRoT1lqCI5{hTPL6~kF?BEAK5+WrmvQoMuX22Cu{=|FZ{EKNm@u#|cC+hy? z5d5hvXXi900JNP!g^@Eke+bgd%`Rhi3f_wfC)?;WW;|MLo5@H~xo&knNPFCXz#+kDM#!WF`5#hOv*ffjhso) znEnz)2HBB!Cf#LWGSC!!6HzB8+!#k%YY>OI7e%kPBP0*Dsu#+s^7T9l-kPRmn&Lks z{L`Jq(m|ShMXb(@(T6;{HlLVyw!QlrJ>N~3&9&D^%4f#Vu$+gCu^rnogyIM6_Fj%n zoms%W*5S=8Z-|0MH{*|vR&vHK*!$W(GmpQ~dVH{j0M2$ayvMEVwWM(04$vA%&GD{d z?2W-qx8Du7e!t1c=1SEe~}KFMmbzrZXRWWnZid}swBtt z%R<64XGpAM1rY#K1^}`C_Jr?vpx#^KIR`$GpX*WfYeTX&#bFaFpdLY`X$Z!AuE;jc zRY$54A6eJ(soy9=A>Sd(2PfD+(BVZKQ8XB_Z0ax<5tSWg+lh6Ut@$s|;gf3}&O(P% z4HAXtTYc?a@fLX|sL{JCQ>jj@^6m<9*;QKB4^B=}cLQm4#`h1h-pc*pLR}UvblH-3 z8CyMBabfHSJuCK4S7opu6=>DL_nuv@9@tGS*NXid7p#mLld4|#FD>t#Bs|JbsVo|l zsxA(P(b_@S{eESV$5NR@NL4+E3d)4iW0~Z0R3?o_Rg)hU!$y6+OtL{zIW!cZlSX?` zrVYjN7aWS^wV_}U%er~P;wc&$j>J}T8%Q{(CX$&D2ocs+Kt`CkAr8b`Le~loygeY8}yaL>xF`M$}NeGSd$VpL2&^MzHr z;EH?+N!eytgUU76^*J`iH@ZLmLgiHXf-0N?y4bAs-MmW@6lBc{zJ_{3CKdy*Gxr6V zyeeD$yC?Kmn8+bD*sh)1WU-IfMjj!^(YUd8qF4$O0Z~rg4Cz&*`OykWJF7gPffP4# z_xv3fcH>fGQT!i6@Knf(UTBfER8O^8YRndVeO+(0N&=vq6k96Fp1^33TF@M$_>-WL zg%TMGvjc;K(HXRx7zH6p@N`NE0#j*Yq#?I4N??*erbtPEWm#K@RY%$N=&;>01!Y$akL)H@DI?)G_5mv#>t->~MPk zuSbseTF9~xSpxEw7IK*?)z3&W4w6y@!9Hh`0E<2~8U=#vKS~D#p)lZZf$B>!og4J#~W%aYkn^Ql^;#BOT=5ZgE}V3=X5otx3-XWd#a7~KqIi2fERvaKI)=&W#hl_4O2?j z-RF-4_xVN|G@T*I9!NcKh=tQ90aw4gy$ET}9>wqA!L^^-P|E0!)}nf!c;Mvj4;8h= zsx9)_q6JPU8_0+VVtFo^sVwV|V#(5~k zH}P3<>uLjf@`VGIsP*O}KLojY3s%q+Zsv%urAAXx_Jyu%B@G(xem=HK(UWoIS3sZI zW3vRH+VGo6E~E*C523M+eCWEJ%bfk)>PqUX7Z1FnCSls>tTd#$xn5(k~Tf@nm} zDy;nqKQxst%E+LIeChD!=X5;~wU13SsP_7i_e1=+FdZ=NC}E&LBY* z)ElNGad@#fWLjRhv{yXBw^y-qQxCqmioH(>2w_Fo;_x;Cfc~o@PEN&m4 z|M>J>_)S{oCdbv$Yn%66Df!XOkzs?J{a5CZfGmd{^dPbG_gruUOa4vnqt&89=9FhSTTbH)~R<_u$`IRgYfXD&;|ty;!^;qup z6yG517~MujF^L^)W6(q}%rT+#>heGq*&7CJ#lKLFmp$~!7la?C*w)ZEpA={0f0~4c z(EUf5ilVS$QzFT*DN%3P4yg4AqhXl!uEz+66c;uXJ`*}np%fywspu6PzX5>&!fao; z!6Otft3p8?dl8a47emSb@Ypdd0!XEaSciNY-8R5wPp`3ENm}E+{<7{Kt*Ekld61MX z4)CbrDkeEAiaR+732*#FElzh*R9)QOF-7M#(|H)Nh|GAb>0e0q=7W{poKvAE6h=!y z%^n^4P9@B81&^bq0fhjKx<6Iw7!3hlBGq&X)=1tF%D~7r;2#!uAq%%949VFa5A|h` za>H-by;Wg-Wi9S#Xt6MB!ClU>!Y66VEY|6@ayf(!ltx?Fq)n!T=5A3aZL~#2F1gVQY;7|M?IK@mTbyt3-%s`d zn>Y=f%LWO}5PUFNK}A$w8w$O&t!`=dXFAE*(?VMI>k2+geR?Z+2c7GOX)b@_$eNcX z%uA)83F+0OpAPAa^phdo>7GI#5u|*dWU8gG!!++c-%N%*0t$C%$H3C{ov8*ep9n`% zC_NR@s&z7?J9J{AAWK(wHI0~@K(%) zF6tO9Eq?Q`jzV;aqOiVjU<&uz1{16wwgAUb&!87@JL)j>;9WqD>HWMueq=}6EdD~#LgpTV> zdIhW;4~!WZOFj34GulZq^-kl6V`N$-zw~>BTmM!T6K0kAN*|HWrcq z{hg?gLaAa#A@2@y2UF=&ve)#AQ7MO~mf(zyzILkzN~g=Bb#`NU>>0N?dHrByC_Q=buW-W7L06UQBVPUxe3dc%fa z!d&sB!M`a(rtD2-GPI;FC**e1Ms0@TW1*GFgU3s9yBfVM1XjGXH$IH_R^?E(f?mvKvhsAdB85s@7(30*|>W`+RKn0x&;1>tUuf`WENq|IHr7ED+U#jtxS{aHW~Av;>X$oduy$mhM&uWAt14yrhqvw z+_AXrBu%f17$Z5zNBDigRCZr#>~3EH48yxXwshatAFWYap#IU7&CS*1BH z+Y4?%*=LXzuDVo)Nmgna)E{d-&K?^*jd`mo1qhRkADJAKqpYq0Z_tZ@?e--Le1|_~ zd+|)*~QpcEW5JwS~9%wUh@B*1pB2Md*a@-$MbG;!EV5k&H#l6wjJ+$!_FLAHDEnC2TAk45?}Zg~iOB zyWr=2K6C~g(R{7!RiN28({L{xG+w~-Fp%ve#fL5j1n5XOTiZ(n(1L=dwb}v*&=f0_upg?zTAJ)5EI`xrL}17N z2Vk!xxLDvP`=|epK?c{FB@iW%2%zN#rDd6 z%ZVZbyBTY(CRdlEAu%f;&vKC4`4LnhUfD+aLrGmGHIGSLdtxr5(Pn=d^Fx`O3qyVf zS&ZqsOs=eNY#^;`@9;p8Ugj>ocEl2V->AC|X2POlFK0%(HwD`R{x-Q16K~Ug#8rwj z8Ag0p;nG7K1PM{iuaZus^!i$Q)voM8i(=G=v0d43rrKJ^$qc=8w^E6l2GZ`AWg1{7 z?&iwfsztM*6^LIg5Nw}q$$X&sM0MdKY>(+;{7UN_!(iDFC1j40&-Hc_8?yme(%8kt zz@=+hx7hhx$q91#tQ){0sZN`XJ6F~XE%Xj|t1rrA#KHsj2d{s+o+-;%!o>1*Z1o0n z+4q|4gsVFX$#FTNd4bPxM1&tLA-FR4qFKMzm+2h*eKWWZ4S%;b`be{!B+*NDt5qM- zzYWfyljTxFZX+x!yI%)SN7=zO-IoD4cmq-Vf9w4xXSX%hs%+^6I=BW!gU_~QnGE4j z8`Tr3o~V1{KQW2Wt&&_&Ez9&e(kCF0fAeCox2nXRj_kWMP$dJKUAhQ&tAwsG!`5#* zwm!NDTL(V86k8vyV~Y&kOr{UU#1e~*K9nGiCl{OQ#N)xF zzXB;$7SNIn-6=(cYOs0Q@1F20GpF9)s$Xq=+#C0oC*u}@r&l^gKt#p;1GH{ekS%!L zQ+&6t943&xsw+ZaM&HRqP~xWnSb@mNZ^oyk1TWLa2pN z6Jd;4yIV{f2Vpn7(JTi6fiiQCTzZYr2)hT7*~2Tj&v{`_u{wAc@3aAU!7kouU7Usa zWuI*<8HL42UDT3BLa!L;Pc|%=QhV`>=OK`dHAXK0Z(C6OyXAOzIvQ zWK-P%$fhE3*@ll0-nFYT$x29!`ZO+3tv%}noe)s$X10}qy2hbld?Sg1_L^XCL6+V#yfP`f6%z zU34G;#JK|AgC0r`64_1d{z(WMXgIsIH-gD$*)JuvjFHq;uTbvJYp5msEy*b_=s7gp50CV>Msh9&m71y|` z<;%j}O?s}rGgx4janU|%wrV!8PcGBXD3!tX=#Q~wO0vYrJiPF|iI6)lWdnrj0HQ;f zn_RG5CGI;OG{)>%J67Vt0%ve2V^4B_;?={%l|y5c7g^L9GaVHgWqs$k?9_~*;QdnY zE@~Qdw`jzGve&V1K)Z#9E`P|SZ=zF!s;hyn#*7aETy}0=I8b(jX}Jbcn-Nrl>SBCF z>SlW7B_Hbm#->3dKz!Z2vQhRm*{DCxO;+M$F)

bQbx3d{EHvI-*M(qW<*%98CbQ3an-aD}A)KWJsRdy32$)awSP)h0U*zF)Sh^&{v zVp;SuIdLx;$Bz(WufAFEp*?qvD?HH6zj-)VM`u9dyDEjpy54M>HZDTZBVkR#Y6X&iE2MMX+V zLvq@tEzZm+PfH{uh|lQT&rz9B&sn@}dD_G`ve+1(m3D66QQo{333$}7g)up|KSU?gkrwhgUT2L%#0pJ(%pslRL^sy; zYz)wm9eMTxxO!?>57r6WbfX%Mbqj|>2N<#0yc&*zj~+3koS|CoJ)dF9Uo z0Kw{M71qkadMa@}#3vdmv72j>+u048#-f15$V1R&1I>E_1^-K6Px~!I#@R0mdtt8E zsL?3`c6wk;;ZPzY=A-E%!HT8MwE}@y=R_dXMK+?KWPKr}m?N!s3Za)%hb9#?$V!8S z)mH+z{s_{j?eIXiy;<9-*fs(;B{Nlo2zEK%5~z%KVUK;1 zbxs*+0tct+G*}ZX^C1h)vE(dCkU&NC}u7^U2`WgoLYhl!b)fK#>t6SEv;*%v*}!JNqx z*GZC;=!k#cq~mJ~?OgsMt?x&JLw6f#rk8Jx_UYB2mJa`G9T|s3*gE3z3hxPHfR3ca zd=rJ?ABz`ytp%^tIzi|`wUE4W;X*Q|3>c-$b$zT_NY2ti0){jOXJzjwr{3qF1FHDQi{Q2Qi`px<5xmJVTDaV z4)~u0qOcMn-zPpe(5d<7LHed*EgJHHHWL0(L}d5;WqYjRI@!|46PWsRxRK;$w{9Mk zbrS_afbgh%I25s@{AG(HWb7hB3OcchP9`NWQ;Zp8YHI4k4kJWO z(;6TXD;LIO|Iv>&Y;)U}NwFBsFbZoghOMaxjS>oN2k~sOK)nD=n)8<$VCN!*Es-9S z_{;emv=5)qwrm8D5DF}cAas>xt(ykGKUXJ@-#I@#L%LH_W8j_RC2C$cM&r1hLx($F z=OQ$apS1(5s0dRvUYKCR5<;;;Zic#&EefEBA&{qK80Iy2dz#|}6eGb5bCt+K7!H#A zl0xxuEY15ci3r{n*4)I2KqTX*aWFk=qiN-17%}5L>pR!vYrxYmKyROwm>_ooFagIb zF-CxqWcQkWoLwk-a;Roe)FjQ(%*AMCJfJ4zw>J+NV&){QO)|J|4A#I=uqdV-zN!mCwpTP574`G2UyO5T zQZk~?nYRuj-O*PoB}vlkX6iIV8~dd9^KUyvTbSpGVxYs=(f`L9uZPX-L&bM0M`Udk za17VskVwJz;?*KJ*lsN$k-95v7=z=RVm+*hpCAy!8b3bI<%sOai5a{ z(~od&Hi!qPrlxTAK0&1F8KhrOJzChU2$}y*_ueVANb5L^xoInU+X=JT{ja`<#e;pU zjwoM;uwvjqqdgR*;0l!e)IT66Y>ebaRFkEHkap23->V=M=}Wb~kJb8nR?**wTP)!)^(l{yD7tISz(mWj zlatgtm&lc@(}&aSV@7m|j4AAFVK)WCrWC3On+_Qo3@Lvit<1loX@{?4_SI}B)>7sE z&4nX57yrg^Y1Dxe@U>)1@+W!!Dj~tpcsXyt`fCkOqL-x zsD!HIi8TCQ?z=|8|K&as;Qw+T35@NR2bT)F9t&g`Op2jc{I9pu_I6rrjUkJnAl}M| zw?{ZY)LPu?V^51)9SU09>QK<)R)+%T&sK+m(A%wE7xbWjEow0sj6oRsG(Pe{Q=ryp za4>0#h;^_(9#WMs{`4Px>`S)ODG}n4i*HWJ#(qf*D$2iLsBBQv0AH_`Tj@R-{PBh z61T9@Q5Lo0JPT%?YK=o>3Z3yM(UA*V0>S>DSiF3+;Onn0PYo|2jn^+OouG$cfT0VWLQZR(fm- zF5n4p{&U;8!^zOuFk^KQ6)?8?5jOz7k@F)HTM{Ei8~JQr8Uio$NpuWBF!H=6+`(v? zW5(j_XMEV$?{ts{2%2G2g{K)^YYfbLly>jaRuH(D_92w6yI1oa2J|*&LSp!qRCrv5 zWmA2 zGV`9$mq2SxCn6BDh(b$Tl~ifCD%YMf(`_0)6zRT){&1ZzVe=-KwYzutl_{idJGXMQc!w`^{-d_h9UzjOdA5LL4i2%JcY5 zvK43o^rbdf%m*V)H!MtuP!fj34yVNnrFD^qj%I?rW=@<-%7=Q)Q|w0E~aq zXnnsH5A4^{T`4k-@>zsCb7%XawcTM}$_xCpmw6ozmixILQp#kVL_WCMUaX~ z!G5n+;?RN;hw3GGC`$akN-T!!=rC}dBw+F83%FnicK~l0E4urTIzDRMg_z(a)rK=3 zstsp6u$8RL2r{aSJX9HZsAoJ>uaSo;BMvDIS$_UyrIrg%$o07Sv(Iw%usy?gwD6SAW(QhVJ;RF^e2?{fmVJLb zF3!hht<$^+VGvvbpru2hvRc|CI?zh7S3$>`;L+BKkn!H{CbMHs>^imD=P@+io(y$% zehGE~GisGPyjhmW>_?f9;wnN9y3>Z(P1=dU%;ZWU&p>L6-f2Tq~)_P^HHrmuXy2zS0`Ov=#2Fn_y0 zNPP+o|Ek=d93nsvs%aNs8*5dsBgVeymsZsU`odgi)bAQ{?3+o8y<^1#L3Bx3{>r;#S**EP z$dYY{hxPHueS+n%K7tAOuI~g+898d`)uQc$i$%}p7SD=m;yaw%qx1CK)SIo^-NbJZ zVaG{4$%Xw>WFAUezB~^>`D(`hafxjvG{?S!KDO3kZ{3hVm^EDj6r` z>nSoM|AVh4c0&?xbPAPw+jPs5M^rJ4L|I1p{ZBRW2cHVjmMx2GM3i3J=f)(Af@dcW z2qgBx&Zxb=o=x(0bhi>$N6`j3$rlJ*jM0YEl`7{l5wU*e1)CLSLiNO zLYn5ZKMpuIIT4v1#yj$>MwNcSfPgXWlt#~a(mCiN&c=+ z1c+yi>W&AoNKp_>vvUG5W+2uL(Vd-q8iRzvaiGmF-|%%o*&LEW4)bya+h3O+Qc8b` z!E9L#=tj_Sn%%R)>4T^I(38WuauEC(F>ph@I*9ms0MpAx( zj5xI?*n^7Q^+0?ekrK!dxt&LEq4s-1sJ-0c3Lxy^!xntZ#hdlZoR|=tH`&~usLcgs zF6IL1>aYh^hb432@S?c@>{^?`4Ay+0Cst!C%vdgtQKcLh<9!$jq1oA=w+Zf6SIszn zIlXC?8wc(Vy}|DD_!AgRH9NL)Ay`W}mPsObDCA(GrM{ey<<;!$&mghn_KhtFp}EQQ-UknS1v*yRPca^E~dY*Hx8{O0SY+%(=&kT|zR^%=iOpV%l{w zl3gJRQO`#`qdz>K7FcHVk)2O$Mf4~g8kcPmM4B{}#0fS8QW7>1k0gSaSQr}$5Jq4F z0t}WD1BJ1Pz&0rolQ_ZP`To}0=bT%T>^!FbXoKqRbIyLQz1G@mt-bcz&e7?!ElOHN z)E`vxevS+1wH7FQy(GNGH37asW6ZfPRU%bes+J0?;Qwc52uqb>+!Cexg!)8;?pgh^ z)Ev_<<36h2W!#gj-=*B0tUjNx@y^(IJ2K$-D$0r1Jj?!)Mawu)heNfa_NZ>!nx{&t zH7}%X%?oK;^FrFz&af8R+9_N*{cQnjUP#oeeP<7?XPG|N*qMZS?K@p9v8w*hZ0(y< z^^z)COyo>uKI`F`Q_l)IPpUDC5I&Bx?iurAGGaa*{OYQ!}$N>FF8Z4K5uxW~EWxn9u~f3reVS{I{X(8O(N zN4yu*@sBPme0~GIjj(-1Q>~}8S)BF%z!(HK;TZu2624Wxko>fMfhXdT!E;K#z;i!8 zEBtD4qS<3iW+DaL7Qo%b6HwR*5dOgBQ1mvZMZM=FP&NUjP_O8(=I0rVJh|)!5~83My^nhmnu-1E6w#fDV@weiQG-)SiUCU$Qr2Q9yJ7?K_|X*StzU(jd7rm9s&fsG)pDJx zL8ur44GXw+0a!{v*^M72ol&4a(<*mieW=b}X@N(Ip))7scp34$1t-A05G5%U5QCMV z3ogi}zy~Oa8>^JkJLvo~ap@WgJy!Hu?G9ShKy7oN$~9oBrbOmEul5tNp?J;QVXKEj zx8X@-4TKlA99N%onO^60Yl@-Gd+yoydt}au zU}^fgLpH4_C~ft0ZB*ZK&ut@hWu&j~99$Il%leL=Ek+^XLmB^~ko9$Y^Q1yGq?AbVA?y+|Fi^HIdX)P?d|8G`?!^{n*! zSkY9pO!R(XqWk?0A*`u6H3pLo>3ZicI?KmR!d@RgS&d=!eEX^@s};D>@&JG&-!7#YHB@3O>knX z^(g5nrGX!{?)MaxUZ*?h!g2vn(6Md8WSXIW*CYP+*^V%ffXv3l$)Iz`N`5?u5|n!dtR|vDsTV$BHwG z)K$7<<+OcJjfq{@5E*)#&7I$>`Zj_DnY_!Pf>bmq; zs{I#B9wiA|JPS$8-0%4;8S*vruNHdofoDK)7B*~ZI=YdhgJ#@Q%v$apHO2~?YC%pt zb9N3q81wps2C~^Y77Tcb`h-yx7GQ^GjjWLh=SRt13s8VZF169<4d)G#KqH$q8HlBT zJE#A=UBK+w9mk4>gfD{w*1qd+Y#RP+{MMI*l5Ra8*GTL-OW_1roNH(h zJSa3?%{5}<8iqT3IwkHR29UA<5P_#=u`E|n_Ew8a=^y=Z%Kv-jG7+&{qsY?pE@ZXW z%qd=dhR_Of5rYiY`|(%f9?o>q`dX?8;z!~VkoC4eYeCwT2R5mF?gS>}NK7Eg?zNlF zfW8GQ)EF@mvY#xsC=l1l03#Y@ z`xJs(m<#aPV!a9TXipNo<1?1x{p_dkOp0q(HP3Cy z=iKm9Bbe%zF3wr>h_Zj2DEY&^8 z?pD<}yYB+QJo_w&YVIH)yy`N97pe*2RTpVUM)0<0Bw4NB%#?177<;uWQS*|W~+ynkQGJDx8g|V-*IM{ z)ox=VXLE4Xu%Ne7{d5L#gUwOz%vu(Pz~)5Q))}LMK-P6*VmV(#wN(vm7na zH3re{9Dl)KeSTFKmexX{)BlvCV3!=;Q0>WEn&D}Ges(Asb_>L;Pg@fux(X3ZHn!R2 zb6^S&UJ3n7IW)-Lt`6lPuZW=9L=OgKE@$r@Y_y19cG33%U|$}*lhcD!O7Z0legin0 z8GZx!b*gGX$X+6Zft@4yV#rb-sbd65O{XkSA$cc6AnH?h&_J%2EGL7FcJ7!vuglXl z-GlJ(o0cd=C{e}Hmc{9&A$fi?V+rVaoGWjH7jUvV*|MbJl!=%4C&4Pb>fLw>}oJ5WObi(0?t0?ZO=eo5gygD zt94Dwp09xRLRG}d4w-ad&OZ}gRT%_#d2NVn6SDvVLv&3{KttJwhl_Uh06a&yj6b+{ z;SG7)0`StC{T>8__4#GVevLTcUmv+CjhC=^R6%r}tmu^N_mdhcxVUq2uae`%@D_Dt zUxg`ffW3POAsH$1tALi{nXZ2z5nH^Bp~K5XEo=;^I7FBwp5-FqV!#SSu(btW(la%r z`}oEw8a}V?sc8}D*q3wm7vGS&CX}lVL7%Ynom#t~u1<%&R1LIe+6bVur3#KCJOp*9 zQ6mA2=qfary|qyM4u>iLH5ESlFYqFZr|QA;t)GM0{ry_}6S;ocL#K+5q|D%WZ^UgT zp_>@iKu^pHjGx_Wus|pr6X~6Eq5O@Q0WHj0P-EGbqQY)*jktG}t(vPbOp#q52K>W7 z^Fch34}|p9-J4nSL19byFyE=9jX`q_;v!_SUxzkW8ciN()2d!+nm6N{h8E=q?^U7M1& zw~L*!w0{zr;L0MZK@pXVL#zY($ES=BgLzhcXn5bSeHgAjz%9fv0;LZcrGwt8jKE&{ z$EW^O$EOBOGASQ8HN=n>OI@(2FDwOvz7+J8AH-rN6BVao{(^Cq$Nmy)E*g5D3^E@l z(p7oayZ&)vWs$kg6n+JRb6y?bWL*?L+OriV8a9VqOeI}o%Zo>Om-S>Qbh)#(k z;k9mcpLj@bMtH*klBRB99Q(zKyAl01x7$cfo%mvCN@wV4ifwSWgZGuk!!Yotwx;ep zIRwLFuLx~K6-VVgU)CE8^5#NquV%lZR~oC1E7+^!U)3vkDlc{B{^IVuF%h95d}F>;vrsC&$d|PZRd)w z`*qY%2)|N4o3MiNGY%E-Gp6`efpe}9J3(wjS}%Y6AZSYsV$eOWXCJ6v_w~Gf;Gz2U z%AVKHeW8BcR=*T)FfQMJ(%+_?e1*vq#>V)l-Qc%{k1(f5?A^z6>({-AxF(drKM{@k zzgYxA{|U(G5=SdvK@R?rV-akYZ?f$ggcpq`8}OXG!IoKRKvbkKYBpv#5H>+rtz49j z>e7$J89n--!e?E9y zz{I>JR9Z_l9S$XK2_2nQM}P1|m6*1UdWnH1Ga#5!rXM~e1I1KNrp;$p`*i5YygKsV zzoKgAdpZJgG7JYZwFzR6g%Wcr@!gXuF=r*volyDM#qNciV}XJEh(^HJZx17xQ72D7 zr3z-OlbY~U=x}}oXT)77OmJQ;gxS~a?*aENp@wb1Ed=*DMtOVa^NjlZE(6|7&nT}v z8!oqm64NU2;|C1fJtfXDK?g#KDV3Q0l1fbVl$bobji>to2(vZcPl>y~tP=CYRp5T_O3bOm?>g+QM1Z{`fhLM-PpCt{`*`TstUC4=2JhKw!XOFZ8~^u9Z=Y}Oj;icO z4+)`;TG@K8R#$VCGFSX#uGUnOB;vJIi29cmgEc{HP`U@bi5+)5jBHjTd*BO#1wJe_ zEb<<54|sTIC~;IJ?)qbuINHEs@cHrZlnT=1gQ0?xs^EaZ<)l?mk8MpgHaJ*N4hO5T zfsO~H2AVR*_|C&@V$6y3Mx}ekhiT`Q(AcyZd%xpT&-l(DUuF7~*%$Hlt${FpHV~d> z*oH!Vl(_MTp^*Hjb#{>LkLL%1xo^_1+e5!*)Z{yUpbBOd0s$e(nO-CE)IhKZfT)j5 zuW4>(w3S`QO*Dp63vhBy{k-KyH8WTBQ>Ak|C&Rkv1$SbS2Zp+CSqwxoPG27kg9Y#7 z@*h60O3Y(jgKa9w-j))>9A+P7f3o6vnbEB3_{zKxde%A;OJhSb^3h5=vwxs73@Dg7 z^^shNkpU)Q`Ks0hU$W>*wGzOX#6Ba0+F92d|Z-LObZ4p|B**D}M zz(1+O+OrFAWN3;2B~!E@x>o4Rq*@w{jHiVy%Dcu#fzIvFVQC_pMX@iR{SacQ4+l7v z$Jp+sIl%w$K$u;6UgDRCs+a1NoWXRa8OBTv8_>;t%q}DoQfTlo!{a{6FElUwxO@ms z3|ch9X<&$01$Q;jndCTG44nbIjrCBFP^+N;gUOd+bEQc|c#q554Pto>Fy>?ut4K77 zsP6Hz1*^?n?h8R0t=jLJXE!8UA!9Sbsd|LQFlg;*W#YE*c?pm6|EL+7mn)%RI&_A2 zutbj~N??~6(a`!#YB!0Hpu!sh5(ko*Q$;>YbLNvMv_Ki7AlyT(VZ1x3Oz(S|B7T-Y zXOXFDQHUwd(#SA4fSjS)ThNxn9KQ? zif_JE6|C%=A=4@o9Z|^hbtnO~0z?*5QEd!U|C;=&%bdouA#^ z#lTVH5lR&n{cXM|cOZS<*(e&})*@7knC5WC`qq1xG|TFfcE)!rGZJ*pgk^51N> zLbaj)7)M$CK+?*!T^PC$K|(7tO)E1CTftYyrtTK~g0a)edE>nrgpA#j!dOhLV6`|_ zqp0=(d#b5iwxJ3#DkHPC!Dzq#?DNL1qm8e=$It`?STtB-ZmO4=^}U{aAUWY$q}~}4 z?xbj#1r@Dkfg=Ad-Nv^sBBcO-eUo+U52+e6y!hm7YY$r!spDc$3+&+5!&A1p%b8yR z5zf-YB$+wF8T*!38hCd=dtCe;lIqo|RRpoVua+$EZ zrim_~POAxSP+CP{{^IhEr>hk@pmtZNO(koAP(_-y`>1UJ?C0tl6J2AzriiXG3XRS9 zp?9_6hs0MjR)~?A1zUrHu)rAXN7G{VI}6SA$S)XKy-ewCJup0amy6k1<>!O zSADON*w!OZVID-p#m205W;AbaVcz;nTWx*b41e|&I>%9~Dm9R;+_aTDpmMh2I({Rx zGHsRt#IS~@l=1#qW$Zx=^nne=!2pNZeGbOWf^6jtFWzDe*!ovBu)!KId^X&$MhrLZ zx?LgXYTT$hzf69zV;Dv%EV24Ew^n^Uw|DyKP~jCt@M5~g_M;uMtc+on_o=}wH98jBgCL88wTdBY87JdQAMU?9(g}l!5z~wj~Hx}4bEv9Fx}u8 z!wNq@#=isYxaJ|~=2#%P%@BDd==BvkSh+dn_ln(cgG5mGBb5w3q>)Jm2gF+04Q)dEp3HEht;{@Q%>Q zT3mn)(14^T!li2Dl4QSoGn-?o@_>L*0zP6<_r}k6RQ}LiT#?% zu$iXYGn!zl-792*DrJEVH_C$gFJ(a`-^@Kf?Q*(84U)8J#VI^vkxGps4MbB- zTT{>9R@GAXBAXJ;xoRb7Wa!Q~?N`2o98uGL!#Jme^~=1?>GvYe%jlPGng!;_F+e2~-Aoq4XCULw8e4G3s32rn35!G{TsO)gZIP7(lHU>~x34xHm}wW5@D8)E-XIP6rWP2P@L`} zj~PffR2G-V4LvwC4h2z7g^Z?hm<3;!e;eJLvIoYY?4iPnC^c-&u9;`<_@T(s%`>u) zGdg1>!-Cw7YW70K@UE(2GsalOKxcEsOo%OTXQ=(C^3JpV0b=Vj+{=(+d$Ec}%qX&? z20F(bix)YE*&Lt~+MH?Hoaq^ifU7T${JC0~u3FGG^ozEfv!bb{qN#-yVO@&LKeUSG zO_DW080D#MnEK7;!?O_Nn#jv7sBaDUDM|BTDX67+=Z3g30CnbcpHJy^M;sR!_H1vH|GTPfTePf4f>I9Ur-6$;F&@;~^Zy6Hv-uWlc^q7t%$$eH{CmR)+JeOG!kCGk1bSlf!M zMrO=pVmjsm{dxz^xpPCewfBw5oF}npbyr2Qj8@8OF?` z4$d|;&YsmlGc!JA9Xx7wIiTIs!Qw?Cyj3M}?|p;5TNrkCFVN5K?poFbR?n^zMM ziPshhXjAwdt_ZfPPXfJZU34S@%JcXtYKGpoSO zI;Bqh&Nl^;DeDCGi%Ps^=_}J~%GNJvzkJK^pjS85u#>5poy6tLZ+VXf43T$9Ijy&#*mNj%B!2DQ{Gy&r7jBNif3M|uA8}NA8{1ibyvjTbWG^rno6_bm zZj?4=*{n*_Vm@E|k&t-W^)zE`z}%*%f#-A&JimI{SsU&Ez&@bYOp|w}C+|%mF9H#H z!>V_(VVP!3G>#IN{}@=NmN&d~n*ll6RWeS)FHJWN>_{buWuT9TY&@n1%ShWmshomA zzdneip}M)Iy1APD#^v-)K1P=PIOn{^IET(TU24|4uy~zpN;aB3E(NvDtr3SMe6FFD zxtdlgCVx^NKY~2Q;;D~-sQ(!ilT|rfb;>G(Gi+L=rn1}Rts<%bWt8W%HNTH`JY{RlXqV~jZ^b1Wt7}~c< zKKd!OZ<9<5hy-ROF;-?K7Q`4a%=miSA&_B$pc-n&Zgq^zD1lg#Fo}!kcF=H#T-BG& z9Jc7#A%9%iri5CbGDFBry&5Z{x+`-F@ei!K*oL87b_qkbr&aLpA2ExC2?Ss_<&4c( z3>79bv@zARA%yZZ!YbS6Adu|%_kU@SH`%cTHM#L4#_kpwDFi^zsxAlgY)@SR4vUdK zK1X~KtUA^wlpBmv`p0%Eu5t4BG#HKa*mcwto1$aCisx#u@GRCOaMaD%*)F^?hiYI3 ztBFLMT64zgMCJ@peX)NYG7eWM*38ecVzFLv@WN~k2*&+>mJS;eHC69nkm1 zWB!%dr_BU_KkG9o%$VP~w7BTdZTW?_AGR_}``AR(aQrJj%ar z(kypyi2!sAh{|`Ge7ZIZPwbo@NN}xxnB&7Z6@2IiGIHix$89sBvLwpb^ZI%R!g`(6 zy_Rh$@Z~$-ZR=+bTcTy{rLRSts@akmr){xu<8-swm~k4*pc$oY#X0yE8Kr&2so2uK za~O_sXtRw1aaymnVRlw4%+6{xX7}Z{$bYd%wN zIBbC!h2wz{m2bShM7x97&)kx-F&J0y+KemMELm;0hfdC@))SvrtuqzhsCO^ykdykn zu`;=udbp`k&8!viFmJ^4Uu%R_aH9bV4zNj)LJU;G^ykP3yr1C1gAb`Eq83N?<;2)+ zw%M%w#=5+$omL#zwE44<92B)HUhslpP|e<%rZ%|y%u4LJ2h&ATng+Y5zXL-a%;n9+ zyJN$wt?+3a3G9rFuW0A9X3<%#b3n<=){NghTzF47tbrLC9_j$9pWhDI7H6gPT||xUmZH!qCt`thHIS_6Kh^ z$eQ@?sxJ|7DlwpPz6}MB2qwVh_5hn1agCFICD<4*s@u01DK&6wn?$JQ&d~l*wf_{G zjJU&9?Hh!2O6jzGm019n1?eM{MK`p*Gzk6P2Atk3r)n$82U*3J!K19f9H96KaP zUxyW-!+cxVn+Cj`FM(R`j5(&q-E_?Ej-oGEYC^NOs#zxYme9PZRo}kDu%hZZE= z%nzngA!lFhkE&WI&9WDcv#)qPz^1>50oL!w^egm~ z7(M$ZhMqk&ZOsAW7A)#kM`gTJ>qvj6LLCo=I!qMzI*^yVH=GpjDCRok(5XHg2Z{Qjf{7+=JtgV3MVK+xpW>aqv%)TK$voH(8 zq(<>9&$y+|IYPZVyBE?zhu@1Terl+{RhAQQ(3l)Zb_Jz}(BN?hdq;j@K(;kO7L1~+ z@{8V)UzGRtyxD8#tz>F5oSPMo`GbFGmrwj1-b@N!I%{e)NDMvMdGsXIRJYRP>e@VW9hjlvUy0aLcnF&K*J8^jPZ!G)ME57|-4qSFe z@sj+)s~~+AJ&k&u1*uK64K*i@!M4+>z&T7Ke&}v%z5>HV`Ac>+h1Z8jxD=ie$+36! zOej1rP=5GhDm-5m22o`VsVC&MO-(e5C!bBiv^8m)l1$A(b|_?;OpE|UH*v-x-u@!z(8e>n7S{*`wW7tRn^aabeE zFFZs*HYF)^M1|2gNY0Xcp28PV;)qIIm|sLavn0h@#Cr&HWdbJnp53goBIWe=+Q?#D z9I^<*qw^S#8(AKu2pqXQ%|>FMAyLHB5#9>5=6FlE84EH)-`2r82ymn?ps4Q@qse#JT#8I$Ey` z!4gUiHv#H?#(lR>1hIG5YvKn*jRBm>P6Mda{S)e zMnRC&8OpOTa72^DWX1gAX)_bk>Pf>u7r12$UZ3vhEr_8kMdRu&D&K&C`oEgPPpkZY z@sxa{ln1(Fi+k=DL%S8kWF6QlJvt8oE69qjE8IN9z;(FmRz&=pIk{{rvO-SC0V;HC zP96K~tiUm6nm~pO21{&7B=5ihT_iZKK*GSC50M#o>wU2p1;pCzMwRHxrxEo6-!QUl zZB$W)ZRo%UFc0Q|MMkujp2o&`h`DJw7uSp7jbq&Z@unzE=b}YyAa~ zGCVUEcqN@fCjxIJyBrh~VLd;+>jp2fFQDQ+sxqsNa_YUy z;`mx^Q0r{nfA=^Z)!e&j@1bE4l)i`iGL3|b0glrCjYfA6NrU;*no+T}%g#=4$qtLR zfPL%G9wYDl_B0)yuG7=H^dJiy-aKUEG+{BA9pYfAVxSCWY#h=l4kL*u6sC>d>iqp; z4~J9!_GeukD}VfKRNk_oeB#er+1;&0L}G=SuQ6Rp#sPeBC5dBl+Ah%X?3S?`x=|o0 zS;lNG$g{0RQS4(TL*qp5Q-Z0_^)DIy0*fJqpu!)q0*-GPMKt7K1|K_5v4hcqY}@$( z7p0ya{I+Ju)Kjr%4!N-_TkQ*3E|^yNu{q^3U3J9h(mG0u;%p>-0mpp zGz@Obu*jSigWMlc*H0d&E|?_oEP4x=@st8gz6vPBC0)!^;5%yE^lYHoTZR*Uu^JJR zqs&?_lT+rf8gWY!qv|cw4jPG8FUnlvWu$4J`mV}I(_RE?4<6qUR?x&W-~%W_e)b1& zpXa0wGsZCqi$JexBrTeX9J5=@wd+M5$4HoX1f2G0I~));^qU!edCJLIvX-n!aIPwR zEmtfW(hk5tK~v?6Abgq}&j*REOV>!Rt-UjaTh4>%ng!Lg^&&F4-F#!AcnBS~82C3S znb}-#DN-+9@5eJ1@V(iSmrMTsVsVKFo+0qCT4r?5`PSikt|eVfqIG#bd_7VWVbm!&SlTV{SgU`HZ+&P4vAu0|@WXeUTk3-R zQh1j|1MMOVnsBBMtZXSlTm3P6BN)_|FXI|isoE)?XfSeEIC9*epiS*sX3K4jia>_9td;+kEl=e%=$0zHIen zyD03VQ4#BOZ;^!=jcMRQ6L`<1T~6+S)GY4I!!oSb1k%mDXNEFttQhIDv0_Z|7X1!j zqKZMKcm1PK$&8=k;aX9vdsrhwM~{URypzQp#DFA6AY~m>P4Z_}O^=$iZiY|xWC1gL z$jvbl+w72-#Fh=Vl7d40wFM0BA=ZRHiPt8}-A|uYzucch_XXxGOO<0gGpA`%ZF$e) zvdHFbkv63ymNAw<SW0kSZS?y*A+j7H+H>(G3 z$TKi9_#ymsX9zEsuC3j}u}tRCtH|0oISBRKCW*`vY?6O`3Z*63ByHo*_}yl9puCZS zFvFF-5J0NjloY@Z+@x}im0#I32g-oNW(~~?5B_LY8C`NiY9-$$nH2$ra}v1gc0WY3 zgIE;o3FS*G+PkVI4eEb2u+M5N32n`(4eyKz&SoVx{*4RWDRqQp6v3A5Cmi*Z z`6*m-)3DWPhhtihb1-{BIG0*PF=2IRVYX?(MBUH=)!rGZHGKc`e`2p5l+^l}g73+M z;h!Ck=@Xv|Bhlb$G!R`Fx!S=Nf+C4@kw9RlMp*Pz0G(;NFrx-S7s$KW=+*}L)-c$E zp;s)}HVacKeE%nzJYOQLiE63{Q74qZx+OSWN6sfcY4c?=Yujw(;4FvuhJG1BT3oNR z67rq+8MgYkvzZ5#ZJ@*zp<)U<_+bjR^FxD@y?*~)f>_uZD3ATv1WCJJk#PwI1{s4! z)H5FwbwjnEbTxmJV_*UykhET1;*D?gRyXj&Ffpv@XDvVUD5t*rIY^wkyo40roL(wp zJWB#0V0xJd%o>YRvsGd3NKkVul%N&{-*TsP#WDnAkU!IJ-DMp9vboMD^DuWWON^{u^2Z%Z5 z=jB7eoqh_r@-LLs$~NcIup`Zxd3XNq=hUxx>lZR_&jKNo_nsLGu>+1vl(+>T~NtCb3U4-R&|&Y?E4ra%b)77 zrC*BH$zhu!i^E1UarV9qRXS37Q3MGSC3Gx%YE@?@PU0J4qRjK$P2kG;HATz}BZ1zy zGMHDQ@|lp%ct0P~13)hcW{kAPv)66OtB3i^t|rvF1cLzuQ~R`e(sGF?wjdDe&tmmr zT{@;X#g^j6!~stcbXTMbey@!>kBuaYZb%h>Xf{Oq1Gluz$p00WIy60hS$BjU#o7JK z2uRNFZ}%08>u$Y99a)^cMsnoh+ls6zBq8RvpZdtmKiqfp-|y1LZ1aD#|GsuvcBIus z7a$@z_ zi3mj@1vP)H)mmf6-PprzC(%ZiJ=*xLr~LZ3D~)B_T_Cg+NW` zF|whp7y6!km!O|Xc4Dx*pj3aJ)Ns@?M};2kj_#;=iJz>np=J$D-bsmF`byWVuF0M; zrKw9vFd*h3YCy@t+0;8;bR%4d-LL#pqyiYj2EB)iTIU&(Gv0oh31?Oj{y zhxyA47qnARqd^qe-0R3`cGx29H?t!69V8x5-RdF`$XsO9e3%vT98i#K3pL^G(??bc z@E$~Ii2_(V6j}@emFyCLMM9n*C_uL*tfcHMBC3(v{(ChDNgPt*7o(KbgL!Sw+ktbw zthsG2BWqRS8DS8hv&&VvJ8$EDtMcqBiYHpz}t9`9fGVD9wmFj+YClrwSnFN4lH#_9g&0)WL$|2F{OpPkE;x#S;n z8Ay5IT;ecv#$0lv4~Q1#lGMLsF5MhZPpR3&pav+LcVG%@6a;fUIv+G;NT5KJ@aGPUH!jn(MZCq4f~paSHMqd2-3Zhwkz#pU$t(6Yod9RB z8UB)02{}syrXo_IusTFb$wUgqmmXqXoIs+UH`MPNxn6(bJB{3dWq1rtG-G+;{0gl3 zD;0IWa+ho|iPMS9FV#R9II^PeS-4i*V{%y>l^QiIPHJX5cg5Vx&0@z{LrpTg3fj}< zP^4fF&azton8~EjS_rTUw3}ArZbE}GW%;}#x9cKEZHJsZEQ;2ErmV<}h0ubfH|5|( zRlx%!EB^YtCG(_n0fRtrVAOH;>GMl;O2zEkQ^q7NA(4G$RcDj(5Jk>1&0b`gh(@=^ z5(w#gN(2#k30QV}nA1b&d=(@vaBMjVDCap7X?HXmzTYK1l z6S@cly-`h5UOG@KIip6rYP-J%XKxF5Im$M#+O83v0`EOtc00U<-32%ek{jzgtA$-u zWVJ6x$g-{`KGc*<)v&(lqcW0IQv9ucg1m( z@d@Tu>bw*zY(*#USP3;bvl9_UBDWU*aQ@{MU9xJ(hx`seEA<|oX@BTD;TzMt>0Bj# z{C#i7x`x9hkg_{#*(Xwk$8Uxx=|%!0MuR)lj3-?iC4d|5Cw35y{m@$}w5sIE51G+H zYciR}>o^Hw{vZEPpK1-?HlAI9Y#Q(SunZ#t5cx_LA=UH2*tP{&V^IR^I$7OHq*kKN{}H!@ zgoOGP64ED`=J}D;l%MggtSsuPU0I@SciD!SN3C>NVFc(q|Ab722#QYId8|PM>a@5Z zs#i;wP=Rh_pB&L7X}a(GaPM^IjtUF2{LZYK-~zUQ5&d%7=*?t3Qdds?t#u_}&xW&G zw83m}GCP2g*~!eXNWkW_$PVC^@dpt=h1MFvAUpUZo{nrf zzVDOx*)WNBjn|X-+1^RK<;ZfM6)P5H6pK0!Hz0H~%{+q1SA?twnD1o5sq1(^bb^rE z)X^1pfFp4n1VRqUj*W{LsJ6c_%S?rxbBbieRL7zsA{;UoW~CYM6jmCsq&RzuXx5~% zXCXM-c%rVK;A$F!ht#_+o&5RyEiX?eOKWelZB(j6Bu_QngTvnr^chz)I1UCj2xsua zRY!on|Lz57^cSh~$0_VVJ$Q6!4?~H|Z!SQei3-OIxoZ4;^Gt&j4C&A+iOvE4Zg1k> z0WTfNW^0esW-*@nNU&B2a9)P!_h>@}p}~2NvYNAX&Ezbjc+_{)YQ>|JZ|eeHX8CgR z9k+aWsE?S&!6V65C6BFfhh^DVXX)3jppUVH&PkW=AT(Hl5LRi?^{NYI`CMH;5gfmc7!b=!`)9Tq>Cxj*8F0K>^)peb8GDMaKf3| z6HX8J2YUEuLl5`&(!6f9m2Dn#0*1_G*{4UkEnh$*ktDDN zQUCM;$4e}ZvNM9AhRbczt?a!k$z}xH!hoQa!QyF~JYcNR`Wj{QHR^n!FCGpHbbDV_8d5K$_Ei@E z$}-y1T2OYx3&d-<^JtT&xbtYEc#WJqp29rC=a6B%&X9{KGjrM31B0TtT_3P6rFdpv zVPxNENg6Oew88A1iLpFjp~?j=Uzjm#%6J(Wh#;f|ERp7gr{2NP7A?R612c@J>0m4k zmHBKa!Uw}&2w@r6vgg=i(pn`BDuS!Zxfw%7CoLyK&ZL=es1@Q8euG-hq-9HVCe69p zz@#l@h>dm?m~<>Atvf7T32-*;Tsqk-E}d*P^ra1q8L?^Mda+$o0v>ePHR;AS{T9)i zPup^47xr5#s^BPtX>qvOaDR7?4+;oa^L!BV?s2z1w4L7K&hs<=_x+6^B|*~Uhue~* z&1MA@bdo!4or0q5-K&bk8{KRSOY^7RPnvfX!k1IZCY@bmnRIkPg(AxUR#~?o`fM?P z5b=YLyKOTFkl9iM+ZP>8D(D5jn+2LO)cF~vg~3o+B_(l>~m@Pe7GAlbxsuD_F>+73?3BNvKyjAlEJVTu{wd=7<$@S3c_hw z(V%vKkG%KgW!}ZDr+j&NV6=0afTV1`Vx+!ANW9fx02fOHy$Y0MDN&MV1Kn)$5+={5 zF~I^1Bf#%axIuz&On0pGtu$d0hG?OMI@x8~1G<|D66eaXYzy^8CFf{vS?uEc$C{Pz zf!>wxf!l*5Xd{X;Mig}}JzHEtdZmx$?+2<;?R4p_>RO|c86|xr_ACC_?UPET2z`KM zLy`2zP_QPi?@jk=?;=3nh@sab!U*XS?qm|bG!s^vu?G89UtJ$eKzrEB_@P=M(dX{b zl5I$ost9X%!t^6280sGG+Eh!lP91cSPqmBIm#T?+s!#Y-|G=mE3!|Nn#;7kg)m_aW z0z+#po|fIjN4m>5dKvRh9eA-@@7$$IGbydEl9*fcG|IjtZb$c|X=JBH!!~jDqdqrn zLHN|f2*h$ItRtvPFJd<7)US zO5wx(+}Gv+`mH1dPfB*M|7y7(wgZ;0{A;{sD*YAglrXaU$x=f|md_8aRt2y?;` z7_UQj?$-*+QEezm9qy|C8(pl&Qb8xn*~s{~9=OptdpH0;0VmFwDw_iff@5=J0t4Kg z?PVrMKDI{X9H+^?Bpuc1eB4veISyad)K5zX@=3OQKF zYSXEU7_Azh@D(+1R6GD!iW1!)Sz-c@6W4^@bwFpgUrXj8b%cu|k1$P2&yb!8>1{7h zxA|KHoE@H;M7>h#;%Lt+Bw{Ib%`2j7lva}@rgp5N?Of$G)#WnhfIl88iVhRuj$dj;Ehb2bdL8L1 z59PDT)5Tf7L!M%%K-Q;En!ctlF#=sMeUIIG*7Ob1_3VcoY`K=YZ-msC-aWjE-au9S z|2imT547L;M!mQi$CZu)%S~7nYS3cDtsdkYA|#ru?vuA2csj@?vrjf=f(;0ePvYOepy016Z<_C({H68 zVN(&mWU%pW6YiO{N5E*XKAG_US+oLi~!r)a+ZUsEHjdj=%k))TpGq;bnN3D#7L$uUer!x^Uh|62%;9 zQUL~+J-AMeUSWZ`CxI&pT3xCaOw;T-NoyrwnYG0Z5b*N779E4#P~uKxn>o9#yj6`q z#7flm1?&0h6I?qC4uHKPlClMb@_;n+I~ER;nt4Ob?rNsSHB!uu$6(mHGMY^qgV(8d zE@qt(Wn$b2X;o;I{T^_q_x^B7A+w>={{RR7HF;CQno<(HRa5UPz|v$8pPe(cufKDX$jMht1k?nKvAa!Y z4O3zuE?0*egzr3HfJw4f+XE}KC-n9no04Nm_E|AZ<;-T{?DrkpfTn3g55skU7aWhXq`8p?kKsrp>apempH zb<0uUhe$j^f!|N#L1FC_lZLR)x0=JOMDbO#V*NG`w1Rigtv1WQs-*exAPLTJ<){rZ0rYCSWZpdG$l&m@>7{mv)>k}AYv?XjYw$x zwv}{UEQj<7toCAL|5u(|uT(IVCY}F9cowRISw-2j>0o4??kWB`mHm&`+oJkMF-7Q@ zTP=V)mMZW*H1yUB5eIs4)NS7P{v*=6OoG^j>d(7CVRwywpM93iq382%`^@THe(M8m zN=xhP`79yEb=}*3Tv?oCUFfWojEADmh4-sK)?4q!|C%023W~EYH9Fe2S23!vcYNT` z^3I!E4IT6W@;=dl(e_w36@4J-!q({tQ}iz;1Q4*I0T3h50EiK2fK@Kg0Ef^54UpRA zG(c+7?Wsls0`meIpvFK0)EH<$V(A$)&^jj#1Ofnd!OUeTD$@P*yrUxMQ6U+OY#@MS zf{L*V?h&qWVfN-I{P$Yq6JG4^eF2i8*?7)_aqkyponG(;f-p4Z&zW?^5Hm2w339+w z)-$6k6K8Ts00^L|37|1~((IE+&041e*=hZ*C~wN#;d>~rZIstnQ{ECspwfP}W+%tt z|0udbssilIz6cJ990|}*xSwN&Ua>S4!(HW)HP)hOW_Q`(0S2Ox2UEpg5`S_rz<)vEhn9q%lK zV!iw7)*MTJ?9}k}b5p}T?^=FlEpN>_|0_gP&b_JeFrN=;=BGRz((opk>eS8;$K{oA z>YdA76M1|UYt6r=4w_RP?^~KIcLOp8p?>HOKLxSEejuJ;g(#o=h!c2s5kxxMb`=I= z4M2(k?(1!Lv$;xGJHIO&lXXum%)U|@BWyW+3 z>%Hy7J8JVR#=z&W?B+|DS^j39#L1Db$wX==jKEpk4HNX^@(4Fofy&uD*9epc@vvlb zpV!2z%WjQ}p=@@XDpv3hS6ba!k9?{Fv9jnOqf&*swMY@V3p>OOgeb1KJf9txe4Ef> zf_lA$ZK(cVG~v%a^GKKx#DB7=YpJ@UjKW15r^WCIu7$|I486sOK(CrLkP57Ulo24L zpwp+Yi0Pyz@2e?>X0Zq8$lq5hU3|UoV$gLw4+sgLP7b%q+}g#jatthz0p5tBYbqx*Ct7VVYke=eVW z?z!jU>*e8pedvu&ZymrS!g1g1tD}ZOWR0#UQnS;ha-A32Cd?T&--HPFaT2kXj|$wQ zAV`_g1KP7t$ec;kex7w`Dp4^yHK6GbL{fsv(K+owB3aS7EOahAvvbQ@@OnF12Hy;w z6X+wm*^5mO$ujN$@)3dsC(FAYeF}N{UPdqytH@l;gP!0Q?qs z&+93S`}v;iTar?7yRANJFx3ZwGSeENxfm@p$y$C``Y6)nGg!(pPtKEMOH*%8lN2T_ zVVxi+s(O{vlAhC&mQ%wAZDa?iF+U{cFUtt~psAv|mGa#hENA9dXfu)Zs7lM_7_2hy z;kpKe#xXzXqM|3vSXHh=jNwW?A7MlsEe>Vru3l=GT0@sAh?0D)vu{fI;Z$dD3-gy< zrFPHJglFq*f@{1(;hrXt!svyXXnPZA$A(vmO>@Jq?b$~smWrtu{{Zu%+Bx5lb&)$^IJ zdPmhgOpwI7Ty^L@*)Da<*rK*h>`cTms2oAFrTa7v_`8VMu7KH=jO=TxK&Bx@?H~vU z&<(2tL#tK?Qe0oJ(^4N>FY`(d(PR}#_yXnh!r6MEIk>Pcy)`jIi;~kMp-?3clC-D{ zc6+sfPSA2uaR$HVAd%e~lFTT!XwKqXD@lb8aN>#~7prP$?9v7Cd5670WEgRwfqnEC zbG+O@j4=-M@ScLLg}kRQ!xksaqrI9^Pl9sSb0;4aYDuHjrSLqT<{-j?L0HABzD_lL z-A^al`?|~EDPa*SpQ%vL`qJ*{OP8=);<4O5w6Igf@~T_Qnr?CI+`Gl93yWuN^W}S` zPpgW^W?T^1SB*ODZ3(SIg{U@?yoWNrmjTKMRXwYAUU7g_yxi$LQ`MPOEky~TNZVO9 zuLm=;`;S%7RbwL(33UNjSa5#LgxSoS!=WWU>%NMi50M&^11}3Pz4TPQ_Mi@ZkqR1@Y~V+*9;i zdPcx5k(*}4Dl)WSEd3a~)ip2M&NDNYE_O;O}byJ&^oC;CWN{Bu5ygFH3IrH0*Bxb=Y#x|9GhdZk!O`Vyefpk@eL4-P0$JyCIkEg~}(F5lb1;sW z8ax_eo0%kg47Y0m*(Q><;_~S~^34EnvV1b6wK0JIAaCTiC*v;8fbd97yUktsSjZ_` z*&`th?RY7Q$UdziF~nym{NEDyou)5|s4qJm4BTURBHbPy>rq;^Fw*pwO}R>3vk>Y+ zy+0*`_Av&ERC$tLusqfFw9SAQfHcstA689@=i z(_1Umv1Q~d6x1p!KcllgA=^`5hHoY4dLy_f{}zK6HSk4Vm#C6_iS#8gVC1dNz0F33 zjE}MpPEED4AC1a7?_kzRQ&_j?4W^a4PR=(}Ejn#;m}K9&K(k>VO@H-0!QR&c5~a0* zC#k?8-8Cu`(_Q(1C<2u5;?*p>ULn5jODV*cWRIh#+MrWkgj9u_x4#vR0~E4wGKN4m z0Xykwg`H{VH?X&`!;C>C?Z)6Eh6dq43{*~~g`0L_pm5;Bjjd-^v;OpL%d_|M#TNnX zG%AIjDYQHCE<@ZTCp{C=Vysd2?QzPQ>qXkRn0B)7ooOEe`SkuF?wHW;w|fjkwCOJ9 z)?v&!F!0X*V-W!WyzT#sq|qAl7P44^=mB)a##_8XXX;?fLi%B5w5!Yv?y|jFSB1d@ zV?qa$CCki3K2=?LAMquC`~UcM4xGCk9oqAbF<-XL8~QbsVD|0&I0+lJ4NoUG!`3j{ z+K-d70LrN;79zO6 zF(4Bc&K`_cg8@_#AtS1jw_&@{@=m3^(Y~+0;Tdz0=nAY+F@vhJ_s*k31b1keN2l)? zfp%>0{UVf}_zEdkheCVXz>lN_n&GZT#)BA4bBhNH^*HK9$$P?#5dL^1}W@7OmrKDsi%=L?pA>-z@{aK;4b)?YC^9n zmLA5e0Dwp?BfjpabH}@L}kT56qR~wX;sabHR!1{t;0w zgeHR0iw8!6kWp6XqPQVBqDP0q19f2tyDn@u1Ly^X2dus`3$wx2CoqR-m&E8Zf&PeW zLmoMKM#*8baBdt9Wx%1hk3n!k zSiPc9fM9r&T2ln2v+FWvYgB6M%o%mTUQ}1;s}u>*3V-M1yk`96nV6H78iiWuG6*>k z6j-Q~+FA6kQTu~i=;Pq!CK6R=AFQ*=10{J`n3VGMb77%f>tgjQo1$HrZ=`}yxHB8M zlFkPdIV#|q zVJ;^FcELey@JbpSb}Ge4n0V%&xdiy#eg-4L@8pXySLoTyskraJae^nwpSJM8>=Tbg z>q7)fCaVAC@kkO!2z-h8e@c$gLeUOS?K~0Ffu+i7!2@hZ4;p{qNaC8XH*q9ON(gpZ zhriWthb8D42T~*}QpRH}1y-}v=p7tG`{vF?v~M245bH40iz;4#6|+v>Q4AhB46hnK zJY$`ba?7L))fw_8KFaOI0C|Zq2-}oI<-NSBFjv1YQmu(i32hCe+Npus#6_))#CLNs zv8Q}MvW$bX9&SFUk}NNRmqIz$-2seE=XD*>AiM?Q?H{)N85VZf-k&j<205>scj)~v zZ_PTX@mlYP?aJcpRsorzNdeCAuIgvQ7?39eB0uftT*NjwHYfuJIFP!5qt*GM)ZDi4 z1=*F&Yar_QVVF|_h->oLSG+aCA5~*`(=xoF??_9?I+&?hAu;m48Gk<7Ze>Tb(&?GNg3}n0P~$4XztnXofEBsx=3ZNuBxI0pwm2U23w7WMxZzekN`)3Z zb#x#`=;k~D=+|Kk+4#$Numpwnc7`f5*qM}A@V)XYzE#Uw*`_e1%rVSh=B<9j7{dR z!VW&PNA`88b~adeEUm4LgCRZDlG)x~A0(*|e&l|JOSX18f+dQtP2rz4eNMOX9-EUV8zUm?ir*KJLHFytzVAk#_8k?jB zR#kd&k|zXVCDqMwPpX?6J*jTyo;*R`O(eaSfmzYZz`*FGpokSNg>&)8WUzyhH}n2A zGRjn46lPR(G*Hoy#bPYzD>Do6{6y!*+!^0Q2O2$MePvB?&v3~UI6P`Bx5BkqBGK*+ zOXgrO$~)#sd65V9AeV3O2%K7&b7PZp+>^?g3q4vjF#u3j2fBucog69<0!1<+Y$F{} zKue+_p@PHPfx}!jAoIDs&BEJEZ)Ll*w`1Y$nBK~^X>arJHrLy{dOIH8j_a+gq?UJM zc)L+=Wihq4o5I^odMn$iy`2beC-iordOI23PU`Js^>$l$yG?JmRd08Mw>$K9NA-4R zc)L??cUEtAhqt@+c6asmy72Zoy}hn_yFa|$uebXR3z$-nf&Vui&&&b%XD|K8fla2r zP>>@nJe9B;Wls-w!KaYlBqRwmxlFJw(OBH9TzWi6*AxS` z0MNoNJ8~MwolyM}E#MF4^nw*%(<8frKBz_Iq zZDg0P>7o}Zg09w#HY!7ZIL-QGykwQzcns}gtqE~HP|i758dTD`5`iU+C&V8kg{>&V%LDPgjs#UO8bhs}M;IX55n+%tlXYFu5ni0ydGX*j+W2F@I<5Zb0mAKVYuVgX`0Y0)7CqQfdkE+j;&PpN{Z4N7wxf zE&TOBu`0YCC|2|Oe19Dk7lhYQv6j~__SZX##o_f1Y0urC@z;~Z^6+}HSi$SuUvDbb zgx8yj3weE!zaB5(Le}r`VjZu$;I}U9PBC-vC)smtnfwa4p0}>W`a*ajeG3o85WEp2 z<|ne9D`9Cd0!c2*7awZSmBsZ)tR;2^#9jOz+#f1~0Aj})M$vr@$=v;&vBxo7l$cHqp{8@FHFsNQZC$`A&gT_LKR~0O+`gp|gH;*j8tv$7pV*yM(Yr z@B?Y1FCnHl?-}>unHk(`R_06ip0B|Q!0Q$ETFXz9i%iY8PFEJOrCLY&^VM2p`tv1P zfz&Wo0I=zBp69Wcsn$Nw=y2ZkX9>t)#NqsWe@0ic-l}WYz^hu6iARZ zD+C8SB8bDsU9>gPCNwCHh`4k1NnJBA^{n$Wtl`=V;J;@+af5J(vha+*9tZeLeR~To zj?`D}OwGym*hMxrNpNkH*IxBsI=?e%mU*pGc88J7yl4rKEX$?Vsv<%HW6&*0W34qg zj~oO94zh#|*@F5=yktD;yjJ_9^$$eqwfTOWP3vNn6NhUFK_ z=|!l@bc@J5c5cA>OsOsE<;LGP5 z+4Max**Ny!DKj8m33(gFq%9`*^Dv>4eMoM>MYurfOwUn|*Ko8Ui0h~UQjIINWHEBI z7ub>&&jeHuMrHw+R3#!=QqxTQXLyNBiFOQG9Oeu<_Xdf${ByD>=Y5@>-k|MU)~(vr znDS>uhbrj3Ohd3RUYM20n`xc18E@c-j5Zce?B5EL+Z&ktfD3@!CV)+_EnZr|r%2bB z5zS_74IAi~)?*j$qizfwjR&M5oVS^1`pljKzGIok-1F}EFhLn9BQHW3M#L!XUa+ut z$av(Q*v^h)@6bF3$tTh_h&~q7RlkE@I{<9Uth5a?_Ld6rQlBg(W_(GtwItH8z`TYY zGJ?vfgoWb&)bhX>0|o`IUQKqCR#xA%`W8@LQg^lda`b1IYw%*YhbB-Y3Tk9F4WvxKf+- zbJ(1*H+}3TVg@cRk4?3*R|$4WISYeFK@gwM#OFEWXebbMBg=iq^76h@X`LItb2jwD zdah0X*}gpspWATwg>P7b7nDd@QWn19NNsP9BgvjT%LjtRX}~Q`iFU`2;aP}sX6d7( zrz~Bb81SpZcI!)dlCk)P%yph~c0iUTD|CcHx?l`_2*VRWZIohJ)5Tk)CSjl;C>W&G zjK8co{AGCpM78lr`ZQL~evyhG`r+l}C#cH9*ki|-jOs% zQtp$Rl&nXP^W=RW_blo=UL?vb56g`tz3)tP=sONAq3`N9OG_eF&pSC2K~1sUCfcX> zoHx*4H0q}J$Cj6$3B3n@Rup~1QFd%ZKQ_2o(B&Z?T$y%9(fHSt)SW#(fKbbxG@j$= z^n)NPoTUZv8JFE)WSOkx$*?mw)NG+R3NvHr8lo{aSjVBfbb_?8X;_X7+PaYB zptTg@delBzp;@j7sA`mX0n>?81<;Ki?aMxf>egMtKWs_5$VNO-o)JuDtjXkC+Wi^Q z+-lXO>tH=g7JJKkQ8pnblLVRgeZ_@)y32(>yy?$J^yVUNC1>uI?A3{he2HGI+JkN{ zV32;%9;xUh$9lWqbBW8omO`Dtu@e;%Fc10(oR##H6R|8ebpLytu8Zty#3*5!Ko7Rz z^Of?@g_pteD%9`*RuLl;9scd|^2ncos(D|&Lf6{?ALHR+6Ho^M2D(G^1K~D%BDiQB zqt2h_K*e*5Uyd|KI-m- zlHxagP>prOh9Y8|QyPi{;pC#zzvl9yg{@5nCiEXWH`+r)r(qvGk26$c{Z7i$Sg{ic zEk;aml=bQ9fw11mKv5@84-~kS=vA@)s%mkWSyA3GrzwcSD9j4UeE8mcGgj?l+P-}v zYPvNxa*UzE^|X$GD-a^}bGnIl>O~+$YtwdD65-M;*cc*=BC(Je|N=1qHLt+Bbn1ic47Fn{cl+m`jkP|GVK1}J!ckbX)rKc5*? zFx)olL@}0Mw5Nco$CDG&WJ3SThqKR}?{ObFQG-cs9i1gc++C}RVQ8LL9tP6b8^qtvhw%hc z$Spc0i8sl|Y~-^s7RA+;j4-ghB%~CYYsk8rkM6lR+63G>*vQ&+9e*%E0gnw%-P!%R z=kb0O@5l9iDGy6R5wRW&3N**SuL6#z$*#wRyg%G$CUz1uh^rg)Dw-Tf-)`nO-t# zQj=OvSbB{~s=U@`)})r7sDKk0Z~pv>@`*?5^+RUD9)9JEJTS4<raP3{%-ZaV?(-2z=p&j07B~?(3#7dJ2!GTnK|^R5 zr39}3^q|zxetF=cLo$O3M~#B07X+YMf%l5EHLH1OBw;5;I?FqgF29LRT-5p%Cn0RM z{B@`+T&Mz1G-sSHjL$^@B*t@=lvl0wB9vr>5}(QivQ0TxZ%V-F>IrJ*@mL=n9JTJr z>^hQ0vAT#`qxzBV$sUtmI&cE$bo{wi_Mvt$>NIY|cS!}{H*)+?03}+1iXzLNtLUnV zJzSEHZb8bCpjJi&_GUqmzN{(u_0(EiBm~cMG!9aDp(7XN6*GgU>hppA~?k3OO z8p{a(mZTi3ExG6;;X#PG460p)*?P&E;yec9vz^-s&w+yb0hj3pXZo%K3fE%fvKbd1 zEYpZ!KOc+>3lk{hpn&q?@ySS+t;x^JZth3^!g)hrRNWA|GAcx+YAPfOt6~I1PVs<6 z&clYFTVy8wi25*`OElBVt@4IR(Y5-ssWt+vD#;Nbhfo_{mTcui^M(+Z*ZBfR~u9!``xkKTg1GWGTUDjlLb z5hiIPFIGCCy{=ajzT3BwyAv3e;%%Cc!a+tIx3#xJvS7BmSP?kI_^j+Ow7C?OWEvme z)Xde4eyi-h79^C1D-{M%F~%^Shl`opYE*af0$5V};3}uJ+MZvC3l_NEU7@^}7B3bo zFD=HdkVje>Bl`C14fJ3#8{<;}eDyGCNh%`|uHzLfhJnQ}qh76BblPG=!&;%vD{`KE ztofMGA;*BfxB?9e4E#n6N6dGzrW~_4^0X|R-nf}6c#Dy)7zT3ml`i>P+Hr@i^*V*@ z$qkfTPkzk6B>>BQ(zlvY8+e0&U%yE;y#U>QPlsQb6DO|G7r`8REC#0KV?PqQ%fcwq(f88zj$#ac)P6bD##dZVFerYx0N5U6V|E*OzgyI0 zUnkCMS3s812CCUzxq`1gI5x^i4a<+`Acn1%CrNpxf2p;@QfTFy9KwaF{k&3YgjY18TQKzd( zwk5hWQz1zL>b^?KToiQbkB*gZ|4uCvou#je$3km^KzGn^oE*CK4ku~t^bA;<02N&$ zGE{pzh}`lYAcu(zVwOV@^o|kcb!%iLw-3PpBP}z0z#%~;GB1H0r~1Hpqz}QsGv*(z zrYfv7`jC5xy!nv(hjITf-h3DrW^)1NZ>=;fN`csms;mU>+cthz;k>$@>um?z0BETetGvPIeV zbzhAecV$;fFb=C1QRlmf$M)4k$N(2*A6G08i+7kk*4LHVh*^j;olz~yot?ZQ-he`H_!vuTHPHWT4PNM_WcITrT z(-rttCyH%5J8XveWP(!EJzQ^(XeYBzHgs4Gn6c9>ok%sqqK9Fb*s)FUAoG-VNz>Zk z-tsSsw`2s^a)2{nC`1}(g6Ql6mn zVtZg3M!* zRd>J7pL5QfnP-wbA(Jr4fPKy(>JZ3l?x(&8RLwkniA3=aw!QD=y|1mofFIs~y@0eY z{nX0vKm1XGq9%xS60AmwHMagqt1V-T8Z2sTQKMp+wrHbb9TjU-l>7aywV&slnG6u* z_TIOj&*jgY{p`PMuf6tKYp=cb-mmdIkcHI+n6Kd+FIVBPPGbWDS>uQ-w^D#Fx+PEv z(fLV1dMKku1sf*4yt72j&wEfj*x@oN$v1UJ>(j(MSIaF3cPA15ocVld3)Q2Zyzp#2 z-cOZY?tZhJ1FgmEUF2IL0978am_5B1VRZK*)H*X7Rz-FX&o467i&2s7!zv=A2`h{Q zcSgLXGYb5DFpBUQ2=%)dy%nnk&KDSwvn}k(`v9r%L1BVDd#|RkL3a!>Kcp0m*8Sae zZnr5$RuKTqlLF9~Az2=!Mq&14XLg=!Pbe=^Ry~s z9oeHei)z*MwUuwrXr0V|Lp*!ZBDZHf{2m%owr#x_>tptubap7vk7flP!AQVl!5ET2o(p0RCCFGv7p#( zUF@qp|GoKLB?}ofdXL#%wrbh-$NYVr1y9Wf%=H4$a1&6 zGLn>DWU4pKLXqvg7!}#Z#M?dOv)<9Ap$6)}uxIr~bv5OEk~{q{7KU*FbI5=JbybXN zo(5^N225So`u@7Y)U=M$vRqYa+U#{J)D7$IuUmY3)}VGyyA1$TTo|u-tKvX|5jzvy zX}=;~5{-Cg`E5eHx_pR!3`%(Sh_~4zULR31JU(u=dZRr|l#>>-rxzpK>;^Z7?55-= z#tkhyZoKY(BJjEwz|A4Mm~)2ih>HL#eN8=d#27Bf{DslQ$ub9IQuV!=3 zqmlzs#4B8GTYt_5pHYV%ee}Cr6(z$JIq=t2??NPT+`1&^P+WQ`TM>CxmYnv6JT4F` zk(||hSYM3pd}r5WiLrvvxjwwvqCw4Ny_q9nX+El)+Z=F(40f_qP(?MyUnP4O<@zJY zUVqLHa6#9PMfJj|37dLAgjbWaRg8vXKMZ|_4YahDX(-z7-#BBAL zU-Fo}R1*>>>#W=4E>G-k{gQDzzuJmH_&X^h9$oePbB!_8zM<>c0cvARZqfxrKKl$?l);p*A==wExJ9#!bw2k% z`LhSI1Q2AuNecvX)#y!(@0a3=T1PoU(wE2Em1MU1)(_ z!U4XtC|KdSn8{r6g0JE$&4ovb^if7iIKrp}zL(iIzWmipm!*TMwzjadzM}AEF`pBz z8uX^vekHD|J}JE7?JcOu>)fUw^eQG#ZS0iL%TIFzo4|+ygZb~XaW=%?l{X6sGE);OmkYk z#;s!rJmRISAqt2EC4=-@D6%T1&J5y!p;Z-({MZLdWn}SDHR+86E46e=4|@;8r*f)!|g)mq`mQ6HVgq?R=Bw zgM@{ctbN+zRx&}K-BEe6R}8jN_W=&Q8NNXo0x!*UD` zr}1rT593~>wME5t#UahA+vA6wQOX(HULaeKOLkVeydZ1dt=Pr3^_zX}8@GS;#W0P& zN;VW+!dbVx;bJqhI%FF3wzNYG+TkWx*%O^rS_cD@q=(9j7FP>R<0EhQ&WEOc^vONW zM@S7U*g~w*gdyUfZ3ZOl`)PZk!tJb-q?#9rnrl`hH}$Pmzi032tTX~G7@Do^V${$; zznB`UY+9_Es_WU+9TR?&V%4oWeo-@&&12n_Dy@n}i?MSTq2Q9ft9v+`WnR?9AQQ9+ z{u-yI!O$jM#tafFMHPnzzA7cP(3dNz z+AyCuzgGY8g*POgOb%E5*Lhy8BsW?mdxEBWrhQdQ(6bmXU7!vuEd$atq_Ffc@-1h> zSD@g7$W5Oc=+p-NxJX<2w0#v$=+f!f8U{!h0m@XZ@hR`V@TIK?IwakAod+eAH(Grx zjIF*i?Tdx8eX+Sw!3$I4KXMXCC3;M1mR-t2o78=)4KntzY!9)w4tiy;+9hQo80MX)@u{scGVYDe7gS2qo zW$@Qgl8a=J_5?U_BGY0+flIpWExs+MPhGUzl&4sGi+Cy`Ousv29%YHO#a>Cwh*dfH z&`zAMbiBBlGU*nXeH}}$25Dx{o8jk@u9o0!RlkJ;GM+hC=3N}2G1~DjJ0ByjHXH;r z@i_H|K=zVddYc!Vyi%{x3-#M(K1^95yrg-K-3m48Nr`@NDeRk#uH8q2afShY%HdTs z(<_aEo5LCwrtk@KZg4NIrR{aRNNDfx1!sD}0|YssqJIw2kTM?ZrOx((hkC)u!TDu` z`+ah;;&*!+5wogh4CnL|tT{@MUjVnN=8H^?6FZ!ne{Q!UY@(qEGrH;r_U&UutEGa~C%hy@-I%~hcz zdurBZy@(78@r~NE06VdT+PmtYB0agiYiGSOLU5b%nolnZDs2+<(X~;;bPakf8jlDW z)wUq$?Dayp5+Nkmq~yJG-%C|Og22^SD&YzO2@^$g(97%FB4<*JGSY21RAy`q_!J5P zk&pzUHZej4X-x%(2ej&Gh1(8#5)>X+-xv|+pTc!SWA$)@?RV|d#dSS)`6j$Wu5|J+ zk5L_FDrNAZ{0C?~a>S9W;|DOP?}|zJ8EDf%G^D3nAO;8+cPKfHSk4CRqf^u4p^zB0@m?Elec*if(Qu=HJtmUBtN!{H z*PYo-*~<6r{tq}&Up|f`^nJ)VehoRPfdZ=v+wK@*tui`lW9|8pKxN;Py z0*F$lMgz3eE>XOHOH3_N^x9}ZSLCEw{=Vbb^yPpU4RS4LQ*5Amk1SC*yi>-g+R25h zS)&LbDNg+84uhiG5ygb24*~)}^2QQNMd+PNLX4g0LC~!b;8JEyTfxABL)#YuYh7`Z8S==fn}&$V2^%1_zpg z3@449__Vs|6jqbJllKb8(GUE>)O<$zS(@LiHwLMM@$O?kX}F3OWZ$Pw$!kij@g>aD(a7jj+w@}r4nT5oa`|stQX8RJY{qIG?-=q3qTpuGxPQu9H&j!P4 zbOAJ&tVEU6(DUXa0h-!UjuOz2%Woqp#rHfUrst^|Y7c3cy{LxR^NGuCDUtNX$2?A~ z%R}N@TRPM%J-{BO1SV(86--$-3dvxNTTOI2F=Q#A0o`+w?QSJ4Kkqpcxj2c-%dg<| z8=k?6^H)RuZ~oVYefi;Qw)g2KJE3;K6L!MQZ@L1Fakb~9-{Mb+OVlyBbuV0h>fKj{ zn#()C<8!+Gdb79OdOLuJO5>a$qzWso>)kY&rVbh4~ z7;d8!8Q!L;iL{q+Xo4`!%7|I%)qm|ij-})qQ>!q77ADB8(PSo#I017*Tv&bjvnyrwQJ)MpW)t2Ga&Y3r6XGfV#u5xR$}Gfe zyF!_T7=it2?_-Y8vp#KMikhVjaoAX5h#L+ZVbfm( zN(b>aP_5|&V)dS%JgGpYNdOZHq^F*qeZ8Hu{gQXYv}wrRy-gw&U5Oi)H~)Pjzg}#_ zht`-?Tz>qn)MGUWG?(apk2Jq2WmRLvCaP5Hx5^{{L$R_t<<<~%;=lnM;gV$2vsSs|!D!Qa&T(LGxKYA(rP zkaaO`OIlsvx+mv6_{z_&Yau_VAk~3PH0w?Ey60@5BI43sgcfJlf4~aZMMkBr_rrMO zp79N67;}$~P=L(u+@zj}HhVqc zUR$X;VBEc*6PXB^tTfI`;G}X@;X?Is+_9P;x80>`ZGJRRS7eV61w{N?K)agMP*TG9 ziO5j1pccP}+y+`s?h=ahHO!Ltf8EH1^+BS_Xh?(%i0(74YRgCNGQz+lj7ky)Q}^ae z1u3Wh!V(z_W7T#dpH9T(jz6ywv?P|BALw8#aerdNW+*=!L%>iyR_8)ysSduy<==nb zK%&MfdG>iqrif*b3I?ZmfHei!HQh@sNwHARO)V z8jR8Xg-v@o#n71+Ljipx*%%1)4jx*UpfD+aOJ#U=R}G+`iE<>qtH+M zoF7HFZx)qgCB=0`wJ2D@d-X~}%wj2P;f%YT*Z1l&el{@5`s(~aGt0aMHV)(L>r#M> zed!Kv8@|~6>$HIH;YlcsD|EUO1EsX~?+r$^?r+bJs%dY2z_!z+y|75Y{|ln;nY;YC zluI=e%zSmBvav(g18a8utAgn&&hNIv_&hKOl)JTduv)jc$tuf+yvzB!SNY=~->aVi zxnIwK=&kSkYdF>FNn87PNGGlM_+{NjBKOcF|4KvtyuLKMWe1`MjM&iFc;!FfKu~@S zbDsNqLYY`)kpC(Zm7$Ek;F0gfg;Uw%Y{Z`X*iel+hhOv49m*dG$|W>|l}}5QcK)v8 z4LmLF@4*{d{n9fQ`GLjR@2XYZiJgBC2~_U;7cLb>BtS>y^v902TH)s;%&stea*h&} zI($s&gS#a;ONk1Y|1sXL;gb%@$zQ{83g<8l7pgYOzql9_L3x2dDfXUKoyamkt06<2 zt?p$gVmQ(phC?P)tdNOm*~^r_ea!;3{9j4p>MTM!WkS({mTd6l-wE1s)QQBV?eQVz zRuOICuRN#efl(DZMG9f{v^^(7LYs<&q9R(lOkRztPuHg7|L64+F;^~QBnCw#J62Vp z?RDsFb?B`MX{tccQ*r-;G*fZkgEV|p57OMyS7Kk*Ut(X@SAvhK#1(=iv~lm8M{n-! zfAofrs>EB=hR^!@6ETWo=n3cO6U;tHdVeAzejkIgb@6*1J8^%uU?M1$Z*cVT@L=?u zYV*%#f%VOaF5)}UzV|+3ZjoO#NT|=};N`xgXf4)aknQd2L(E?2Iwj ztsbxSWj@zoAF~OE6@Q%x?lpu#gImjvVTb&z7;+x5m-u#o!IJ_^eEth%+fxEv!Fd_J zP$KA1M6xyw{%5Ms&SC63mc3=#$*4<;|mj-g+UG?$lR#s@W|ng&mV z(SwO$^k9uq;OoaI36FtMnlLf);ii-DVuqo-|C34nS1Go#>;(*^Fa1#cVHE&1ECMHp zC;AyCY#Fh=EMeUqYPJt<{AjyBtXarX8@>Fd;Z@d_mKbq|QuJV4-uSkma*D@{ zmt`l=dcNoQT4S)6VN^Rn@t4fHZ`5&u4)LzHF85b$D2?FjL=I{Us8N1HibSJo2^Wq* z0O30{xaz_`@y%=UY8$6V;|rNk&Ym+`=J2CTwKSby^H&aAuJd zF+>H6b@6KyYbi(9F4OFVo-xtq?^UFVXU76owevLj>WSM=8(n+aZ~U|~II%1Lw{|w5 zE}&M4m4lNi2Bj#({BUt#lsq?ed7K?(`5c1$k(73-jBgzF%C;`^-|sj5_u*!CZ|uXX z=irc461^KFdc`H#eZz==Dy$FYm3W1iryrU0xh9JQA+pM0!O+M2npVoNIEtTzFjf*ow8e!U0a`<#&E+es zR7Hr{_u>S0tXqp+C8*G>Js_CBR8tn071D(($GC*QV|)(Q;(1tOy%lsLu*S7{;bU7& zgL^nt90>@S+T?ZPBw6me`sn!qyOt>>x)`(Sod}UEZz=odlvOtO!zz@Di%X;D|d^V7q6$(G%;k z$vkARk=a8A+vfeq0Q=$$K7V_?9H@J#zEv(+!UofhF2=5DX^}03H*|E$R@05_w~TFb zu+r5NPWC3rge(OhQ_|0Eo^gH``&f!&?o%U*utzArxPH;4IsL>hRIVaE!^PeTK5W+u z&eC%;FUnu$j+F;!FzZ&_rUp2{XpCo5^5mc-4+o0xApR`&7P$;Ph^F0 zcZ{9#hvr;p9j4FPN0KHf{hwS>{?njD&k9;8pXJ>*4dr*7sE!<$JyZQ36^xpU=96F{ zW(D+8?tNpg-LCpdBK^p}XMGJHZyCydMb(T~)f9daCKZl~JCbdIs`tF1S2a6N0&Mq< z2G|q8G<8F-;4gW>+peeJka{$ho#$KpNG+4;^8CR>sUM)n+@It>NK69D1}tX}=mwh- z6hjD$n0|)0*d;!)K@F3@MMF?k!MeCBOk(%fcs?lIm!mclg4v2 zFUsxL_0Y94dm00!(U&>os$tl+wZi78M{K>eia0tujtb}j3aX(O zy1zs6pGO~IxQS_-6`g1b*+ZbTp_MXM16ci6T{D#5Jf_iF(U`L%2M8n}6= zzk$0$O?3m`H;#Sh<-G=$c>_OH1HUTMgM)Ts$U@0(VtTF30Vsm!Gk5C|D-jl{`Cch@ z4?k*Fidchkl-Kx(YJ5f?jk|P-@^`E;luGP5SttEtbzi8d2Ki?itB?J>SN~G4e{v1= zzaySAAp}rYjJun{!=>W$!EXO0?1o@SQa>2L`D(hZDxy2&)Ygfd6VQF~cMW0rqi>dA z6D_}{Nyd^@q-SRBA(sU;QN$L~Nqut`57YJ8wnJ?>ghe&|BG!}nOED(vY^7*=Ex^Wk@E7?KG}TfbA=Ixs0#ZFs1^w%sA= zIjk#+$V<;kx9eQ(&acn_m@Q>Wc8NaX z+4G2xmY}AWf?5pJh-bg21>)I0#NclKX>V|sc#T)8?!Fm(=qGiJPIXs7MCHtnL&3); zGmN)AGJ`l5d;M3>tA9GwR8!qfO~l=YdVnqRg4d`ZT*z^rzqT)YnFHK5fxR^pttLAh@zOk<3WRb4w7|d)f zEj$9qJL5T@wnmVTv#p}reoz5p`i0<#$~(V5805i#M||vi79mknLGr9vGA}Og zoedRm>`IU

z4TpHBzp=&Gy3JH$E81wKERIxJzVCQ3NyU`6U>o?ycu|y2B;nse4oev0n)%B)5cA37 zOD+aWqEs8nGPFtQ|M&P;dxPlc=P!O%#3HiMYz?#rk&KHLFUgl4wQOYhilax5TY21Z z$E_MW=Gdq4YyWWTQ|Gu$bOCPydGvX>{$|MZ&5gL8&T#6xQ+THD7x|}5fo2q;- z2jOeH9!0&r1d^eo1%1nbMn2-fHxiM9&XeNASqw1fT)jMyU%v?5Ct;Nazl*v9{z#Kv zX1?AouT+;kkveoeTY-uvwS^~H5UT&1D4U)E+8AoWwncZRuPl~kmHt&E1VFG{KHTVIv8y>#4STZ8Vd9;#2Uu9ryJmdz1MfYx4aeT*3Jm@hKre`|tCq=G@4H*#E)?nDp( z=rKnf5zzat%+s zU(M_!7wFXzo(yOYAPlRe`2U98($z2)y>wWq!5Aui8Gr1I%1;f^69KN40p zx(v!zq#EHH>9l^g#)%=IywO}KXm= zVM?X7XDk-Hc^=(oXwL%l@Q#pO-3eWB5xMr78TusLrInh6!1k}qHk=Fm4K z`ijW5#=z2c_6uYyloxL^7zA+IGCvE3f}9XR<@TeK8wM%J6^!U{Tp?wYX-O?cgOZHs zl?f-Pa1rZ8>-o9-8r+&f3HlkhfM$tLC*4Qh&i}Hh1rbD`r&WE{Hp$Xdf_Wvdu`Iuq z0i_$N8sYKkCVlzAVtd3wo6k|v&{B+ED z+oi2&A^2CBwa8v_NZ734a&s-L*i_P-+ql^l{#xtUHq%Dop4s536Y?@rn)!=P7-$7+ zf87qIr&l3jyeFByQjKliYMLKLjdaY~a>Al-sn7cPR4bKQ`m->h0ux?<8_k+wGi&9< zRJVB!6k9bshw4M)4v1CK^cw7(Da4UsmGYezamMOu5W0a?%CH1Ntl?0ty-=cUOYu~B z3Nqi)>;Ybxex32=8IaD}q1<-M^0kqf=Ly;E3gy;YmjCLtdq2PZpYQ(W%yY4XX600! ziI8X7PNuD&`|97m|7-vDkCsWKY|gqZ8=#gDzqz}_7ZP#~8+KeT64M;!{TYr2=ouRB z_8;boHARZR1KtMmug6@@ODozELb&JGB%J};U{$)~)s2bMqVP{A4#C;Gs=)fbyFfON z`D@$siHeGW9Xj>YD?Ct@=__1S$dRzI4rFf^keiuQ&R5-dS69|0Xhk;~=2YN;2kOcIdcXPRaDVSPWlzC3L}w%#9Kh7CKWaY^DVqR%d}d@+|h~_0Zw{^Q~+Kx7{V#=hJYlA-ioR z$-<_n&R`v8RHXxA@$@o(Hy3lmJHmWyvBa^y%7Po1I;F-@!4~F1I zt_#wXtTtk`mU=QYC6zzUji#KUW4VVgn6N*QXiZm#$($g;Q2&EM09{Ewy+$*6E?t?b z7pT+dic2+XB6%XZg6@9-y6OqOh3KkbP9F>+onXsw`SMlip$tNRNb=VQx?=DNVrCOvwMMS~V*uY&FRI2#uX#hqnDp zU!CmEM?YS_Kr$S!_D%BSl+s!&$>~Mx(fXUX7y4oSt&aCBSi3dCMX5* z%PV$5Qu)S^LA?!wJNvxNRRbI~_+VeIq#XCoSw}G#HJK>t=mx1^`Cku$o$ohai{|7>M;innvAy+8tf9nR2uZl7GKET|ZZaw7jT8E@kqb%d^e$N9qqx)_@|sMkzZ2VEf&^Lth5V|M0hA5{6T#QEn}WhZD* zqYhZMN|O>QGg&U#Y{DA;cXJ|{lI7NAu#o?Jwc((J1Ld~m*?*x97Y}eCRU{1CO2k|- zt2IejogitE=uBvY+Eq{IS1djIb6GPJFj9K}v{CV6Tn8-DW%~;x#mmcHi_p_fKL~1E zO#a~b&RqtiH@1jBCofVY^q?I%AR6vAwO22&&`&Ob9T9lZSbm2PCqpMdmM32z-$ZUr z=NI?S3-aHV8AIttyq~oD+`^I!p z8<*?O^zxzbdw^e}@AIGi{&TPW*rc<0lRvsTyEAqbo=r%QYxZ)<99DUcg-k42%C`UcI1-Pf;j&<0~VgLWia!58X`mjSjJ_ahm!t}IUeMZ?+u_;YV-t&nzjSO z&SH!Zu}!g~SMdp&q~1q3QAV}W<*eR^(%Lb`q)Rf9PN*ySU-LK&6>sDJs}fjWx%1zm z@;i&l8@?Im?}&RzT88_-dObw%rBFPvjoqZdCV&R)OKXM|T_?o0JHX8WezjQ7IUKUA zoyObRGLqr`OKVsG-rO=mZ%C(wp)(3nY1uL&6JOZGTE4J` zldT!UHIoJh)^e8lC)MHZe;zD9_*D!Ua#GK4OHn@m4zn}(zX9DMKNB444}K&mL!n(O zPR6aFsPmMOrDg=9X^PiiRKD+R^7n!9MZmxgz91ai{%Nqh`^!fRhb*QxDu1}R{JV#2 zRQj;j4~`_KjW(X@<`?K{mCqNOc*X%(rEt1Ra!|*rOv*8OI#z`SlW}sfoQ`Cf&hJRc zdf)Z73#APb;NTp2C)NPNgCzotzI2TPLqb$JvxrTpQOQVhjCNA3PjUUAgcKK8T7J_q zQx&L-q!;IZwanNQoHKvJ7-O9OCC&%=jbmCOo6^+CzSeRUJ;jKMM{}9Q{c-umpU{D| z(HLtM-d^Ao#-mtO%Wd4@C-oIzjyWlrRKmONgkP4Ey@bM#<&;<7p#+Z4cnK~JIwhSE zTew3SZ#h#Xtc}*4l~eoq`HhfXMP?3og9nz9q!*jfn9Mh^}ujQCNJjW(->`{&nT5sjTA1L8G(4d67Z5*_!3<($5 z>!Q$(C2Z>@Tu7%?;zp;PUcx0OB^MI^(0he0-A`dPac2IMbQAHn+Y*Y^&HN6Y4RB|Y z;bVp)Z0!{YY+o}k%BipECLH!JUR6LkIxX}PKhS^GKPX|{mXM%bO250|AxkK#1g-}n zLCd(k52yqgsj8n|Rsljp`nQBYgKtWF&eh~?+95y*u#L!lVI$HGDQg0o&V19dN@c!p zO|3HDtm$hiGwRg78#$!x=VE%(8x5nJzEKK;LVN4bo;tL<4o!I|m=h<%;fL6{7ACCz zGoegvP(@_T!t7)y+CjFoDQR?96Gbj9C++Bgd~wU|bwk_g(AGLMS%(hYP=PyJhYr@E znL2c!4(+c)`|8ki9ok!m_SB)>b!e&%ZLdSy>d@9YG+BoZU0=gjhaM#KRe55T_Y!(w zP4+rxn&=6}GbPDQi(oEGWkerj!@_v7zRj6H-sr)G1Ur8W_7CmMXZID?wrhJ#0F6){ zB1Rv#%J2N_;0wk$5IrYy@4bo~R7+o!{%KB+N%>qmE1MAwT|HMvW$SQt?)7atDJy-R zE|mv#y>tH8jq2#^c0Zo`SO4Fr{o1sl&K0S93+=q&aYmQU7xyot8G0e37uccU(&@c{V7ZufkSRdxbwRYy+>K$cNkaH=2dDlt=qin zb934hBfQ(%gb}jCF`jJa3@STi)Xv8(i7AZg&2@gWQHqAbK7H7{hHv95ftdGdzZQtfToEv9P4??{sMgNmm(dyR9@Beyoox4zw0Dx+f-M2Rz=i)?`B{%1LY z8~VW^1-T0@CuFF(%}%H0U($LI7Pn=KK#_RQK9}{QBzVO_>Sn6uMRl3K8mum%eqcceVxffo@PvsKCG$i-&3Fc%! zVkh4m*1+_<%l7a4+vtZ%9Kk~&LLLk%7ZT4Skh!@w74UafM zp_zYRq%=~N{{-8>y4R3b3*h1~kSM=vn98@IEe}xn5U80!Yx`Wrj&G9x;WHW&`I{SH z5zOF}HG5Q7>cBO+M75c}X_+mf@B$-;P)436cg8R~HKxehuoyZK1B+I@dmw0(?=Yj0l#AT5UkJ-gg}2xaLtNUNgIC&amSz~My#MJ|+BoO_mzV-+ewkKh zHtl-J$zjRk$?Ebl<3~Kn=4EAhB--k?H9ueDBO1-j%= z={j{?WytCbiq&<8p5qErNARunn@-=y!M|(OA=8@D?@t=)$jY)|uN-~J) zo^GVdl-k7b5xTR6a(R`^ zr2w#oui@6{S#$$bT&}2-dF;|h&?y$_rUrn|ZcSr}UvwI$MfT6^`s8)wO4ec}F-Hw8 z8jn>?5@Yn2!f82u&2pqDc|5_R6VG2)Waa}lGcv9n_saJ?m#qs!OI&tTl*+3*@t4wF z0nNI2CW{EikFKdD4G3}qw`O6*e}H=RFg%9J*U1d-F7TRdrDqAPhpeG}dG*oIOritRC(sRuR`ZQloLBD&-a$%6^F zPhNF&en(eiC5n(2a-?gF`Jfj5*au=pRW|H{-6joW{;JR=rPzDfw0?{}jtON7eH7ti zwLVsdk8ypBhmRBWaiV=-!BL~@>;n%bwR7^>x;?fT{N4sxJ_PhV)6s`DCwL`R=nI3H zl*_l2U#P~s9<=efLmpMRqKeutEWl$R*lA{t%{1}h7V`3;lnvz_;BuMA6i8qP(6$y zdznlEs#YpD3@}C4O`QQYV1VdA3o<}-!!jsf8VT^CLZRMDQg|a3)3Pt*Qr}g&&htGR zg0F|1wUP6COA2C*aKAto1(K@LrADmu5mO~ZlL?|mYfV_f+Gwho z?Ok16HOrDhnq-u}b(!fdwx)0Dge#%E{P|s9c_6Zj80=)mbnT)3DCZsSqKn$T;363N z{a{Sb@lEGT7u9fj7~@*)9zsJ9aB-+j*+`-5#!}A z#3)scCoFC?kOB@ef31Yf98j3Yv~StXbzCLPaWjR=TH1Y8500Qv!^IQc3M?;#76FvV0+>Y4OC?`yN<9-yDG!#H~;k`YG#lkHhxfzAFr`t{4I%9 z1UiRW@|#wkl$Q1 zM_goaRphE8F0!O5a`h1x$*UsQ9C4AQRgr6txX4je5$!tc=^hcvmQm&jsN((4JQcn8 ziOFK5Y97tmZrgvNL5A@(%H>rliJ%$uW^-}vaU+zw|J{D2w!M9P}S zz1a1*M!BM@@_^Il6V_NJFAepT30J_0#*cm+yv$`$J@~|}#O}(`r&4(3Qz^Xa7cXph zEb&ufi?|&7#p`L5$50p<0hihBWV0I*)}#-FhVb}CyDJ(0qs+K}Eqol8CO0?(7U#NL z)bw*7<+35@oF1Cxv5y0z*cn@`jhA6MoJGHwT2cP}-=+DB%Bab9M)_!b5pu;X*>on6BjL+i{o5-@;aq`na3>byv_}oZqsnH{(R*CNi5O`~+wEXoKEorj8KZ z-|jCN_J4KK|IyWEyL)n5ts^cLYWxK9<<~vM#tUy8)8>u9afu=-oAxrr8idRKJq zi>=P%YMm_|RElU@1n!yS(&=Q5GU#NEMOkFd6tRYI9F&s+O+O*WJFeG_e&vEmZ#1ge z9`8KGUe zg{eV}e0k7#>PPjISwMC@#8AduPR0_moMIyye0*$a{+)j9JusUd7yd9DN8HVsuukVT z%d7{e*u&pMzpflzM*+!PF&2pH__i zPga!Q{rqDy`e0}{QeMCOaVW3CMm08zoF0w`Sm4va^nUJRGvSD7Yq2hhT=PO%gA&Qn zyUj*3WMmC_nm*2>FKbpY>IVH-|s*f`gu(O0pka^fsVJk_Kd8 z@FgN|8y#bIaqWR66XY=CzpoR`_+PIRS=y(hj)!HVWv!Mu<_Y*KF)npf4lRC8XR1^k zwy3h9O(I*^UjD#m9*EA6hDCvA#qDzRB42c9$=@qzA8a$ivZHz7s0@n^B}8Rd8~8`i z`o$^XkXTy2)jX9S%NVrikcQ#q{jF1@Ydy`Basg!!yc|wpI94SXWt8z6B&Y#G*Iv#E zsMi7*QW*20t$YQE)~^{;krvp!1*NBAici?JQy;+cC@!kj8=b$Bdd|}hRZ9IZm#vQa z5=qi2rqOOq~Sli$WRrzxQjtg#|fH)%5uD>~H>);9qG7zSzvm1i`~ijM-j9QMt(-!ls01xy)5way9sMEQ^=PlrncD5L;}9l z!7(_}{2@FM!>eGhHZX@l!|1+b5|vnqFl_udFQwC4~3nrSKr2!~P$iufV$` zneDBbR*A)}1^qzc%0O|PBC+4qpcpL-h*<<<(G9DerAldxPKShy4CQJ%z}!RnHsy&y zZS?w-bh4G*6Z{U)3u1PoCzMv`I_-@}bYK_t@`w=%;HBo1qDvbXoF1 z7|oc++mrI$f7*a~Onv$2jAn2TFzCmHRhzpDRtBy^WnL9b$*TL~qlLU z*(ShhjNXq^C40jQR{7DS{FXuZuByt_sGO8;D6 zI*`#wOO5!wBTgGyAVMSB?+FiDT+0hWauo}&ih$HyC!PBaqLbX2xw8tatJ+aW+E-{zy0>J=Dy< zIGEj(yR$Ur$>7hTi%dX-T*ebkJlKp)Ea-i79LJPv?EZIsU!}ngJ$^}(T~X> zyR^oOp-Uj7LKTQ^FBf8XjKxyybu=2epu}TiZDh6aiF=?WpLNM=FFL9I@*2n-QlEVh zZv7ZTE$eCFccbE-6-Qm}mZCc5-=mMFRDu`A;rT+`1!Q$tL&T<&nElEhzHw|k$ATr^ z4VxSVxmb?Z>3PR-ehdhq3nzlM^Fz7;oOAI!^SH*}R*bgV0QV~RvYQ91M)UlqYosv> z28Lu4gw$U$4ZAf$oigR;n|$~D`p$ncr+C&Yy{T-T(ci4O4ym2-WD_3et^ro{@_XU= zJsW8zpV2zsIXdm3 zd*zf%vF}=|;!|sVw7G-MMi!9*$ya%{uf?Kogg&(vRZ*AxOi>I6ZClQ(4GO}^tBR$d z4wN$=8Wh=?uh8~EJYk9m+M&2LLHp&_Wm`DXWQ8Yv9#GHPXyyZYyxZdkez(NI*WxnO zG_RI`62S3p-$qBye}NtPv<@0>LfWMyamDNaTiAKXsy6Sk#d4!;?WSY5b$&Ca=(& z4`ryg$1h%SKKpw=ZClAu99QO7gkY3^+er>y$pk_mR6MN(3-6nL^5^K0?8zD$1wjA*E^%^ABX>cg#b=sibI%H zrVu1db1{Nixc#pt()(q)D_8-1JWua8bzRS;f-D%N$)Hy^^sPNN=ii^N@Bp zF5<`0>LpbBNHhpilcMN^k0(W+l;Rhp=)jYgq6^5gIk+=c`tK}i17_!GB#l0q_#Z*U ze55(&xHzk_IcrWK-`q>L-Ich17p=k((* zN^5$*E{TH}Q}RUubMIf#|oZpUh3H%}6W8=oRB*}|PIl?!wfotwGqo}E2nZ(WOL9s053 zGt6`lQ$5{0yZ-Ep?2?aOR203+ZY{<>_b|jOL@HpvpK4^=ljOPj6J4v;n*(hlesnDZ<3qb>kCy-H4t?4Q}^ z<)71@l*-4~YFxkfd_8FLD$l|Mc)yCe1~ zwg+rB&63OJQU?miL%v25F26&tbfPMlw#y0mEg5l$w9-{m>(A+EJp=OI!HLUu6% zF4GpW>ohDxDpxn^avV&tTrH}H;F>Iu_|x9PO?w$#^P{n33O($bDEpe(wMN4C>k5Fx z&wwK1boI`|SB9Gaunu6$lR`C8?qywp`L+`i!7d{4ZhzGl6P)#Z%h=S`LD2k8d`7g5 z%PX`Btybs`h1Mzb-er^zb@6#K28Uyn)wKT>j2fPNq~KgwhI|J&Z!czJ|r| zW?0k4aV8u9{%tS0C!8vVcI~#bg3S@XkOc2>g}`9%wnE#!4VQ{w5wTQfdZ0I@KiXQ+ zdE%3IN1DFg0}hiDscx@-WA>m-#m`D7l|6Lrb=b>8E8 zLp5ZLa({sA!X6?VFmJc0+YJyHB5=?*sM@3wvfEWGM57`Oi|G$C=0C{L$wN*7*E|G_8sMqCfXjk_v!&XWmG*Ts!_tVCI3n+<*hN1 zPJpHS1$Y=jR0PvY%1sxU#JDI3jSruk3^Nl`#)VCxpW!bdVUgNZtW{|S%}ZYtVYR-^ATe9=}QP>#F#Tr@-ab`c?dSr@$U9{yfEBSjBTQuI+hBpIAc8 z5aNUEmF2V9D(+=BWNL`RSmZa#*W*(Sq%S>y*M+XweFi?*{t#6-sL4rMQ7M%oO$b`Q zb?uJj%}x!2U9o%W{yLXpDivzhJ|^hQ_Z>^oAc&MG2E4$w*L0I>sT^SHQ_E2$verW) zur+J8+wfLkOlnNbB+c)`e>7BlMJ$>AdO9GcXER0fm0no(c~t_T&F^u+TCqmvPzQD- zhBO)1SMF~msL9q4tF**R?dn+O8f<_U@hIZ6KfA#3vhFdu5g0&Vy__~KgybV)!a{=h zuUbn@3(ekE@mx+W*`%4*Met=^{CDBO;)ea)H=jP182BE6#lL_YV+Sr{<3Dah@L8-Xq!*-AMf~`XQ%oPzwa^vOt&F?9H4b2-hJsOkwVhB^o`155aY3(p+O zufVBqSj+Q&Tw=I3XC-Fc{l~IdE4o~1}EFs%&cgp$K8nOndMVX1(@jOUf0Wk&Hol#G$Zj${HSH@u~X z)FF)o_{WW81;wlX}~HJ8kt^CVkIJ{*LQHB8DwxHZuaN?11M~)(@tJjP+*E{5{CQA z{n5^y-K?%qAu_TN0~q`i`r|aZoL_^^7_cwfBDpR>7hYF?sEhl29Q(>! zWOuO6CEDdij$$zX`M~X2XApuQ3s(kK62JSaeB?<}KM3~nCFShAfB zmJKXOu#rE&YB2u;xx=RAL0==}+qio}yqXNWOE49HU`oKGUO|#w0N==OQZ`?;=Eai3 zvuzKmO^cTcbdS5WcXQC-Tg6bQcXoY^Z-Nn5sPsr?Of#%$jcUazZtk^#RjP~f`Ffq5@nlL~Ehv*^owbJJn~Vk0)SM>3?uS|Vk+v7=;Bq0NsB_y`VLaFK$GEGT4j zs_DhxqoC|W8^$cLQ(9<|o-@{sd(^;@2KAxK1kJxoo%v@I%v@D@vFw=h%QbTvvlE`f zjBWKi%*6chEZV32mp}RGOMcq<@%mR^%tsXdIk!FsjalttIWEKew(C|Dh+(+12#iAn zQ;eA`Wu@!cqi348O%KOMovnd$LY(5j z0HvsX@$E2ivbPF;q_6SAfa(WY5I^EsRck~%nRfK3z!-d64c9zIXKaosbE4fqSUwa!_UPl` z@2wbT>n_@h<+=kAW|`;~8IvCnL!L(rdW5Wc=4MzXz9H9F(eM5@R24q*4FTV?w#rIH z3@C0;K$_p%Ks8Mf>iKE-<5c<-4D+9ttjeA{|5@Yy^Gt{zt43sSV8l$P{&=Z*cyj6* zK!bMMSM7mgS7q1e+V@1Nko(RS@!|DWmjp#pRHaPNoPNNcm`b`q^h*d{ij=aOn(3EL z71@ACV%j1mSPjT`uTy&i4B$ zIie6ZG4Ynqh+SE{$t}5PSPaK*meqG}C8&^86viXEJ_Llf% zO+P~2$tT5J0H>W(r#yzx;2^C=UZvulT&3E@Q+2BG4~hdul|e7Z_lj2;0Nyi*-k@(> zv$fc7p3cOCabSlyUCe*pjOtAyQu?QtT#+ASBxKK>(J!suuV2nxVOckGFE2-HFj$rR zG?=RV#C&Hq{q#=t^vW@Ex5-JQlL-^HW1x`NXWAV*(B#C7CIeAO|FA4nZJ+bPE zz*$s&V=Y}ysO#{ge|jGbkF@ax(!Tf>Pb(Hk``EYX73DZza#(W@e#_HnXqx6m zK+qXLtMj^}Hd_HL*&K)NVCZ1J1qUtKe%ReIE~aioue9ZrD=%V}Jk0ms{B#OVWYMlGiuIU6`9~u@5I3 zWSbdDMp3f}*>coE#$0sOSf@du8CGYEGy}tSz*5PSHqPB9Tl}yTG!U^6Wr#t_DX2zi z;I2J6g+8a5jhX^yly=8)NAlIj7^l}u`5;d!HfzdBUB|g)4EH^oZ8VW0i))lXg_zTE z{*@650n)Pa5soP&7oQrjzfeF3`PYsuniq9i2wVm!xEf2qOQqu`Tod-v>9&S2O5LPp z>_L=$&cdLUhR1#=Gj7lNSdrp6DRaVtqt7w!WKoDe4CX@stERYuO(6q2M*peOHMXyG->ys5+zN5SJ)y~%wtvhS{%n$TG zezv$y+&sq0RftWCMdxndk+R3FtiO&WeRb5qP+31D{blkxSROHd2f19qM0qC})jg znx_mG=xe;^L`%n~(;(8CC%l)iK}C2EVPF~XPFiL2JL+I+LC{hz4vZKns{?AJ_Yl@J zt9w~Cyv4n&@dHlywf0D@VAx}M4Nb&8HEd`^4I9FOCavRQ5L^t_xNtmSA~-^f40>M= z$B6oE0~bgMBpv{XRk!yOHbNkNAK`=G&D%ziflb|iY%l;~6et z!-BK6xU=9vf(Q}qY9o2`uP@>Jo`j7`08XfQlU1fTfIZVI5gI~$nqD&8lP)AsU%~N2 z9aRt5U=>I>&c8eYXOmPCg}5Q34Zabu&FmeCT^DQO*%t%0iy(J!AX`B2CV*)cG###y z802VN!WpCAEt1ngSnIVItF`DwiIhR%F$A;i{<&P%(?U;4F4HQDg86b;`ZxBViw~2} ziOFa5Wa~gVE3z@%3sIOIgeKpJ1U*-zyzr%C=eAIid)Y9(4hcPF2}JdPvI#9*~dB04{w3M8xDw`WOVo66=L6+51{D-eF6> z{c+bVJYc^_Z})}Z?symEK%qTVU~d(eCcrYn?QC?>M#K8WYKY+|FaYV^cou!}Yx76f z^j5T}vt8{SOlyN+ddJcE`<8Sf-$|gJDBsSl^KoC6$+tX4mS5@HLwZshFh@t(P4Z`P z<+jP}nM7}me1%e`XY}FjY&*Xm46b1SWg);XZnE0UqKnN-3a;Q~MWwBFZE`cCHI1}| zjpko&=hdEAd&DtaoHUOkj4M)2(axC8jqLp~@6$OzQltYwS3%pEa!R@wRec9Wt(Jr(jOR;Mr&&b7I&`Ir}2av~6zqEC#2F zp{Y>5J#l-+X>X`Le^2V)SuZrh2^1r`Xj3DnW&DoL`8dyj9c{7-pXJnSpn}UAOm_k`*s{I-={O|S{tdf zL@HcBin@o@4EjUJ=I3DNX_nJc0Tss|#RZo>?FljL9>;-pX#|*pwK7rn<#19Am^L)- zA(WwlP}|~0Jw#mC_C{->;;;ek^xu?@*OWo7nSW?$Hxiwc7<{f${~M=9+awyL264}n zk#GZ_CL|JwXqGdMh-{p}BC$)AzNTfw6r{baAqWtYjqK0-0Z79}Dr|6LD?6wRI%cF8 z#Hm$e(j>HdD-hXZr_`dWLC~nICl(@ZypAh8MBK@BoLuRsP92NYMY$bT9c;*gv5oGP zyim{6vLyO*jltq8sKn!}r&;!`#O}p3pqn;?0=fmzVH*OnvH1p}CZfzVnea}yP^lM> z>qFPteH#;JvxCb1R{nZ85gmu@_`5C6Ur!xrphf~thp$3Cs3L1s%i1-0Kg!wN#`1VD$=YVJNZwu%Fq49%}Yh_Xfb#&-suW2gyz|ZBL_= z1h~ZutT~_uZf$MwC%~=hndv8_6ZtvvR5yyk<*I)S7KGWL1?mN0rXP<1^<%&+o@Y{B zX4`Ez#z}$`+)7Ylo!}(F=ojf65`~T4{?6G=8M{`){Fy9lQJs|BhZ1gV7X^i|FC0iY zHQHaNtW|hf05lgFILY)%K2+x&PcT;0H9i<;zvQ)xF3m$LuHRaP8(raVbu)L%L+N1| z^4HaGkmedRe}gpdsZ5ujpzA;SA|@^3Xm3(-#01KCG8yaI8a*VWxo1CwUbi&T=2cL# zn2;g0Ds`y}W$Q#$bIM&pxoSOP4_P2X_b!9W-ftI}1fS8cxucRDQK4;7#Q8K6Sxnma z)rImp7u#nu;Mwk;R__UUe!&aMEcXS0!Tpvnxz` zA7CBRudVOnyPOV*`;jD6Iv9Ay?DJrJk^MuEmw2i#cJRl#$JCsqsDiW4lXpQFpy_z& zaxGc_(%{o;Bng62f+;EYu%h!WIP_JQD1BI$dL`^){=js5eVS&QufI=w_^$i3w`qOS z-k!s;5L`tnw6PLzb{HaT2dxeUx{}x0@~uY^5I$KHqGF=|LO~dG;Vjb{PQrT$?+xKS zg!d3Gx3Xr$l2pz_63H;=e47NuzQ{cj4#Ba}is|hu`Aa1-mq|$^C?lG*M1r!DQA_?u zsM&TmlOb+V{u)!4$s(9dR~{6kiyTJARD};Tb<3uQ_Yh!xLQ)~g0lCU6HvMvACkf$A>zS#<+gb!92 zB|H-sD;=l&W%TpcbVum`nmWEyG`lDn<_6BV7&UL6QTEPA!r8|lLIqA_PYzHqLn^4G z=n*TZFcuqBpcj$+6oEpcHEb+OSNU_UDZ?^$j`kVa(pyJ6V=SUNnybQu&Di1>z&KWl zxfqv*8!#SBq{a}z6bu-^9JfqsxcxJi()L>zJ zVL%Ljh3A19&vuKT@Em2(NJaMh*H3k{@yhLPMf>7_J@I<`-&pBXyflvRUh7E&k6FSk zNtb9PbRiC1&R5?RBW(26af~0_V%csaO)-^QMIm)DwevsECoC=EV9oLvSwwIjAf(9&i_cUj8)LC zVnnOy>?6CXWzc@SPjL$DM4FuxiHf6Ccci+93KTl4Y`KM~JGIXhWE`SyxI@~B?7aXR zuST(o#)fEYxiz*zjSbCdEdNU244TQ0!!dwH{~pdSP@-${Wo1><%p_q0LIlhL=qXZ7 z%`z}!_OlFQ7oDTQ*g$dgTw1=c2iT=OxX$aNWjq$2B3OQ6Ko@n#9dQYMoScoTcX&;B zNUn%OB42qEo(7;&#g}Y^4uHAefzkSqm5npF#EI|_W}wAnvtma2UFy1MLm6WvE|G!A zm$(=^cg#ZKrQJI%e{3=2LiZ*(-9hwS5ffE^{Ew%et{Mk$Fr8;&J~e{0Di5Cf9^4-I1N$<<(*3+2@^0YKqTwPfIhyL@{Fe z0R`-l=*lrYij->gjdn*cYPe=XPw)Unl1t-2X|l2-w@M;d7RGydEw1IlDy4S$?Sf}? z7xfItv-q*=P;O=Ivca+Z_U`h9@;kiLy3_5OX}){0NXNE8{L)%pG70Jxwm9Qtu0P_s z?E0fe&X`IZG)|RhET|Lj!)ny8Kkntb)*q+!A#u*&x+`-^BaJ>R*FjT%L8Sp?YG${E zk2%@XqKe)dFI}W3RHTzj2V|9ye*&DC>@gM4g02Eu&{aU?+uxTD0#gy?D?F%tT#S`r z1H(1eUWWldA^bg1m zgc94qjZt}vpfeL352`dlb_md(l@+%KFE!%jy31=nDxZ#43yqtkpeP`j03iq*lS0jQ z7D9qUGGklPS>Y|yoR~QIfI*zy+dZ%FOTop-@liT@ese-J{D=xy6w7xNM;9Zzb{5Nv zk)5}9N3~*LI7h>Fo0)h==W-8|VC;0+VQgUrs5oibs8=m480e|a3()!FQH7;KSx{T| zVb^_zATz``NCRr1{bKp6yD27qI^O`aqqUf1gL^XGY3rBvn@7Q#cz{1APmME-mcX)us1d<1RWx)m!6TJ9liR8LJ))qgqSnb|i;r z2KQt<#!bPdYC&&Mp}N#{6i1&!EjEYhdE^S1o@1>zlE*|nm24=?uAp=&CqhpejZ`xB zCHhq|v@2;?s9}p>e3AYqEbsRf`v07Oza6{GBR@(f3LM-y*uV&r^>k+B5CJJ>ODt3? zPdQmzJ>{u^1TI>rOiN5<%B3>3=BP}a5$1K}#!_qJD77&#r;S=I6Gg3KfFLeWR9GvBq6!-omIjOpkN;IUau2Fp z(BPFhXz<--B2KWYnT;a81*jXvvivpGnA+ePT@)BPuo2jLoEjzi59>Igq;CAq( zh#=D{_BYIWp8Z3XEMX^2R)vv{RElXgIv=r0q5FtUsYv{3T8isw+Llh1X+tGZQ;TzDe9NzyZNrAx%`ymCMv9QQd=$X|6@z@rE{ct zyOQQrbWfT`#*`#Ikmkl?kD6cY!#ywNvAu=r>#}RiaW6fc# zAj`c)ZCxHN%LnGma=EThx-D5gKmkKwvD7X-A5UDC2ZbIkUdi%-I!EYeOhGYUrt^{X zbKnX48Kn3?07ME4Kn5v}qPRPOy}+7Hbe>G>ZX-c9&<90BgX?OboGb?TMj6+Xhkjqf zIu?5DnVY&x_3egAHBcPo#BS9UwK|1-2s)N|1bDw0DI-^GxSA2BFC;Vpj8+x%21fE2 z!l9qWT{tv)!U5Z0Kl|5gkP}4^4vcbts%Vz~5eQsCPniD+52bMSVh|y~9D_q^rOVDA z92$8>h-v1Z!(>dwp%eIW3SZ8QFAs|^r*rsnXK5erAF6r3Zee$3zsN#0?_W&K4d?xa zFqp$q+GxSLN=4A0};XwBFsJwDiQP#VuEsX zvWFL4?e&_=p5EE;{uB^G^8V%J4Lc!`C#D7Is>?H|gmvf)-k$>CshHhR}HgxA3*v86I= zOJaCIAO(}7Oh*XiF}74xVqthEF=O?^J1ae^g7=UxEqJN9Hx44@@NI0|wp7Z4_*B1F z=WM~IuO=|1ql>dSFp2&voj?{d%?8T`NS=)mI3b;FgjGvMMiwSb+di=Jp4_MPcPayF z6xlXHy(ty85m>4@7??GWS$G>^H>x9(&Xmh3!X~8=GTRC7V;?Y?@PDPO^o-itaM1dM zjIt_j@}RaJ&ZI##OP6gM;WkEH+0@Q-Upux;4ejiS+2%;J9OW;T_ue*w^ucNyL8f}q z9M)ssMo^O51A~YZRM2Dv6>A*@1=Yy`D$zLlL+9%|UA&D)}i(ao~s*)t>Ta}-VA zM(_b(fcv%)ju_)Iq1z-=FVwfNG!Vwaf z5Wx}_A%aDV5cOGjW(o4tU}1cjbbZ?hts2i^8-a8^FI17ewh?rTH{)RDAH$w8hnhjS z67sm)2#W$Q>DxwFbR^pdY2GMgheuwglmp5$>cvmqS40V<8ci1pMDxPMq;}Nt^QpE zk@AH-z%K2vjPv?PS*z2h2A0;7n#~DPS4`sn=Iw0&?5e7}@AGl*%$+%Rk{$BFkO}16 zlK>MEblURR6ls}b351U#z7KC7thNQ=u{OchAoBXWuTP0e6%aKlT2PcB0S$^8Dgp|X zRB1~qt@w@KX{8k{*7%4mD(d_Duf5N?XJ+n%KtIIH-DjVD_FjAKwbxpE?X}mI8fMh& zIU1}3^ZpjwV1RtbOjkpq=Zm?(wKT`ae(VE1Ln75K0{bRm7lF@=^07+LR<(;T%4}p8 z;e`|MWcg24y9i>RVHd$%X1zXO>-`zqMNlo-VJ6^~>AVBAc-eQiY|Pn>-mOx3%X%q5 zMHmD)+CYvjkP%JsYk01<TByR>NmLh%V2;%GJJ#?@sjZ(aU!I-qN}SQmO8H--un3`D06 z;P^2{speF}t+7-9i_xm~MFjq};XtMVI*sM|gQ&7)tWBk4y77fo z69UH8b%$zHGmFpJwdmjiW_^vjd#GcsKatx%Nd^Q+Zk%oNzMP&Aanp|^pzKFx+Zv77 zvbB_8!QhF}qxJE4Nr9WL7F;Qj0r)|)EEnU%OMmERTc`d7){qjO$o_pTKK4{v{L{qy zd23TnE?QWH;7}~B)E(geL*Gxo4BJkjm_oxM2OJk+X5M{~zvktb6B^a1&*rOnHrg4{ z+W*lPX9W|>!O)gBa$eSht)(oxgO;U5ger9$dW8g00s3t;K0nu2#JA`86yKgDp*gZ5BlG{H|hIV#uS1n(aw{h`vYv86zDgW0thtPoZOWAn#r)+{j^E$J>U&j8Z^1 zOh_Daa`%l?VQZjEBaW6p*E&+R1i!%CZ+mLEZR26UOKC#9?e90K+pMQWlkf6ZQF_qY zLdz8$Zo{{K&N_wX&8eDe8N+*+E9=Qx#5GJ^O@+vhN=95W?2!OwEKIj zGPv@_&|w?YF_^#?)*8co&|KFSGg4+uTbx<hiK6E9FzUG;3Mgoa5cyG3Cqyo zO&s%)Q*HV9jh*tLYlhuN69y~GJ`oN#fDCNL)o^K){7B4*rxnouX2eD{5}0!l3Ps!f zs4au5dn-l*mG7z$8M-34s>(Ps9{8awu- zIGih7c0{;rg8{;D?@jR69`b1Z#hR@r40>WSB#)L1lV)fgF^Oc^(2&W(ExN$P*qqa0 zXp#g*Cv-uCZUS?mV^J;L;s+gP7)Q!+=rD0#Uk?Yr?Por|vRYbZci6cfwTQqa8U)emg4vWQqQMXmR%YP)*t4NEGVh@sTK0 zXTU5cDR28zr-%E9zRiUD4inDrwcu{>VZAXIj^qR}isK_JNP4Rkrv;vY#I3?y!ATIf zXdREfaX7m}ssg+UI`yQDjtA>=pFIL#Md%7cbxac7<#na~e>lCfh^y_DeWm;!DCo>4kECRz5RN{=68Y4^3nJ4M@xw@IcX#uy)*7s^C_cxB)=Z&w8P$h~UAN>9IR zqzs_n|8Gv;LDVXJXV-S(mn5-~Ugdw-F!Qa)jn-9!&`64t&L2V}nb7f7TkD(y@Uf$eB_!E@ zdhcMTea&-r?|#=a%>TH)!S#B=Kwx+OnSG;MwDw=xxAFgizFD_0`utb-O}DVs)1I6->Qvtx`fH(t4|+GOQ`l7ElV; z+9S*2eXDgg^$_=C-(_;X;5@rMwI5U=VtDV}+ywB83iM)3HcDSujOhj; zTsHEt2@N+YJ1qRCqh?;A%$Sx-c110PEO~C;k!y~2?6$`qEJFVVwG zW_m|!fNYQmcyTrthAnDEaT4J{!9}R&lon@`=HT!9koeYQOA01nJ)gMuh4ZLCSLr3T zWSCpni%`^kedV@id|<1ZE>HKkyo(4ej=ih5CO=l`R`ImwQ({g2w7X`45dv=ncl$_h zO%|xiJ6Pmf@C=DS!>jS7kn%|EDyYMrI1jiyUz#t&$Ek|`y6?n%Ic|+Z-WmbU{4w!! ze2SIZSw6+eZL^U=x&2j#+Sc@D`o1HiDPCS4(k$?TQD#j5bpMGj1axqJ((u`%*Yl)34^?AKP7~>`uwmksJcbF2Cskos^G_b} znUr=$wK%fI+<783m1&ucVQqNvATHZS=0`Q2j>(ViKM4U<9h~6UR6j(Dm6_OzJKIzc zo7K37!Eg$pGU+-Fxw78F%UZhnoChI|xhYl6G8U3w0H95V@U{({y)WaLfj$7Hf zhgO#EtL-E6iZDXi+{)J7wXz4>*{Wxa&Q|?DU}qah)1B>i7VCEP(Wnd7?=05uss>>1 zJu}4yA#u_mb@{qo9u+xdG;Bh_1|j|!%O9@_Oj&`@?+y9do%xYgAg>B+v;u=Wi;biY zl8tONW}9~wYcy&$km_zdszL`35jRfhW%wRE`_k1MvF0{Jt`P51%Ee<}#Hy~z4!ZJXj_&Z$h6m-m>8$W&fqo+9HV zNJlbWq>L0~af9jEm=$1{{OLuynN)I6{snAcEiz^Y2C;{rAc45Gc|R_oyVcPz<@fUl z`LRa%)P(d?_eWs#id!x5x5(|a8)miBK7tN!FOh0LUX7c@NbT=2B3bdB`LPY@?qe2F4kLD|S3AzY!v&Uhf9x6p|DgT!9Pm0?FB6crc zE?!z^Pv@rTVzIv%m4_?iUJg&XlZbVh+qE24ze6a=j*S*i5W89luCZ@z1C7#FGihX~ zoj%NBx{1BS*2&vUXDLC3Ol|BE72uHlL-f|@lx-IYB3|XAQb%RP;SHaivMuYa%EvTB zJ#YKQ=gVy1GqPIm7!<&f_#e3Y%2BbNb9I7u7|+YS^;H0kjSj+PECJhf*^r1LK1y+g z%ICe>cOtKd0SSTEh3n5bf9~bBp9Tyw6VV^90gGQ>jz6$PU;qzx^%Gc??R#dZXd@@< zYIf#4R$3*zLC4zZg7<6C{wT>E?EN9`sX<4ss*aHRDu>mkz7)+`o9IN(-5SwO(%R#NBPu%kTqJSC-Zb; z^%R}5rC9llWF`?Gf+8Yu97(nv?2Jl1kEHReI!{7ClZ3+kl~+mw{K0J4l<8g!qYZU!BrPh++Xiq>iHQ&UX} zdAnx&5sRC^f?)|oJ6}4{TPj;BuxksHpDyb^+`Z|&qBt$hm)bO$U#WpO)~wldL6|!= zXOJTinVykcCujXJc21v>aNa=!G(?j7<55!bE=gvv9P9|T&p+5-GF`&<0!bb^F&3rT zy>I!g&qGOil}||XOEyNT=e=4OSp*I!!bLA^2xE{wMUgi9d%d6s<^zNK$JK>LaE^Fc zOg3z#Hx4S;zwaF(fXvCjw=EE~$MH*|J^r2IFtGj1_;>W>i}J%%Oi`Q}D_B3Jxn-6xE9Fneh z4XmK5J`-jO`453mR=Y(?o49Se&n?$x0rNy{Xd}h9sFLoX)tUP}P{n4_kY84&dF~!N zg3)E8hv=bD0B#CK2`5ootGpN1@^43w>}lw8^X%Y^Fq97BR?(+X&R=RWB^N`Ti=REQ zwbwO9(OZL?JUM@$xCz^eLn$g|L6tLzgSJO)bmuPdi8b?bduyz8#@aIx_Y>2`@K}t) zXWIGlt?-eu1!`Khv_Qnjhr_%f*5pUQka2O)#SVG*&YktNau>Lth)^HIfVqq#F?tZE zJJM@;}_IBg-x-Fx%6dBu&dja(Yh7F>c7<2bFTn+bL{ANgHau zC*}6<9>&R0;`n^`u#Ckt+rb4)R(p2%ptGsPj65#PAD&~G5%ytmiBXp6%QKSW=m{^3 zHPbH$vgK}HEk;dvWQ~%;2}2WVZJ9n>l};v;@_5p$>vd8P;s5h0HCIH`86#31F{vb& zRHTeEXZ>;TG59$$l_lQDWOAu77M~6i}Km_Gzk)W->>I1qPnJ{1!wv?s^~}hGmcBTHVF#1Q@;_WC4TZ^$<7-rV+xi)h9d)2i_|0~ z{i}^+EZxcb#bnIP%=8vBr?UJIR$jT+!6UzWYCcT(A|ej$rJkX$G6s)r#!zaBarrVO zXE@}DU~^7>`1tu6YRgH=&P6>59r2ap@_tlt9p}Zc#7j->e*XCqcS)HyzLG#Ow$cj_ z#>@+Cox`}849psv0~0KU;!6PT_$We!ickT=LzjonwjwFhOZ0Bc{Axyzjl>8fMbP4^ zWKy}-xNS;ZS~5muzHK54A{(Kn8JHd$**cBiu}!^2n*O$FyeK=C4JqyVVvfEx1tR9H z41Tvf5H3@5+^739;C8n|IoYq(n=C1_oQ@m4;FGQt^rCe-Dd@%ADvZ6zAufe+g8=a{ z2t^K7AIY0f@9Ja|_O6yfA(Y9F?s2>uv3KtFJUgKV!1fLU!D3?y1dB0BsQ>_@xy4h-!WLKGE&wXOIc+aWcgpY*Q^iK<*9Zw@4Iz4 zdtJiCC@qD;lyP4C&t{nTKzY@#xZCNmyFaA~`21#bvVdP;DJcK))rsE5_{hMe((+$+ z$5xto_A2h-)3sU zjbnG&3P}#~P$T<3Am;i3+2Qt*tuo2z9yz+euftps^y1YmNyhB!gjFUG6iA*5u5Q|? zL^aS)p8{p-@l@HTMWHsAa-0Dn?tqr5- z1(u1i<=kSVrqdUgAv6(p5Fku)!XOZlfBe{!&elCoRpOq!A5i&){(75!#tTftmnI5J z*8K+n(7Bd1{>Zh(ux#HWd1qIFZn879ON2zb-b!IlcTsM1)(b?MZbA`EHJo)qb-BOb z8o~hCVbe3xdg}LFsugEN_Z3^gMv-%Y-Ss@nNNXBzrNT?tX@a+ zzPoCn@4jr`h1X~VPfnc(Ix!O0yj!Q3{$AEh(p^(A=62xmk1x=HuNWZVb(9@a^)I%L zD-QkYN;8YxeXt&{nZ@NJzQ!nfv432wX5krqlF zIzu(OpY z?N~*@OL00%rUOMwguu36xww4bvc-6BhLx_tl*hH(Um*P365KXdX4wU^Ac>H=iK@{W zmzwDh?(eFZHCDf7%Tb?!nwo7U?MayG3}MQ`{Bc&x?o?(%Vv2D!b@v^3>TdO*>`zVW ztNJC62raFU1|ag4Ror0r%JsYg!M2$*iRIUTK`{cIZ$U|OR}TXY(Q#8h02epA zT{Yz$X!}k1KJW3^RG+P>?P`jNANt*Is!;nL8RrVQ=&3U+Y9uh~p@TCBp>>c2g?ns)4&t8X-qq#L4&OoSTt;Ef_4F)PbuBIe(-U-pJh*^LyHgHm3pwtu z6T0Df%}15?KBpv3Iz0y=Q%YfEi>OpZF}DYwYP z8+!{5zo!y4&bPrf2+E681ka@B!s`LMTC^LMF~>*a*@^XF4ge^Cup@|21h}Up>YJMbmWNK>vozA@ocZr|cPYm(H z2C-z)v5b}XbM6b^hs@7;yzaNh_=Cz7#^=6xV4)YBUK#uaKDz$J{1Zrftp9T%;*bui z%>2^3t@Ql-8O#4gk43*0207x5TyuGA!l@iv5`F9#auEZDI+Jd58@|pOp6#lxdEnWN z38R{xuCXBrV=(3CdL>OXYW>0EM3M33<~8h3L>OpA2SpfHg}Mh3#uK%HBl|(MaoGXd zI5=G4*(x6A>GkOc!j=5x8LlR(bbBnTkv{^!k9O&78Fb&n!`YcNMWF-;8Xa(wqqrSt*}d1Ve$*G<2ClDVl={?x7cd@+ z6$w9RfM?Xz8T;n-8jImx*NwVMby$PC%U^EKRkV9AZbR^7Vf7Z5*R2ZM|LXe@Bfn;Jpn;Sbk5pU@*#`(+J~)uA$ySSI zhhRRuiOUIMZ^!qhi7#Vq)f|;+V*khd1SmJ4k?(VrW#Sk*Tw>ZU?6?O_Gnwg7>>gsJ zsbL)lweDNw*aZ<@oS0Ug$BLo~-H8O<vpIPcq`RJBG8PJ=LLr;TA@x z<-P4u%TaLm5t(sJ>ssT>O@*a5jr{RCiYM-&VKJpCAvjFv4-=?IRWU&B@s1jL2y4z- zD$t;|w7o1$>7h&i+!=5mqm@p!-g2vcADCPZj}og#>{C_cv88nJ2LJ?Eu4q~Nw+~xr z08uxU8^hRIj=va;Jd_$nCX*Ag%Y(S|eVkP}+j(0(dxp9t+N>vGc>InH)|aqjllv6J z9CmSXo2PmkOd+K3=#zpg-4--`bg2UGc{IY???~bisZY~v@XYSwpd4A6!S z1iW3rtr=1xGGEi*F36KRc4?B&^hOvTHiB`sq7c5EisGsJ5vWkn9;X;2m`~u(mSP_e z*FWWnKl7Efq}!t6iw&?w1%8wdTmj!HY^HdJ8bus*j5dsL4Oy15W-DSgrrLJj#hW25 zXY4Yw>Ru}MaIDB5S++Z2R}7XWtS27p_JeQ|))R()4%X3ZPV@IULZm=tI2OYIxjO62 zu8d~!T-0Jn-rhiM3~C8&5bqMkW#t0HupN(K!1WsMcD77G)KecG3$x<%? zo>-SVK6E_lLCxweC}A?ot_=&dAABjKn9*7uo9skS12@^PXf*v-l29*0J5d!;&oB+s zB6AxgAgP;2{+K@(hhnu8tSEWzADnq%D0%A&e6Q*k@Ap~@t_KTgmbZN*XqJ;`mLDIk zG|R598ASZO%S3K{0R?}iA*SS~WK5kEkY-10nwbIBOZkMU7_E)!TLkTX0Qih}KhC7A zoLR3aCH2~`)YvnVHUd3qYRQ?59#*C#npUfA5cz7`7Z34utvnE25xdtY-X+hre?1g- zy>NbTZ|r44XwyQ4wJ8eYr4oNW{6r-_up(?fj^l#KOpDz+j&Y652k??0^BadM^R+<* zVfOg*0#L}zF(f}sL_lO-5t^Xy|cq=Cx zQiw7+-grSL5#DskdgzYO$6T}`#qA-j=hRUTZn6+|nqRtqtUk(KRIjp!8FHGHxJB)1 z@(~`lL0Wwd(qoW_xT|4j$aToU7K2iMMJ&T?lrKTx!N^e>6*(2vFt~O=&!V-^5E@al zAs**9#6;FXI^RND^+!u!U4d{s+up!^&=yaE>ZRg_>Tv{ZR?p-7>T#)8KdKH$8Kwai zP`JYj{1A%ex9j?!Jox?k8{qreLoa@{!Nlj_qyo$z1DMaqnJ_nmg%it_C*67Uyp6cC zdK<)~PeF@QK85(nNqG%e*PD?tO0^Vkg}5Ook3Zl|;n>Arm;84_pFGxv{K6pYA$sMi z8Xlb8o5LgD_jzOnKMPG-$|i@ULgS`fAqSTbIwdTXukWMdsf^V|dQhRmQicvo89Hzk z3zO7Rh7L;wh}uGj4YXW>1F?Gdy|zcj|MIl-RFDCOCO%nZGV&=P&@u&>fk3p6;Ik!> z-GL~vE;nGaB3#j5V$0kR`|18<#z7AG9y@v6rXZ>oNtOx_kyk+^co6sokvCTSk9tC- zeMsggFxsX!7v=#9Ok3K+z3XArsay-f(zMcQmbqQMpw%p+ZLJEV7{H!6*yrv@s;9~1 zEJSM1c$T>vdv)@T6?O9VN)K9FXWdj6L=nlp6%#GYTvl4*)~O6{GR)ty$8&3`V=U;T z*tN@R62#N41ZR%RKDtOIcCm2|VL)Nh>k2H0EsS}ne#sfUyX_|G*i3>tPx9F(@O1Uf zWN-A@$NB6HJl*mIq8Uv3?6p2y!CkJoc~pdBm7dM>J`N)2VscWP6uZV!)PIiua0k;C zyi5K|$7B?|h{50mpR#^NZU&2El$}1^Hf%nM@-Ws}QIB)bnQ*>90Q+^Z|!*~8Y zI{WdJMefz8V@{+}axg7LZInKpVvzm+L#g^yI)x54zR+IaA*n$CLiY>S`VX$23|>4iFR#l{(F4p0%RZ8F)g z1uytJPKxxueSbKOAwu0HQsXc`%eEAHVseeR-KqmV$LUGcpilE5K91*nOxS)x!iUny z+|tRM(q3sr-|-*WDzpi#nxE9%HYhLvFeQLVD)W}A5rL%JLJ82PiPOyGTYlZd<`l6dL+!8956j`|2-$)2>lRQs~9 zEcq$s1!u7zdEIhU_ zuoS$6-c^>MWZF)8w58rhXIuo-7o4o)+9zH2vgq;?9{S}!>UH}`1{Sl;rM)4haO966 z$>9^bN^}DkAB^ne&*%%8t2*Co=9U`@t{B{zkIXdQz#-wZ^WKbTUbUiVKk-6X1`^ot z#eCG|u#0I9TRCAc((7uuj0Ic@IezsDXqlCAs@F0d3y;ovt}0_4%`amPR_UGpJ*|!xJ{|gq-S|&g4ns$zL5kplx`ez8Ka4SD$Kb&rAhwDT$C~s*dS+B z3?7UxV(g}w5OOhr9I+Sm*O}QL`RJ(qg|=qY?V3@(9rjfZ(1`R;$Y0Y?JOy($oAKPC zt;XB#1M5ZeMv-&dMJ2O!(H`jz$+XqrCvw$njw-+gLqgy9N8dEcoLaRNzqPlDPGbqP z(+t4x#Us-{EaIj8LUI}!l=CEP2e2$72QL1>^##CbWo|#L)bu1aDZnUiKY`aY5cc~K z-~y5CFzR=~A4o{X7|S3mrHTFnNHJ}fl@GttpM>MH^0AO+tz7O8=}vY=f8=Qbc@eB1 z8gpApbDv=Zc+?geB>wce1F2uZQ~Fv2^$LRRTqbOI0O#pmHS zyy$VTi_h}v9g1!J5$|XKQHxrsXkPrH!bwJ%l~X4HW4Dud!B&q2q=FSwPRiXm_L+Qq z1)@lqcX0~9B4_BJu1qj#*0G^%=U&BP*^{&(O5D5BEPJ>WccmS`ezdITQ*;AH7lwz5 z*=q+hKt8aT3K>v=A;ZSicaKlqJJ&O(p;oZN0c>p*yfsDjqYGu^|8qYyWpP=!z|+vn z>X~>5stUG`n+vBx5O3OH5pBRe&7d#NiqdbF^8@UTfa1zk+7`R{=*vk$eMWKUNihBCzHiAIZ!QVW7OJ2@8_qnWu3M zw1pv%$apb2Xa}~p;)5aR^cR^ef}NzNqk$}9e11a*k;<6sjZqRHJ5CNVbj=uo}^fbU0C8Yshs5Szb*#&EM-edOWEk? zE6qfk7E}7v3=l21*OQ`nu^ENUjAKed_#*LgBg}cphFG#e5;6*>my9nz+p~zdeefhd zs1IxxOCSjrpsT9IFT$$LKF~)LeEDDy6)lJ;47pDRQD|ob2buC+Hd!zLPwYr)v05Di z$u6qLHQ1l~Y;!(NG_JG2^)oLt>3PTep@DjRlR*@|U@*$9^4Zk~vY{0t8-6RYfno#M zSjx!8QX-oyLkL)WWXLs)f>{ctMpp}r59!O)S%VQ~uhm}F z2?IF+UjNolg64o{*aH%e=5L2t$#AB5|g;N$G{BL#2pXmR$^Z=ew1Filp<5O0FFC}?>84H4u4amgR7(MvLPZXyEn2Bnb4pFk zDm5AE+Th+~XYs8rb=%l8(47UdHU>lbj3U`o&tTIWP#6`H$@JllOkrEjWY`mPOoVOk zSj_Aa@_C`fY2McA5tfPKFV=-j(DXYUW@Y8N44^_6w@@6(=l2w^V^Sm9H^Gol9#x-q z$Mv-|L>U5g>Xe419a1c`h+c^az&mcRIP_~9@O75vvDP{OL+4EJ(Ut`r(b^`_LW$Y{ zsbp=#I+mC|L9W@_CQ!;ORUkXU#8@dm(s!-Tso#bM2Ea8EH>}T|=jl7xVUluRSX|0* z^vid9(|=0u-%m1iCB#v>?(qWEY%iB1nZde&$xlHX5mrZCoE*n}W}-1MK;vBz{GFY2T+L9$af+^Z}Y+KSGuF z(7d2lA~CsC6@>9j1tiyv1_FT4`_euU4~YY-#N@xhIwXBg==H2J@n)eDz*70ZO@|u2 zK!!EF80*1r83rck_|<_Ast`9~JTN|07PCRvs_8OJrar370_yi4sJ3RXqymE_<(24{ zFsJCXL6uZw&yzuw8_x8Sqb|0}K0sY&2ig}RA2IOd{*aa(=;4sA+?hGX3P)c;<90}+ za*oQ5QV#wQv)rZFV3P9`^#s4ON-QjM(4Yd|c=L#)UgIEz-=TD$80slIIDoL_^1ugc zD4d`$83XORopE-5j0MpS)3?nMw>KPKZ7Dtg<8NEG-^{ zR0oUEh1IdUeoguxsq7)}e8Q~M|Q3d=j&6jI_eF223*0nX6}`9RQyv@Hv=>RW!4~GsyfrNfbSceLnsvF4){5G{FoUcQ zOmRym!wE(++&z4Fh+xr`x~n|?KhDXiP=fO$7gig!G%AYMq@W>+%LrtrIG!UizS~ZnYOW#8SRgnnF4atwM}@<1>*o_WEv-sciOdWg`aBgdeQw0IE@EQ^C<>umY3H zhotsu56V3U#l!lcsMf5RDY%w)sLp-+aQUaoH?X>Ki+Zd8dJ;uAScP@-UvMvXcX0rg z?LuCs^IyoOX|{dpb_|RiES4QDICrb-?oaHv-IQFP&hgv^+}qBPvc*P(wz4HP`C%@xaxr(tYRf>~q>?@GQ?J zrqBQ*ai3VvhpGF}A+&MF9`?|d%2T2I+81ztUg~2=v5q~KsD!k&R{-h|jJt{LENa_< zQ2`fC+p$W@p{?bHQ?=_8i6pK{Ax5^b;DB1>D;Md9|0UUM3%TzN7i#G$sNiQfAP}Dl zjM1H|Qf~j_#SV*k0As^>u_qpa>mQKnZ(MQadj2V#uAdL%#EcxaiVzM2iJW21Kr^KEK4p*uGb zByK?nlH9d!p9zc+oFLtaOt!ZMBDnJ0qi`S$AyF;>n|rI&$rrqPH$zeZ=9bCRVOn zci8x$E0(WYw)Bv7>z1q|B(?9Z<95?YMua)x-|AX+oGp$ct{5xXrLG-7M|_5AluW5q$#^Q~l1Jw?Bsw=nKK z&;ui@Na1zx4N%5Sj&LoU}G5)-?%ulr|PfSKA zyKG+qry4GM&z{h-LG54-)9ck_RLU|$|^<|=Z#TZ~>zKz2#+LV>u`V{N(LrR99lMG|v9 zNnq7&3SAlGKJ|^3t50EtJBo0*50iw99u`ylsz>A5|_FA4>riekaIi@Jnab zCCha19yc5vyKj3LLN~Fxs5MKC3xR%Xi`_2U2=bU-M8_7%nIY`0FU5Vki~Dxyw*~?M zAdGbVki`Ww;}2URpcyfvp&nb2Dz=K|%zcJqXeyQ()|V-lZa1;+$m6O4I|^tiR$~z` zp?!(HF;E;tE+(FpU;ZB9Plg?GI>jpGY~7MiyeD7v9&Gy;vw@(_L79kTs6*@anmP>g z%J$UJnnN9FJ|R!wG+(8AX9GwR+Q)ddapT6ET`V$g^zYywgk(Sfktu&>S-&Swo^yl&I93qw^QDtqs1mlqV|8vA_Xo3I*=|fb+Maanw~3 zys&wUZzp-}izTDY5J*5q0~bi+t(Op)-yq8~9qGwOE8v7E+2Y^?@?a9I%m?+`&^EtmT~(}`VZm0D}< z%8pCm;tF`>7o%H?v79ja)|o=CQx25lnv{>7K2eNqy@X*Iy;w1pw}o!!F{4B{;EZA6 zW-M?XZ@rjju(b6O{XKOejL&F3wgvR8-ln?|)GbB)?+;J0SiK}_r4E}9Yn+DF>{dQ8 z+j|34YBmVe%Gj1ms`^#yXglXvIVkBd5WrT9QL?ufnx#)N#?sAP9n$D5_MHIg_~KAW zW;`sXWlC_1z&5%vsupUPs0Rp*y|p|AG^?aJP%uhAprX?zK$iW&2 zwrAFqrMaCJT7>=uVPE#{PQJ8O#g-bw&0(~r1xoHpETQ);@^6ORUF);_Fn4cjWq0)~ zxqE~cpMI|JAh`=uh0|gq7ej_!l~=#pOfWH{Bc=as95On9OxEl*fsI$&Aeju$@iG}) zY;_;eI*KfJ=X%9Juhx1Ei2?JI#L#A##Kce#6JpsWz@uVB^~n=-#OkvEzNo~MP_5t` z@q%i&Gj@h}i~ zkIu&3jl`Cnjl1nj0lv~_YTR-9_h8V+K@fLGg~8kZLogVsY$B10=OFRk_dG=;E?wC@ zd=?ThcJ>uNSw6ku_X#}y=OF3_Ndr-};wM#%N%TazUzxnj?IM1c+CrQFgt@4#xn>HhsX%Sa zhGb=T)ht9!G!ezaKx(^f_pF(EH(X{mwar3epW1}PC!VY|5;b3MtB~ludizLxQu8%b z*`ziqoifRbi?qYAHEO8{|7H7+ zNntBzziLUQ6GS&JWfwzzG>e0jobHQH2ZOEh3-A5>d*f$go9p- zIK~ol=Tdm=tr~ihcZhHI+$cjWFgS3*vP(%34}PW8C%3_Kmao`C)yM2bOFW3yQ?==C zUT@jzk@k(v>Aq#QRJ2ZtN)I!eqO=i4Uh#^U;G}GgL=UB%*<+aYe@4|AGg`}0{e&<# zS}zfPA}|DVMT*ON-#c)K6mtYw)0fZC@XgxOy>f*f`*|jdHSVZD9em@ZS*taRn_|mj(>=r|P3HUc zsWoU#i(1-HOIUGAJo}Jsk&ZzhB1><_{S~IdLw!;fQjCzpTg(cY$b1=6dxlZ6*i94Z zbG8Ia#G%463oPk!qyvZeGS59>-d+Nh+0B73-YQke=7zIcFq!%%K^yqVX_AwQsQcx$*1$u}iuXv3mE%RxzxKnm3KDkO6Bl*$+fmc(q*dU(@hM z*LPR&(X+O{YWsGUyL?D%KFU_|m>xp-tz2f8aXU1>lmjRBi)bpd?Uoja) z&xmf+!z15cu`Y^!Il4{{4~2)T^}x{V=9kaXz2W!H@ViI9+x`FEzLx^mK)lcT{-9)S#X6AKULU*)^?Z0=$lo0xn$d6L{hpA2U-;b{e(&Vh zhP2~8%2id%d4dIs6EaZcJ_XhB`fSYNox{Gh1;mSimiy{@=?Qj-u~lC68m}@Oq;1u% zQUptLNJB@o7AB2lka-!Pc0VB0@X`YTX#H^i%2Kcfa^?+B3P|pdo88_abKA?oj4?j( z4d39`)(F)PEDX>QXyM&=wd)L#RPzFtz1j{-4Ci${HeJtkE zyIt7g=Rz}UcBk(0K@+mesfvChVoGcg>VPc=qa+4o_SfX3rJ%NWaNaFOi#>+-(kz!a zGW-^X7ocn}cZcUz&8E;nRQ<@@s>zsJHSTX*zfvl^$8gJ^tCzg9TQXf|#c&Bh1x9EEoFcric+(fFL64;(Kd3C^w>+B=A< z=k#ld`ZagFlKHCCEfBP*s<91b#}Bm))~6xAfHsv4-7u1LW%<}LL!UH4Du7C*TS>Rr zA2SE$tc&2v|Ne#1p1}(vQAxcpT4;HRo@k5`08z2&06S+;j5Nq1SmMy;8%v}8v6i?h z$KptKjb0nYmnEB)94r#tt5+kmSux9I7A&n8!^2{SN$I%^D)fyooQ2k-&BacTa0ZiK z?EnLWWiUwVZmxIkN}B7PM?t;1q7@ILEEc6D>~q-c^ShQXtl_X}i8lbRH6U7z{5#h> z+PTub)*xoq+UAMZJ6Kl3dWY1&)z#qj&Ytzb7_9XUjyBk#wY&+-2wVD$yElnq-CwZw z(K5(;bcv=dDWJ8zGk_!WxRSwVOqnP1~PXy5Wus;+FXYNANpm~ zBfLXQM=Fc%Ns;|;e|dghrK9MD3X0QxAL}bNJXMJ(nKQdqIl&4J;d65g8^%zMbdhT~ zB>mBQ?Hak%ZC7b%>nyH&^S)NLz&-(JMr@_LRm3&zK)vJfyWkaw77POBf;t$@h zYD#sI$7%!zDK2{fq3>Mom#gwl^5^f_b+-}6iKpe={^YDf)6+o4A!zeJHUOEIxaINZ z1a8blQu+uLE%$vZ4y0ZN%OvOb0BogAdv_B94P3evigFUpD+ddAg26?NacWmCAJ3Gp zlDjG)8Y6rlnbw@aQ;bak%qIzMO64f*A$7k_s_PlWqMf}2+P^sS3p>CjLM%L5z1r;IU_v_84TUDtJ&tn4DK!}I;A`^}ZQUbWdx z4V~W0WnF#rgYdjC2)NZ2ZplzperA*bVd1f^9v6^Ki;^KxpAMy!%^4yS84Quo=g#D&%_^jTAD`Bl zV^&cEbouD$Kn8=`9I<|fZkyeq>#RdrNw)9M9y%n4hpZ%}4#_Mx>Ny3wbVKud1BOKb zLyb-u){PQ^qohH@?57h9o%`!`6{8jT^06kJw;r)a>_0SD3S$Se=CS7uUwnw*M(v)c zlTaVn7~OA+X@B7BWDnWT=eRVKw<3X9u4IY3Q(Er&D_i;?yd*LWXvU4g1` z1#98LC%F(h_kR#8=8#LRA6uUV*T7@(2CQ8MkB`pF!hK3!)yaWG@^nrBHXi4PC4)H3 zCqw(>K3r=E+-ir{EDs?QQ6=+~G9hH09UFPBKRrOB;%}i*e07?!(EKJ}^|>IhqnuIR zkKjq4hPlS9z`%q|VE zQqV7j<$-M%+9&QZ^#>$EzM&;wz56+v1m4p%v?m~F@=I&+jP*xlfa2I_V$*+Q?f)=l zwIAK=Qy&SlA^F-!cA0#V9>7lmI{7-CUcb7`)V?i~e;AO6mxekP$L#aOWB8PzTBtHiBP%WZdM!Al0n z-9Lf^XL{17E68)7BfKa8D42QP3S{Rgz`e?@`rSR#5wSw9^tXh>VN>pJ*EjNb74j6~ zE(as=CJW23mva)j1=lFWpGQRBw7CfKxN2*0r0&C+4Vw-Xs>G&mCrc!#bUiN6rP(h+ z-O&4eBgKI()GcBSfWG1URP&QNk5)7EVSY2sPa2H!+*#j$=HR|R#;`77xh&i z)}v-q7uM&g(zQ`CE!<)egX%zfrGzpbRn!-b464?;6yvy~Q0OmBHxv8ZD4U2oH3R(w zO&~kjuqTp+7HCLFjMXT*ikOKA`V>riuc8GV%2S5X5R=pnlKFGKP42+#-BH+;4+glP zaJP;r!(bG!+_zI?x5a8(c|EmA{zbk~WrfwaUPG;R98hPd{J}u0@-I^3RY0TwPrrhA ziC}UlYrmoK)WW?}^E%BGE7t)rbuNVy!g-)&E3}^CXB&v!)+=a$JL50jLdES+eE*4* z7;gxYb2&v)#d7xBmn@RIOrPXkgmq$@Hj(=d_QCT&VGMQH$?auq z0V_8-PeNBj!}gS@RKRiYTR#qK2tO7k4>V&|6X1Rgys9@s7ymOmpc7VjREo{x?0^j^ zaeui)07B*fpATQivGl?Y`!a~V#pDkKmR2nCh+QniF6txpqI_}lq5tOm#tRVJFLi$7 z^MKemU$hI?&Lm&Ft5`G>>f3kXPW;6e#@xQZvZRh_i z(utnSmry93D5|FSpLm{XI?sZ2;Fu~e+um62SE1|{GI;o$rg>(@%r+S||eSTh52me%}02ScJnjWcTM<4nlnwNTeUfS4K+W^r>q(b^rm-0oIk zpYW1-SPv6SOnO{Zv!cJ&ZCcC>Xpjw|(Vi>}^~AZhS{`srdRfRtDgIq)`1`NxWE+u0 z3uyS_Evx2e_1aPPTD@0mI6mawR`J#j^P&Ghxm^`^MGJ91UlF*g9$vR3tY>&I^|1!{ zo}|fye@Ad${f`h!or)}FJvT4EEypE$|mArSp80K2zk8sD>-0_r8 zg|qW5x`Wtwb@UQ$%lg}W2!+x+Hz68OaYPO3$7j~Ne_fM3!?Y{AX$&=Q~K<1wI{$& zjx>n#+G_3X-#xY>yOkq)O@*_eZPMqUV=^~FYBJoP!CXbc=am?3YMT(m!E2i+&I@Xr zX<*HBwN0I@hf>|Gos|Kv&Jpi;h0iWTZ6bIM5wO~9PPyOC4$;v4lbED_-1UcMjavtj zzRE`*nkpYdDXu!e#DepX%)J_rk0(6_r&3;reM@$qN54h*!#7aa1S*+OqLyzSmVFgF zgNOY#7dA00tf!~^8J^$}Z1XFve4A2C%$3s6Wd$!)O$1e!&6gb7l0BOj zGWyb#FVJXe(p`q12BYG>+7{y#K7Fw4lpQZ5B?ZMKuT|@T21II8@8g+HDU;he>&%TQe=dN6VvIE6K_b$jo`Z zr0Q+|GVF)?3P01YU^(KxMQ3c@UD23#SETOYFx1Vm-(H~XcLtRG=LO0>GN9~t7byEL z1Im7nvJEK5zGe8cHh)ey=Fl=GCV? z0zWMT{-6T>(+vcEI(3hR#+zk-xIo!|9Z>e)C>u<^$41ZdV>G9U#|C`%BR{|zvecJ+M|71Yf zH&eDA*5`VX8az~Q8SwSH_}Zv&@F&*~_+;k5pWLt}`-P@>G4cykD6I@i3j>NU06rFp96x&3BEvTzKnX{%|Jl^1q5?#K;0oWpbRcsKz+MvjHW|l zl=Y37oj1*XY4*s~YLokVK?RMmYbX<&yn2k|MJ%nIE}HrgfC8kbNIU>~2W)_0#b}ye zYdOgdr)7P|qE5sD1^g>^5qEzf53hyZ{;hvolm9tEM{=mdrqtwdUd7pQuUM#-zdK+X zpE}^%2mIToc(3D`QTDsljXB`&DcIK0+lI6& zE9;kRDcb+A?wu&I3BAI1sJT+KbrRUn7B#O1bc=24vu3UBG`(dYt!iZAyv#4SNYxdz z{Jos5OyH#M%27kilt+vOO; z;h04P1nt&h{A#(s9)pW;t{Ka+U4y9YW$0BKGiLeXM^<%qL}Ul+@^tTmxKqbbSkUe>fK;Y^Oq(1>E--?=81@P4c`+o4ZU3|hn2ByR zpj!;_X3#x+ni*hy2OtLRZ1GC#5w0EZ@jJ*|%M+P7#%P|#{S#3<^u%F*4ThqKxHs#D zS_tfc_7?Xb7Fi$o;gc=%0*jJq8XnHk^i;5TRP4qPLJ(X7uyPPUB zrCwH_PJ=f44%<5?_gg^9jvuwruC_}9L~1N=>v$vfj3rf61Mz!l6OTLd79(ClSm#s;&;q%%*~Xu(O=u3g zv{+mMy0j^UtfshHBzVUeE45idXz3nV0xp^6cZh$o=E<8+S@hW)`|t|~jZhb)$gXI7 znvChTXX?XvwjfW77y;XJH!M+@UA?ss5k9NVU=3|$2s)?tU9N%Pr*krNfpL2alZy|r z%2X9mtea{7MtJgbFqg>vUXDSs=_GZ&b*~0L5h%vZiHW-6BXVWbbKvn0L1Y^T)|<+b^BA zuEw-M%#rd<>)l^S!-6hq%7!gM1$N61=+cHHn{K5@0w4^r0XQRfpT&N@ylWUMZSGhp zXe?xj0xhdsXJO*6$Dif}jQwL`u?cEp3KcoVOC;~xh*NJMCj>};4kB=$k z;h-|Zid;K=7xN)O0cBYf6|P6Ic(aHkqh*Q2IAalCmgzE*A2%b zsAUng=KSfNJkeW9rQ(>-kx-p!voRpASeAFsWczX1Y1>pCkXC%bQ#{nSw2Ejslpk_3 z0g&imn_6IC7QmnW6Q^0KNf+Q!UPJDx#&#YP2tnIZqktopslg!x4M)A{j}SEl#}`id zipIBTC(Hf$8vdL_CM6_9_c7nb+}{!93MItUAvV8)UzT^Fa$i`Jd2M}}`*J_|kxtg3 zLN*VpZG>g+ANsE!S;Ni8?Mp3ir3z`!FfUT$9p($T!#GJGY&e7BQi{0g6~lE3su4fh zmy63i@rBSuKpMoyB}tRXjd)Ot-LcZ>>u-3wqrbha8!zz+RxxsHbPIR7m$;-8W3BwD zd^ zIt{006CWBg6oO<}CiA+bpk<7u1-7LSC#4uPCWBt^BaTI9)+H$8AlH9K1_^o;rZM%( zbYLv@;xfJnaS(}j*==kHJ@ylUg2b~yOk!+^XV||rhB%4{W5rLmSPbPNNf#>~JsBaA2G= zPG_Lnr*A{^G>wPli;ZFmKlik2laT4bAhd~_#$XUikCPjs7oJQZkBzk?Cle#i7H*AE zM69S?L!g!!M*fBctvYlwgZOijj~NTmeqeV9E~42<-&LlAj6rdbS_=poK-K8UNHH^Y z9}aX%Wu%x3z9Y;lz7kcz`*Ax&ai?p@OXEG9DAi7YLZ!0^v+LlBfy7cjuYdA~Gi^GOTEnt(;vb6EjCs$31pjMx-~B$sWdt@$&{8 z_(wM3zY&MHjU}ep1SH1yw6lY;?;OYEG#iZM9{k)p_AjsxJr}@y;1F8#bsP-4>xck>+*Dpy{UD|$y{84DUH-zMW z0Beh|PvCzn0+?Hto%Gt1zIEF8|9JO_z170YNm2OU`7|7SPREZu>Fl5Mestmm=AKoo z4rTWLDo*rK{m@&Th4j7?#X<7b?jPg2@V*mO;p)N~c(x-|B1C{;{IQ~sYrGeM8@U6)fW`eL@!q= zCsE|or+=pOFGKIUx=ko-YTsbaZlGS$j$?-s%gkTDI1(2UE9#!&=L_t>FK-XwLnIm$ zV^yxmbM<|%`gLPZtIdbGc9DaWa&G8}4{h8+cv@Yzutm;;=yhB0&uf*}@VkWH-DnIf zP0Jnpa_w*V82N|gSg6X$3t7gRCuuidAtqX=r99&5+?&Kc%XD*(e)TwaQZK2}e1&?W z1^J|xspB$f$aSqPTIh-^i?gGhD(Phmw6hNwi0jKk&_l`+PT zZf_(O5#L4SGHPbQg{1Si<629#Mm2f-!ZE4q5bc3pb^yk(j(RftOKYLkZvkHC`!h1T zoVBpfOV$&ba(2b!>=u|O44Z6fT`~BsxG(6_nw{u|I*#paX~HNEl-xaJF%{F9p>&$X z-#qM!A&ZtgW;A_4t^yS&NDHML{&sZV5UD}9X`urdA`Hezy0FXTPr)W}C) z)Ojd zNm^IG`OSA-pw?+tqo|2)PiU9r5G###iB81T9vDf$iBwKM=X+)pWSECHq4A_;$_?2` zE|YJ9rhgdf z@uw>UhaYb>E1P($+(*aI+;l)>sg3$KIB9*D&!9!yksxS2(MnTwOxXIj7oW7x! zno@B7P|8wP%2J`!;@nXRIT1=(%1T+vO0_r-!eB3Q=fdtW#PYkEibwd(r3Lcan>!gH ziAqXG(FL2lbPDtIB5dIb$KGqsUAtS$WSEsYe^X;>^U$yC{7rKBpHsp4Qs#$y1d}le z92Y|k{465c9Qv#gC~PY*+}Ls}b&)wP?eCLovR{tGjnF^qOSI|)yQ`mEgWAcq4t9(P zuEIW#N>82a4^R49G*s>%*9R?3^-}Xc`Dd{tPGm>!`XoE7YH2b#uAxj$W!bNwua$c_ zPe+uf_ohto&s}M=iajL0EvIw`8kYv?s-llE&)w@M0Oik!n;J|K}n|80eODGJ~|!dplIgayk??qe`uT{TSw$|k6+^pxqXKFuWIX>yB>JYx2QC+I#N zOYMb>d^PrSZ+tQq9tqadiUd2ualX{!i856V+qw$qou(E!w;-wfJ51ZvyA%Ao?XBt^ z*6`{bamx$Vi$DacIu2^8(p0F;gpFGG$~swCT=qp`hlo~kIC%{_FT)NCGMxw8VX>FG zdT>|^`mVycFAkq++250)Ax;?>AKC@Wh4^QAsram!OuY3TljEc*bd%_FpqcH)QCnzW zf!mZ1bAFsz!}zkZD@|rt+I}yiUis%TnN=MIGwF&31|b7VhJ zwDTn@j&WaXU0}RwJxBWQ%FVQ-Tp5%Fv%F>Lsd0Aon2HVRtt|CzT8{el6;N&MX(1Zx zt9*DfKyijgJ(ZEB7p2pQz{E8|8fXUe!z^0S+0}0pLhP^{%x9NJU`s4|S;dADwBx?A zMkX4A2zPKQKo#<}^O=fTz=I|_y`>ivdFXJNOPjNKoBZuWXEq_G-)pqamEKA zK)qXt0QC+6gJw?=o7=ptSVC817GP(o?Y6Je?wS!0g^ccGM#9j5EkdX@dkV+}gO)_a z5-G?+f~iu*eR)_jKCJzM9mwq8X2{X`q;Lb2sZVQ#Ml=9+)kM1V)S)}5Dd6#PT$|XM z*AIVKvw%cLV7@hF@F>m}f`Ibl4M-#cK%;;(eqq6__F~KYa6?2m^hgTfq=@yT5KdB+ zXT!Cuh6_uGnsg7x#P^WNF-#o|xwa`F8b(|x7wR9$Nm>1tvij>OCUS-6H*1kL==Zg# zNDrem+O#jAPS>AH9s$gEbv8-=3E#(o!ZB|&s_-x-ZMgwx-2{x-ni#5^KtF0WA^51) zEQidy$QuOSSWRZNPhg+y{I8P6`GM zs>b&|+T1)Q(^NgoK9H5j&9HWyta!i$5<{n$y|X)|O@=mPVD+6QTa;~l-K%>%=`1*$ z+LU*-`&2g~@~$7OMU?_Zc0oOPdpx48Z%k-CA3|B*C`+a~?5BHZ@-mJmr`^{4{(JbV zN~yrAQbj#oq-AU|$q$)TYZEt@rNT|s8?0BpFDHb)7~R6dsHf{)L>QX#mM`EU64@RV ze`VWZ!oXT>#*?-6dqzRCVoAu_d@q=?Rp|% zfkMH!Ia}FHnW0c;qB_R(rSVSidjjY1LPg@gCN|VzUz0a=(PuMl`Mz#EU|%2l{H(sB z${eV#V0<cmDtnTaNF>sI?V6{QdFK^X7zf61n?)^*Zo|{Bc zzqP`Kx9Or2Z!H@OJfxeGn$J0W#SKJIwMIz!QyOaN2AGD7)V)Or=BG};xvVv@1qo82 zJfJ#cRhv%|%^|DWMiL7OSZIAAHYS%^k+sc>Sg!^UYgD$P;6ap@*AN}yhyls?E zb6^lhOW6;_M3K2yj_|WsvG`e`@K;=aUnKkUl1g25U+SAl@2>5r)FplO-q&{Q)MI(g zM-FA>Nkm}(c;_9n9v}R0_1Iyounzm;@Yhk0o)lFK#?QZ@=C)6JrQ=!`?NKz>yg|bY?R&WEWG3Gt4fMJ)Zck>q@FrD*$?*c*di_ zP~WHgnMhLHY--FUaW`fG85j=zpmA}PfvCn=5(#L7V;9~&fWh0kq>Wks<)o~S2vi$; zyF0|2Z0yU8TTY7Xe-E696x-7Sa~#*(EUk_d>po+oVq0Wy#M0u|@-$dCcObxMdttz6 z`~SB8ef~ri=?Bv`e2Tl8!}aNma`{+&tvW}wt83Lo2-w*<7s2s6uKAk#SE~AP(DFq0Iyq zqq&Rgy6hH256b4DGFRRvE~HV`hPS>Bs;YC5+&2sOeO1t zIx@z_!iRR?B}RYd3~wiUu(MtSW+Jwz{SAUrJ)oPaDIv!u2yRl|VTFRH_E07g^PgES z-tyD_hz)y0b+p5GFF_1h*9dH)LHfI|Ip*G>NJp%-h0=GI{0us z=?1^x;y>@6V4DrFK`n~esul0X7=w2qsv^ffX>v*esDm+&pJC6*hbjx0N@7a-F}R6r zID`YK@bxYyOcfsWt@Txi07O#i_AG5YCXGi%DxUoq=~4D0@${L@4#m^Qz?f+bv}@U- z?lIFP<4N94a@OwRm-@q{v9Rx8WI0Yss2|m6X{V9V8WI14UZXQ5@Gv*A`Oe*}$~13F zEm`4W!@5p`0{H%FJ;jkLv&RhIh*D6sGH+25_=JBF3u?iv;n3`2q!6XYqCi-O+})iXqemgg#6~5zLmp(fo9K`T(Lgy*AwlPdH zl4z9HRh9J;VVMplR4bzJwXEbIY~sGi*`$C)S=$#D#wt|vo`nSP?^SIUk-ES%HF4$k zNR#Ui^xC|?)tzhUqZoBSeG_9XM|DeroBkL0Ue=rA$a!gC>qSHNWbv?03p8{tMQe4p zLw$laa>oFLB@*b7ZCNoRa1ct-#DmO`xV-jnBR&cx)iA-md6Y@-K7N}Y?3H4DU#*~eIho7|G=90Ex`Gz3U&c!AcOt8} ztUvZFJu;f%P=M5t5DYhQ-(Jrwu<;eIr4P&q8DVGyF7T?6becglZ!8Qq@?I|8ps{#oc5LeMC>fR43_M^ z%$3j7RObO4ZSApujUCwlc&Rlg%TX+Z1~#<$0iw>h_i@jo%^AqrizW3>eBSR=#@f(^ zY<^6f4P64KHiSmaUV-3XX#F8zuyLXO|A~7SI4iI6-v8Z~x$YTw2S^|x>bti@A%LRB zG;-9;%Pn96p#g0?>X{5P8yM!YhrMSAcmr#+w5Ap{rzX+114$I`v9>m?wc?$gYMZ}} zp6IbHZDSjc{w-ELO|8fLzrSa#_ucPYfJFNF{Kd>(YrX6Gtmn3#^{ll%{9d~}n5mjJ zAGz?~t+-?#Mct$biYFP8Fkwm)Vs5v&_^3^4K7RNQle(C8H=9SZvuK#W9=o9o&8G#d z22qGd3C61Cg)K9NlhlX7-v&dE*t)VFv2T_3DBH+yUt(yMK`|Bf0Et+=QS3;jQ$D|( z0hsPtePXaP`jk|6M16`ME3p;vp%S27PDX48bW77PtREimFeE>ns}zQXf14_;Y$Z;{ zg)#23{ykQe(jKqYnwv1Dd990m2~&LF&{!}cUCcVIa$kpp7S&RRnIs9DNs>7HOucZ; z)2CpV#U1rXDDve#>*bX8Kdm#(icagkc6viil6q8i%I9@;QPR~#EqBzk$eaql90wJLj%!FlJW>CEp)dq;#MT92+O!p zKrNG}EZUTO>R8ceqJAL5lwXW!eY!s!Mv37k4gwL!CF>46;NONfyI} z()V(1vBKS(j)9o^o=aF-QTKbBQHDEx^OEFt%B3KxTxRS>%#pw{yJ@=s{#97AhW~q| z7Q{OC1|mUOpI~z={Ar8HbY%+h9|OyZ1r3kxEt6_ynhteQ2NR|;U_{I1G(W8gm@dn0 z--LJtEpgpA=!Ua4ZBs9Z~XB4(M!%K#FuaD_u75b@ZM$QIpY4Or<&H}^~PE$KEswxjlL1qQDURm*-QE-g|kIs}P!HyB%I1mRb@IccO?&cG|UzsPQ{#psnQbN`n_ z8T0cqe7$up!I}zxC_im*DyL8Q*Mpc7JjwcP0=Y~<+-{Nb-)VQF$zC`J4vS@ zkJz~#mjr?!Q<2O0v?uD0&8ZV@8RS&FH4}I4;Tl&y{Bcn~X+Oii%4s7_(ol7{lHq5c zmS*4%LtRp)`h)O}9M0^nazz+_9F)pEMwx&Z=~6Hv0|^Y`fRNkq3qdXbQl#8fR3}K( zf-y9Az#Mto8636Bi&noJ=i@@QuJFxjAo<|Pj#_lMQ%oYV{YcAgr3(A-LCKcVslc?9 z+77>2taO5`lx>O6xFe!HK>2@0>J=3i_Axmv@kxFm({fj#7k_DCvo3v;RjG1`;Rt*` zo_gzIzx>L@C*Qi*q?KUv0P@(4r6tDc)Mh@qL2p`Yx4nI)lQ;nEBqkg2YmPxVP2+lO>~BL z*-WzyM$*c{Be_bXUmkubM}*YAAXQ9&jecf1B8zeUiXCi-@iS9 zl6NdkZvXsjFsSXtneotF3*T#|1nR{Tx;n31fgH&|r98-}kY)8m27 zGLTjgwhDX^^4TT9NxoB5jo%(H=_8-sKma#@xJs?b6yo{3X5~kjEXL#u*-aLLK4qG% z*oBlyE365qmm;*%%JC23q+v8zr{<34KdGN%`A@D7_+R+pa_Ylm%)dvch#^XV)C$w+ zURp8fhIvq%M=8nQ5TmC~;1s+cKM+V5uac-|sc9SV4|uZvLs+#kdu;J-VjtQ_hQ2K# zGj!JNEYO!QQ$DC|cwV^>y#pwkf?96XMaX^t-5k~zshF3H&M(T*LhC0rkN9dg@dZ^w z@iRKmBhlKtJTGcrSvaUabvhugEre+~cwye#zz zcTqKt(L8AyWJEkMs-~v-F^(wDzr!H_-$;EtG7$HdE7T51b zyN1b_cJK7!r-u)6jZb9OyL|X%QzY^!ftebUXgBD{Qlt~vzfjU$TDJYB`_F+C;h*Kp zm$UMq?HCn*dHylm+{EIl#|wx*S|ok((h@$U8Hz<3D|; z`8cq8DTbfuDfBv(ExJN{yBIA6@>keO{4&Wex9MNuHO=kzk;G)%zk=_cyqcFrB(`&G z#plJl{FWqHnzK(vfqym3W#0Ah`FYpZH%457ylFq|wuqe#qy8$nmoC7Y+}f3B`@ZgR zwz!jz#22}^6Me)lad9Wvz8}VHRv{d^b$%|+mD|9pcPuNf0K1+08E7962_jq0=kVlf z5pHRiNKf+w)y@_j1OBbiWr~=K=wtZ{DfVV9;JR+8&lG#6#}s?q(6GLxi$xmYfJ`$^ zk91a00<_EnW^~4*^*NPutI$<5OF4IqnQ|`UiCW4i=WNAOza1Y3$Br^HTKaW3b(Z_A zJLLJ_YR_s!nJeJiBm?;~9(5S!ET2&9R>hEf%Ph86F(luW7m|FGT%zJ3d`-VWqg6M}&u8IwE(sb|oU8)#<8xQGsWti%3k8t!J)NFVgGNEyz3VA9K!$ z#Yl(kp=+baX)s#LII!#PhBnb%Q&pgI9^9^TXb2?Ts_r;NgV9L>j4WGaB%8zXM z{hcRvi#^9@YzXBjx))Tl5uxYfx57}}fLqb6yJX8`kM;2a8L?d2=eF=OT3LZXU~ifd zMIai$Qs$^~ym_m=j`NUuqk&r>c(^X9b$`9iU! zwT&z5nms>Pr|IX4!qFn{qKmo+A0f<2$HI>n*qkb4Tk_x+@QWNFRbLKS%c6nzY4NX;;mZWzN&6&dnXky#hiHqP;tRP3U4>5&Q6wB&*6*$Fj7+v)$Evj0htF9%| z8m+jNr7gI!Pi`G{c*hxpu{2|^lKyNC6)n*U!*^v|wGRX9(FJFu1geH2lh9dvy_&K-U&faG4I^N?9vL9QlZ> zfpX6C85>=jM$x4XX*9qo2UuANA5I3}zKzkZ8i}!Lp9*fUt0T0}nVaBGVe?Y*#vgq5 zpX8XSzydcdje>n8_tZxvuv#mv?iK~LBxpsstr+K4h2wnB8R#TJ^z{by0}=BH9Mkg zir1T6Eiatmzko?@i=L*wET)I3V+;3b9<;mD$&ERvd8UhM@fK9T_P|ewEPo55rBc+O zy>7EnFUqE2bIkD%XaT==O%`IkvSNL0!JF5PZPoNkYrrkiY5ykPs9uNFEt?%?W-(u3iu+Y zfG>(~f0rrXa@S*F0^ZVJ8H7JgwWihUT(s$K@p37}(I?B#aWG2d9X3iw5Q|Zf-NqR< zbORAT6^=cQfWM2qVci^eboI-3r&U9Te4K@?2Q2*DLdqam{n% zD#nM)lHr^M+DqY1HDhgSa-Mswp3icLwp38!^RLYxp@d7d#+ADAT9!UZs z5h?8=oM=_~s%T|-MfCjgYUBk#UKqEdwlb9q*Z=Z^fBf@Eu7q5eQMt;ZuX2gcN2yif z3YVyBkf1>8ZvG8$Kc88zMO_6FsG?UX!k2f--gVubB|i{m^SNLGbH(rTUbED}b{>EM zM*{g1(-MnBI@IObey+OMY}+NS1UZzrI_Xf3p`;B*KAG{ZV4PICI$Gg7QeG|b<@z42 zc5tLqt9_?dTc>PpyM&t7DI_D+V_4L(%$S*sj7Di(Ok~ssRttkbXFEEL`o4(S>CujY z!zcFp0!F=$DS0&+J0w!rtq~O<2gtvK{A5bzIL&lrHq#X@6BlyLtm|1xHhO9s(p?n@ znDxk2FkP_-*EZAQ+J1JDpB~ePc|b{2=vcKDSy(@rWqBEzC<wYWH9iNpln$2`uF^A8WnxifFuY+{#V(6Ja0@XjT&H4>gv3> zWq&M(ZNiCgzA#Y>JrzF}7IWmfcZyMZ4&pA+OsPEiekA8Ipu0E#`U+Mg8GyOf zkk?+DR--<{RY``U+BhQ;1m#ukXQdM&>J)EN2l;%CDNv7s;GN}Fg2;2C=f2CwR~ou8 zAdW9LbFYe4`>ZR;y!u`5ET{SCX*S=AOuiL9-?WJ|Y^L|wLRV!9U1f!sq*Z+eNOwV` zAExAL3c^`mj^rF{kjh!$sZbMa+@RD1n?4!9X3f}h&N)|nX*M){miW|cNRGhG`Qg)1 zAZ>F8*O8r2wmXD=_*Ll1bAdn__a)&sY_V{xD2L6bYXx0t-N07e5M;Q?)!bs$;!IHletsoTxC*q+b zk71T3*g(Bsv4za9*g}+`ylkRNK8arDf)PP1abnatr#Q-38h)euawMw= zDAn|kysJdp>Duh{6;;?jb+?_ct%r+;{8B<~t{2+L-|5`F5CtOW5^ce{%=yz*fG%y_ zNoxuJo&(r`05&eCD5EF9ay=cHw-Ik0hOPe~j|J-4Dx)2liaM>e1qe+In?6-=f8LDg zu(VBAL6K6dusN|AlU|yFN2yXEnIunFrKl8qoh+rmDAS{Ccz=m(xF%Qtv=($jF#ce= zY`Bf)kjBJx$qA+reZzD~p%`}&M(yquW?{^(q>iX?Xl02!ZaFEbbsq5asu@+6?G%l~ zyOt}ZvUc3l_PKY>wGX(}zBC2jc>A=*`98Dp#Qi*J+$6kjJQ){_<37jrrRsFrD!ogW z8~@1-C-t7QVN+`bacfxblNN`i)<@aVbHT;tEa;#7=#$an^v^#`6Z~f&BfyXHkI+)R)+UzdZ21rj1)5T7vzPMOyF>(jgH}lq}l{|vIJc> zTW0~QFJ|Z3_{P-bd-k|LojrJvk2xt7#a7tKAOM3JYQIES)^AR|A^*`T~L(A zFtsto%a#;1p3=h&O(H!z+QE6$wE^B{5K~u-g_{FJ2rzCMvjA7OD9~kFd;Y9}?f-jk z!|;#7@Pn6#51UhIPW8yC6koGa2Z9051U&A2=)RsL^rh}3^yO~53?zOB&myx%36k`$ zJu?a2pO!kF*7U`+{E0N}-ZbAA(yxD=*79&$Qs4V~N+o)x7FRdhJDrw!Us})mOQnw$ z(<6boW!k{xX+-(JXrZU-_cR=l4%5{rlK@tkvZ6!)@8pfBDksU;p}<*{>(c znXh#E3)5QuooM>kd#5%0p0}sN{YoJ`F>ScV?#XtF&tIHY@jds=_9Zfq0)*1{ zPiy$EKQQC-*QSl>9WzURd0N|F{L+lJzclUh@tL3Ro7VOZesf0KQ)$or3oC^L$$q@j zq4lu@t=mAk)j?ay{pS5|!T+}S-^(0oQc9@lUJ{MZbnFYahJVRU_5!0QTzRF|xukg{ z={mf-ezG|H-L4rA)Up18s{D%~ylH9tf$WWfSbt9@;dN*cMQS$DyQn5Dd_eEfXFzm(t|JS?fWNRpng< zn#XApnJA7=zttE2_!L*AhxaZ^KCBKtlH=Gso#1d6xcTQrBe*VCjI0mya;l4HTt?i~ zr|KV~`lNQkj884;%Olfbk7e=^&g46j`9iqa=tq_r573~)AESiG(x0|g7MF8ZqtJqgt)whP6Pgr2`zQju%tJOGZbmWsQZ16<)x-F zWh?S`5!8X}eE7DMBwql^m?Dr5Pq)hRQdjfk;t&5SdW}FkmDe2x^fG*eryjyjQm~Y{ zp!ac}W(;_y%-#$3o!1E-xB-QN@JBEo9{urbrNSCD{K;av088OBr+a&7r4ZJ2UdM*9 zc}7(UV{ui%e5gZQsR9qM8kVUBDh&S*K029-1|2PMOg9fL0=vW>*q&ZREVZ(cK zJ*_$$pVvI50{W@6f7eB|f9FNFf9#^#zvH6YKRT;@lbkwMGFx&!m8rS?qPuovR@Zu; z0&2W|F3foGQ^3rFGZFKtv_5gMt&d+!>mwK2`reCaeehyizjbEoUP}fky-NI4rsCBX z+nrlxcITv~9D3a?g(Z__RdIxmXR!@rtb!4-rLcblqiTDBI$ zh47CS+S)ix`3A2sFSHvUR%=3}*r(s}`ZO(tcW@V)UX7Me2*0q$v3{5t1rh zKu1Q?Rfru0TiX#>Zhf%L0{ldrjUGLj*1TF}iXF;tHcA!Y$1bbn*bhk3yLtjG6wt2e ziXvQamier?Pd_UX{vc-=bU9Y0HB-pZ;e16Fouf4&a+*nzq`IU#qO&xEA~Q3HBcvG= znVCWCGR>gK%nah@X$D1RW*Et4P-JF?iEIW%W@dPGHiIHFGf2FqeNbd(hSz5^C^9pH zsb*;v7Mq#H6x%e5#b#zP-80Q%v6)#+Jx{Y(EX@*rfR!kJl7tyZ;TAkitZ;FM7T~P8 zgR%5tiQN+4iLzSM-|(N?Krkh71cN00Hj|{%7Ij{_nKWfd{B0&-=pvWQU1?od&PbB| zEJ>1O#2i+0uJ^Pk>q1o2-(mS26(BsVNeV0@-LIB^`Q9j33AzKfxJgVdo>Xxzb#xk( zl@U6{DW}-Wg)dm%J)I^ralMFA;W>92i21E6vhAgTlH3+-YCKQ=j!>h9y z6q%X95H)Eci>OHxug}(?$jllXq9#=&h}xWfK*?Nd%37yQ*-DPTMy>kmY9yD;LP~lt zn{>*OPBoKc_+fF`s$VfPnq~%cP}6cg=5sQ^q&;M54>e2cjIP??>Wm*?7yt|0)N_2* zP(jOEhXCy5aL#IZp3}K@yV~PmO;F&Hr;QOOUN`eXGBYkLkh`aD#U<~L**yg*mQ?Ho zgdc{lDP`8c#EWZE}I zd3!996QILo3@EtY>wJT70!fHJp~|)CN50PN*12)SXY-;?{)#$nXz`CNiN8rwQ9J#d z<0)Txl%Ec#3KF1_yz z`@`5LFtcsJ7ZqJb&|YbWWb{|~=aZ(`UFCABY|=?fI+;zvmx5dmWRq~BAnCzu(rHUN zolTPWzufvWEk0sNk7Se1Skjqh((2&fT#N#?9d7S4G5Ik@6G$G^4JQwUDhqrEm7*iKVDXPj#R`Y_TmH9R-kW> zgU7eO$*iqGJf+7TzS-dnt-0Bcq{nErJZupD?P3uTl`<>e>V}deZsA5jX)-m5xD%3j zD^jo`X8&Z1=gAF;NtNy@M}KX5;}b&t3hCBkhKhrMe>JVeV+5c-o^$PE3U=}k+N2t( zwz+&S4d>al5jwe3m;zwlIscP_W!KtE?rx@_YYh%TTMxZuiSI@+e#D2llLPkx`Q-pi zRO9ck&n{WZ{{1HT?r3AY;BVP1z(cXwN~I6~Lw0M{Dcf9ky_Fb?VWpm zQzR}pBrcR>EzP@E?(=SA9>k_@H7;8*4|s6Luu?QyrMZ-9w#oR4aH9;KJl!Ot{&E*G zZ!b#&>PtvV@32uHoIrn&egN4)iainfACvv zb}uj}6kj1+1emJ7xdW)F5C1%u?zJkPH!L+bWjo(SH&y_=ls)k zCw%ATznLs_e}DYDpS|aa!oH8Ji{5(sXVQU8u?pv3(%0Updr>u;37oP!K@J4S3DWrk zr;G|4e(y^MAL_X0^BlqZ*ul3y?Th=ra^2L44aJ|n`|i8%{w6{4yL=mNe(B#W_~GZs z_qT<=`0c?>Usk?XzN>QQvMpaz@LhJ}@^=VMQL4D%z>5#P@Lyi^zh81<3iwS;NrBFl z=uy(WU;w=$jX25Kq}MMlD?P(urqE=r$uF%>N^{|d2A<&QL%9<|uG2ZX!SAUYaJe^a zs0p87aOo_baEfX?Pe8-AAT-Rzt(Zs36HYaG!b44-aN2mn%V6)Gj#(EX2PKE4B1c)3r0rS3E^!h_PNrxTG+$22`=ZEw=*(+ zX?ds3;LX2OxJ9Al((>&tnM=zz=X>+Li2BnwlD`2K<3hI>vyRWaWwF;+xWvzg5g+km zKCCMhDUH2tSzH>9b2msYq75~PaPW;I9C&*|X^0LzMY4vbOe0t5mL%kxzO{LZxvEc8 zvZAoY%bcYDUWU?-a!9K0IZPdMG$;@O6zbKF~A^X>1&X1S=3pmTHE@B zq(sSRI-|Wc*4`4|o-&amZABqh1=1$lo-v{ew2w>)AFa`6R}qi8&KU zU7_7wXs*!y;OG8nzB5{(eH*8Cxx(a1A1dVA4j1I!0H@ExF!DMQf$NBVSRB&% zGQ=wrg;qD1J6c@cg3O2cUgcPZPQqP%MbJKwkUW>bt8|3@C>c3awMvPgu6zT3nH_ny ziwX^y<-U$;p-}$J})VqVgJ%7 ziKBNd#g(~58Wwhyj_~JgTq}a1z%B~X8Pue%GuQbl&RiEI>KDOwZum+2G0=?QBewKJ zT3f+nA_5d(ZQ>7zur_!Gvuvj_0#<+d_!+4)w5jFOzdZtyy*p z7V-PV`LxKe#g0rKcCSwh?CK7D*OQy<^dK8D-JUeZNG8|emhdO`3aPC#_ouBf*O70H zlM&fv64BYM3EuK@QfqpFgR;0w`Ipm|xR=wHRCFb6(c1HnagNyGn^&={bu`5-Qfq@# ziJS{pE4-Ltu>)7(XLaz|T>Q_nf_ygF^`b=h{e&LE@Zn{%^8fp+{QvJ_7P)4*i0$Xb z@OL{)_ZD;Qaz_K!+zZGd4SBIS#VBOG+bV)+=X)>ti^DhA_tfa)wdVA7Bp zk6uMt{n4fSu$AR51bIbCF_Ec^2>JM-_skFfKF2|tJPlxy^6@ru>S9kE`3t?ea$U!r zWW$VGCa}NK_DSB{#n-MSe3hi8CGhG7bD%hSJKm;;-TU2C<36V~xXF5zJ?SQ-P@}I} zT5e$w_^8^k2y7l;hZ`52psu_+LS1Ps%=nCcV7XAobZdlFX$=UO@q6VgPExz#)SkE6 z-SF(N0VUJQeGQBSn`Tb;nx#(EcE-^ zbk6G9TWXYr19rR5l}MWJ4}zo37+d zxevwq(J!KWCdCKOeg>Y`%sI&2oDU`nB~|EHGDe_f{+M1Yh~^l2UPyLcht5y1 z?#w%OB}Ze~hp@_i5K)9gVLCW}_kX=8!g#3TZ>J@ZJ^^gQcVI9pt)JGeyG`BulUom@ zZ!W3OU->uk(-qMz_It0>!Ng8bhS8 zDYz!}G@61A>g1@=HJtAyMP8%f<9U%AJoB%X#Sh)DYh$hdI-%)8*WkKtjE7Hb#6x(- zaIjD+1jEq?gZQ%yod*oDm><5Lo9)kZSG=H;%&;e}A&p}AgI0dT`HJD+a5IW#-o|HF zgk#sb>uqhNUv?l$_xah~&ui?|6qX@TjcvKq2@6HiDC|ilDYYh*|8f~kcqeQb{z~h9 zk=fT7{x9?-lP?=}3O*9e-BUf1Yya%U*7>ISE9o?^I1e&>b(yCOv5nIGdH2?b-nBxZ z%EPN#9r*pF8Yr-c|9X201W&|^LA~%7rvO+iP(3v za>ocC04yIw0x0rQmH50yDBVT?b?2>IT*7pQx{a2G^Ku`Cx?E%SMirL`{p8Z{qtfb- zQ`}8UfId~)mBwvm;m!QF1tXIF(6?}|j)5F}RnvIRh@&TADgUm%ApBoBdA7r|ws1%b z8D~0u)7{(b{L(~hTqp`J1pTCs*t>=8PEl~!=MJbauJ|q;r3gQ@Fyl5ps~#+a=d9=2 zbUs^{wU%b{(o{B);yR!o>p=3NoGiL`vgh+_UHR76cL>iwes|V3Iaj=#vunxekqXaD3N@V3^nN}3V7?i zmBNWiTlg_{HytH_VnvEtO4PZcFfL7rT~0F_L@vYFm1E6H*L zGqadRM+UT97kM}K>ejoX4q2+3Mqu8FyO(BKPn28fqQNqmVLPhgn>%|QV@lfQgS~s3 z#RW91v}c*DoP%jL7O=-eBS|&-hMcH0r+2Vf3k`A`L8o{VxA?;@Y{o?ay2|x$U<*pd zl`F?>wVll+AQ8{kEVM>*%XQ5vkq#v)fZ``$T!j-;<)k+t7vQ(#BFWmEM{#YHB1=nX z_<6&KZZ5!Jw%KJ{3e)UHGm1)t{50$8+$4-HPS{Vl1sqLj!dv`=w;Yd(39WHv`?yG8 z#)K!c0koL#mH|z8LTG`_e9PUH#PZ{3zCAPZNKVZ>RMkFn=3DNiz2XTw9L$+-s3-*y z$E4D5nM`TK&wP@TUNz^8`E6#MYvz+`+|2XtL9^OsEjIJ%2R~QbAI_vC<(VrW$6O(O zlDWcjko9WRCZ;k^0mpE-hYaL-BLb!qPAW~LOUI41eol8!yZri@3zqhAi1=R4Fgrbf z6&h17UD3r6%TmfDp(J*sKJd_>OMz`1U1b*n@X(-c7hsvHFFIK3gpfbi(FIPUu-x97 zZ#`U;0cEO?ylBeByPV`ddvbAnL=S$j`EkVkPgg?RRUof?RtoCX%EA#_?%8i=R6rY+ zFwTX)A@>lys+B`OvIyQ|6)8@w;ZBlXS2o)#22>U*7!lxs9b5q!*#FMHWN@i-OA5*$ zHmCbLrz%~#1Cr|<#Qh8OOjW~AVtJ*#8kS*g({dkBFN7ao0Ct)>N#WynSGuAS1tEK) zI(&ED8boyG%dk^ZoNa?{iHUU3ztRbQI!;u&ro`4y9QQ+F^Cx2WrL%gWwrAAbaZl8# zEyVM7XGWPW*K#GfMAYHAKy1)rQ4hR41Rd0LD?TG)cDP`=E$aHc@b?$QdFOd|#yzNO zcnbV*Nf?e_zm+bv$bI6N!MH^$8Qc#XemYHtj~-uzDZ)Wn%!ILaX%!eN4X@nh$~Y^9 zJuP7ORmpR=5I_D?-4={KXiF}wW~qutkF@~NOPclrQaJ?oP8f+-gqp&2QEoNyQA1>M z`Vh1ezHJqsrwXEi56{b&4!4L3SO;~|MkflVpSg2AZNhD?^ydPZG&)_EEfD05Nai!F zGhCE%JYNRldi|n;>dFn6z}_pcnw_I`Tdcdq&CH4dhX>IaD8fECK{JGLX(>UpJypOS zdOH(4tI+ahp~wYQh_^ArpBJL}cUR_b_(EP(xBaCjQu4dMGOt>Z#l|{9H`=q^I7f}> zgsNY+zwnnggTjC8mI8nV=;MFH;+kQ)JRvcW*@O6yfj@Hd!nX=RTF|7RVN#cQV3E{< z_BhHVj2+Ym4qAF8Okpo(TVQ>TzgC)7wslI92VDWyPNobeOEbgjL-hoh(!zajR z1umHCpaoT#5!DKOEg1p2MvI0v74_`aa?N3>FfJGVO$&TgS3C2BNi?6AQs$vPDhq>9 z2I-ruxKSVsf(-pJ56xqQ&-n0B!uUtJAr`0CB%>C~$6Khu%v*(9U5M%3?g!>@h=o{q z{{jc&yQt8ETkWuXQ1fbrNk=WyrM|W%MYXh@s?AhNh)QjDk4&sism%c5YO|oL&4N~2 zTrk6;I)X#woj6cHwr4-IIDD7^dun#BM<8u6{CMed_$biOLo_i#7-0=Du=n5S3|!THhr6US-gAxuEVx5F*No0><8xY26l;URz zk)cS?sa!&2@-ey#2pReiKIX$m2p?rB;3~*DB2%4unk<(HRM#l7rOzRf^H_4&V*s$A z>XP!TyQ2$;2MIO5kHS7qDmJC&7K22nHB$88ApdotIFz>Auv6QtBv`R;1DhOzSgS7mOwtR=%bVFLU(W|x# zOG`B23rkDw%^k~o*G0eCdsJM`?e-q=L5LQ@apF`4M>G`aoP-`H)DHJyr-RpZ!qEyt zmG0LymyA1JnJ3K(0$KrM5~r}>S%O~Bibuk^l|ezVB!bEyp5%*(DWUZmW{V}gSGFj= ziIv)GPb(l#)nlor335#*Y||;3iN1_6MYqCJm(y$$-HkN{W4KpiIC1>ptNkZ6Bc8cvMm)<= zF{Vr-wQ<60o=ivVr50#0pP|JzGtYyPi3xo!TGWP1h89~zi+Cp#p47e5u+rJ75p4=X=q1 z*!h+XKOero;5=+vfD9i7^I{~$>{`-7)MqyNKsbd@E@0zb5!ZNsu@kXs*b9M`J{&)zU+=BjSJ9X(b)fB zd*5i`pkTUGc8eUXE_jhHT`Cu|3MO)-7$0-YDf~`B%#C%k*tp|e!X3Sm27l8M8DOno zIW7FP;8B9uag++R1!SflY?o?z{c$}PTR6EO1DxXfuKqf4^YT&;l97#*vRm|cV<{-f%WVZN)7}CXWs}{e-*e!lX+=i3vKMtw2_GCo{%97_O_-jO> z2n3Gsun#~@hkD0JcvMNqJ2(bJQ*jupdSUu6$0V?6Lm&z#mV1c*dI=~Zr@ zMRaQuBjjbJp7u`cPxy;kC^&`Rp`X8&o7U0z*Dz3VBVfu65i`P=(kJrCsdw$QwJ;2$ z4X)i(E7(^I!1g2}Q`bApa=OyGHnh)+Ahbw5v&cF-i9;;AytJ z&35pvcdoL%7b@EeV@#WLv>!*dNvFeno3$L!wv=#33B8tpXxF;2P-Pfwu{C{%TH@xl1_(&lgWSr z{byR9lWwh93v^h1KvW#`4$qe`~{BHUJ)iE>;*K&7V9?O0$?V7y_7StHK5OEG$KyIyWZgL6K8hWV%fvMLsIJd!48yyoH`?`GxoJ(VU(Gl|q+HJW_!f z<2$`nlerB)`@j#swsqHbcZZ$sjU#_4^(H6svm&aRxrI*AU1P1(hPj4aYTGQ&hacyW zEV?Y?EW^q7<^f^&nX8JuB(5=TuN0N?-rm=0Y57=adW3109X{3`zAn{qj1hLsOfZ&& zS3>xE-H=0ve$W#_oWJG4jeobzE@|2w%# zmoz!1xfH%Nzv1a`{O@o7a`)NmY>G7KQ}^$@B`#wMO(QhQgoXc*zqitzCTi=Z+o^R& zK7ZXUak5)yk+P7H^-MAR=(ADTO3fZPu&P)0raB?&rxe=sZL+8|pckgFelrdpB~e%9 z8pbbOKWWK9SuJ$GsBp$cBJ&t=@`nu0xSoIlD}FN;4;z4v4ia#-8Cfpi9pFQ!;i=OO z?P=;DKJo-FON#d*OXDd+)#o`0GMiGQ(cl&>(~T9eUm)+;=}oy*%uS~? zvt2e%BznaZRxF8&X4sPrUcsDJSCixiS2$RZeK- zN?-5;_plQQ!XChS?qr2F)g|B~ir`GgN1Nw6j(p68#f=~L=^E=@K7BdiV?G=aKI+4A z;G6Q{HH1(4FfRINT=4@w3M}GNKD?dqX&=6Y@Pj^#GG(aGbhM#4Lmy7RR&>$|omn0*L! zjS_V%bb2GJRGY`;L>AGyWBSq-#Qj}=c9NCRn`nJ*sy_*JAv4NUa`xlzncWOf-nk$X?kxv}-iSlfy zR1kYtt|eY6QJAZK$b|xp+yuv3v~SVs=wBu{)1^co*zR!>A5N4KGtV(Bh;5$$p-=7! zfH*hDgly1AaJhQm?QOsKVf{-3f6%ond=JA6@0b6tcFlF8c>J^b+T%O#YzzM+@6Tlj zUJQ``bK_q++s)L2b0tnFahRD?(a?@y33Mo^_`ouGjuQvG@8WK9$ff6F2RHKdYfpQ@ z?|%C6?;IYGU$T^^T=i7h=p)Y5i1PY5ED8*+LoNX_OqbMavl!W`iz^J>ETbDQXd4G$naCV(2;j~a=^j= zxqUG4@dXd*&TQ4t(Y%g7d2We+{|4S(NMhl~m!MlEvDE>u!)+@4Q<38<$su3*A%(>2 zSH?@A8*37Et`6|9IDo8iJK^ws3U#^EzbnK+Ialaq0Fjvc5}rs1;zxgY>53rur67pE zZ=rH~{No>9x}5Q%Xi0VD5jI{Z2tt0^e<{#*f!46RRfn5;p*PRJ2qj&QR9R<;@N`0@ zCAv<66LxJ>a2BD#w_bB zI-tZ-OSl#M{$OkB5Kl+F8@z?&22U@RjBqxf%$mt4z1eyzH@)=wrXm@Ze=9E+5VeVD z{?;X{1EZTWk6aQzbh0b_)!gOrIRafF!C0H1WNw5H zfsibv%)llLv!(2`^*PYg9L1-n=A#{Bi9=7{_58kgHLvxOe71ZgeX5( z67ws@h>RHgj71}l_XsJ&-zmzp$g79=K$s*m;fS$N%u>uJ*?g0{c<<-hyiTag>)a~W zDP%sf(=n)roOoldF?JLkPm^s5)>eQOz&==KV7O>eBX_NWW;tI(TLo*eXn$=#S-mgy zItF_x;Xtmwyy_Mc4tlJwnQ9WQdCHi&yMDt4OB))i-9z~8e{CzhK)`u77YfY;WSk3s z71A~_K@)io-|)K~r7K*SIZKp&@uOr8I(DK=c;Mgz^UjAy+kuZWm^jE3O%nz%!w%Z$ z*XR-sd5Y)~PvR(9G8eK%QP9uDw6@$_Xu50?CZ~xW&@{j>;xQJ%uSS^-e&@Uq#qK|J z;1p(Ah=b|yS8sjN3xMrwVfJ>%v*y-XeS6+f2}6`8mNl!Re$FnU_}p#h-EAy+-Nxds zF*lzqwT;xaL*zi%wJjFU0HCWbXAF}Vn))AF59E8nSH8AHfy9luts`SNjYbv5PS37=*5l8Nf#|2&}@Pp*PxDN$f-{Z zKV>hq6q2%3c}ODtvydb@8_VP~$rmW0K;I%P5EZV#nN6b#s` zWxJXILUZH}r(Y}4W=*(5x9I_s4swOR-2v~{+7sX8m?1%V@zJlgVN$$|M5wqD7#R~3 ziS-oFQ7XCI8`bDXqJrJ4VhC{+FOlhzmSxP_`(-T6W(ay#vTk+7f}SgbO5SJ9^9~X1 zK<35pJq5QSer%On5hGnsel8~=`^C@Y^>gYyIgFs3N-g&KCDn)TT@?T6eT!I9Nq@Hi zy}N}0B_@$DeD8b{PZ}709pQ%xLUISM@LsNVdy%z1=STMpRC~pSVgQEe85kDz^aQ2j zI)0_DpQ~_gb?`#0m;xgHv@prF!3*_t$kk*L&$WEV3ld z?|08ocN!;FioLfb18(qNa#w4oGTRZ?ji^-}aovd8=m?MA!vFDp%c0v67xW1`V$mF8i`a=6taodU}Fkn_h+iHa@gHRuB*+lHV3KR*br^xHbessL!6DU zuB|1onNsOJdhRPSz~DG^{^@wC16QXQwr0*y+6bjfSX$Oymxzu0;e2nQ7Xb0_9C(|c zoMT=F7~#HQZy+#20%pGlCQv(@{c6IH8EsBfl_GRez5qT!_$;>oFw~zahbsb84pbLP zf-y_2{oUHwN|5L&0Jcl5h+yRaVjMU8+CoQ^3<@$3QMNKT`tN2Pij&`PI%6fs)rN>* z$<|@pulO>EqMXIlE?{itb~Wf-%X5`u9Vt_QtKLupB$1P80yYMHuCnaN{8>wSxEQTc z6A<6^zC|qYjbY~95=$F?IZwE50+#5)RxR6Qo#QPW*zq04jw?_!O0*_viFiYaigXWR zi%lj?&m2%}lLs;MdPH95v!X|Y_&pJO=2B9xuFL|L#l{p8qm+#k2?XMztm zBG}QHfOAjq3|UZMz{<=crSyU(l@Q<29G!enh34?YY9kixZ zrS?_C?lYjL*0&GeFL9{cG;g27@2x5`kbKDv$PK|~n?3|^QbSMy8@tQ;?R%|8o8tsj z0MT0W-)vB}24US^kAwK?@W#s}lCH^L%g=L#Ch}~Je4eHfc5kTZM^@6~GIN$G zmF~|uEw7iIZD>zcT(UYmu*-Nw6S|bw5m<9Nuy)v53@b(oa~Pap4jBmMbU`qOc{&}} z5grYIZoX#%zd>Bg!d8M!NSDfBkOOg0Y6-&20;gmBpH6fv)3*LVTh4AzEXv1Izq2U( z*s5myE*Jk?F=q#uG3>OXHnZEaJioId_i3h}1rBLEPp{k>v92*w4Vg>gMDAZyq<1Yb z69kHyZvqIw;RdkPoPqTDx^)vPS}f88 znCYS+7&q$K{FAj2;ew7)dAN!#BI&wOCQJ~^<14$0XG~ejIAAR zRB6S>4v@7_m2gi?3f@&zt(fc-D^iO_rJ@ne2^uEqDxVCo)De|NJ+($^L6{fw+jU*9)1_5 z6#wLdx%gdw4S?ckf2Cz<{L_bX@uOcSjt&^*b}hx<%<`!oRdM80&`=eAezEHs3JUeg zJ+KJ0OA40aRr|uzI%ln$EH?!Hf4k@sXev}hBmrw3CyeTqdGX%|EG6nEFk6W4QSHBvc$c_gpWW2N>vs)(&r47}zyKJ^M zev||+e46$DY1{BRA~&^SF|<`1%l7i+>w@xS^sJSMPF@SL`E^@qJyz?FcyX(UJQHW zRH{H{os2pTlo!Q^qmBu*s`8}>2so_+Kaem^zL-2lHkU?=_eYCH1Uh5APWSdT!ju@8 zDJnK-_IA<%bQm{Tg{v|n-Dulv?a_jztO@2TLMc}5!*PBxnvc5|b?DA1R$uCk?>Ti- zT6y9QdJuO43k{{x5qF|s07S%uoa{R2T<1td>m?v4*}zlRz~%a-!~FhpunCX_*YD@q zZ5r+N6~-OI0F!-<`*a%x*vm~5)N@2W+#PYpXvO*&KlF@YP+U!S(DROwVLrBjPPDE@ zl};x}Y)2C-8M>*99CeG@#<*djO(izc0)h+OZqt5S_RN<>A-xHpcYQghriDt^1Fz1T zP{~zf81`~CJX|$!tha%My_wA3r z6rc!DM<-a@3XnlcSg(i)CrG;28g)S(UB>k+6UYwjoGYJGu)5;^tLKvApX)D^&{eN2 zSo$(Bsw-Lm9qbd)%mX^=LFE$H2MB*2@`nPAmth7g&9huWTmx%LiCZS zC;Tu9+;E(8gdkx-x7SE>>mfs&H&SL4xWvzoT9mFl@#=V`s@=TQ<(w}@+iaG#7g34A zFzreX8R%r2ElG+q#N!(24ibAuiV}NX2TsN$sYk!s>+lG!cdP?Jv7`2=8+D_@y(%JJ z-pO!mhTEeKp-U^`DcrZUJ69l_8JkNN{t74@9u)Z?$<_uqY-@rUCh%?@mQ02cbcCaO zt1w^zwFdFW{ucFsZ}2EY66nyr6+)+x_M{iULrp_T=WN3Q29IYlc7*5FK=C~85_zn>n!=GzRJ;0xE=OFb>|bJhkZ z^jzsw<~I6f{#`&wYeC1TKn5;uVqE~SvOE!rx;bh!b=8y%UvmZHJXx51I+eE-WBP@j zn;Pv9fg3}FJ;D&L89NpciDEe%(4Kq+jfdkP!5={BKAcCPM#o{nU`si!2g#g*&?Yp3 zGkh2WS(H~S$Gc9+#!W8#=&I7UWW&eTD#(`j%o`g1%SN5N>A2uK5nXOJ3>%Z z4xu~6SaFdDaT4X@H~s4E?Zf-yBm5rZI{;A%iV}4({2 zDv}i&TRK8NE!eckx78iA=x;WlzVv(vt4+na=(laK3(|Q(I-D& z{sAAaS9cGMRd-a!8bcF92ZkmN1p~Fw@p`q<=o_ewja3JHD)~mz$k1SQY(ja58e7uf z*o0MbC}`~MAFSQBC5_)URIhIE--a6T#Ezk{J(DB-bycvfMs#$@$A-q}jFKnE8r6yI z)p}#7L9G+77-|gd8XD1;J?BVQxuO1%U!Lr@Y{O%j zIv5QOF-f(te)dN4+gtx2Yp^uw~m;N4f0SJOkby&^HGE2?pmFE%|zFd zE8R>TVFFYGa9w}X*6lZK+qi9K-GT1sXp4o{!>wv# z0M$hs)jfi+i!eFWx(jOBZ)`@#`zI!<^)dHtl*y{YJ6sGz9jw;3PD_I^R41ywQh+;g zXxzuf>$TlOBR&H28ceD@7;Nn~@cs&kwc8r&h9*Y)$2T4fRO-<(h*LNzB+y>vr69H@>ok0rXGQ z>TB0-pKR>iG*oX)tlv8{G6?xJCi(}4qZ%OFJwl1TzA?l^-#EYou1Ts8roa9xwfeAS z5&>tTjlC4yUauY)s#=p9suTS~Bd<_wtbepRXd$>FvjPDJ{o~_+P@%~K!K&!Mm6QD4 zZGWr$jrP=QljD6ugD)Y%0GRa+LV`{8ew(_rk(=IV06d>ShLP>L2m0&J9U0oC|0XAg z2A?|sOB{aA#KDOGB%TNw5WTTD$-n@j92&DweQ02>1!yPvb$nVfXr$`6HBcHF8L95+ zABhGIz+uKGC)Ba?W|VyKSrc4Eo(xBIxaG_$5}A-RlD4q5f4GW}8>+#+LIwr`8_@7P-%eZJQ8h{B8r)DD1z>Y!)69<7>M$${ zY^qN-CMHK`jUWeXUl9 zHNz&-N)tY}ad3}I6a=P4{NSvFKAMINRW}Ps`cPx5zElU31X_IUj@zo$aaWDlLM93e-|IdMHP(;xkB(OdU6c{dl6okt zyZcZ=CIYCM{tTdynyLwF-LB-l=%M4ai2xorGH9Xou(o=?1>K;8l0jnCgW@zB2-1;EFw57IF#9qkX#_ zTP(jM8togjFbew^YTd{yOe(IoqI>E?gUBBjxjq{i%;37Z;j-9#x!~TRK~#FfL6_h~ zY7+4!jElQ8RB9IxfYHKhV=ii)81fP8L=r(C^vRPc$u-MJ{J7Ze+Ccxvx{=BH4(4~n zCwh_VazL$MSMsR}<+=3zll_A(6eH3kCd@)fWf`gVqib9s z6XVlr=>oZ&2){t4djBAL&IK|JK&w^QV}1An850J0o@_RJg!Sa0&lE)tBK_mlgN9?l zhM`g6p^K2U!6L;)Ak=yitU6xeKD^vkhhj1CmOAs6E$qVRFB2$B1Mm=+zDT4S+7XYXpJsg17C3bETPX@`Ax<>u>l^#;w<-(LK_r&^uf< z`@3F{a&c5B7XUpsCSl`FE_rmwe~00?6vwb!7=-hs;s3&(odVYObvO6z$R;%Q!oHiI z(%9rRR~yscHMB=`1A`IsRq*O)7t5+Bl>@4F=t8-@%urs>6W2p<06uWab`s;`&8B@P z3A+x#oRv>=>_S?B{YrIc&tCMA+Gr**U6%Q@M1#*{(_~6@&m=Wq`Wp|r6@)rB%?OaL zEwFR!ID{o)w3(9RotENypIPYz6SZuNLNlVX*a8ddL$=iI^L$tQX@^_Y2nJe22l1v7Ebk16eSDq?#JK|Abah16ty3d2nLiJu>rw}G2H~L zsr47eUtI@*NzRN7?yPMhv94(k8pDT1EU+U9+$N#jr>X37Uj|HeXH#63aq*1ld9q1< zh(3c<`GohnYCVs25m)0Nwk>CU8JS-1><>)I^o}zfL8#>wSQYTmmj`%R>$Y5_YC=4}>(p|)lz(pK3Cb@2I4kt-+%q@v+Xb#0C z(P0;mB-^~vS{teEHZ8C!Ql8tkVcb~=xQ%V{MEyG#h7uvZWmc&6~^~g=Xn&PhbZ)HuBsN17IV9JkoCi=)+O=1I>)pZX1jC znxKt#kM!@EUIH>Ob zD(chVCTs$6L%jZ)tF@vSpr$ePPG&i1A`Lb*=-4c6vd!JJYaeqZ2sU-b7n&+L*O%vK zzrc+~Yhyke#@SiQuKzThi)Ip2F6z^=T+}CJxu{RlaG6#gQ^(y9nAVAnSUDNZ0Ct*w zH>%7M^=9TJyP$0JVaEtCLhyG0?WjJWka*GhG`4Akqy!sw4Ndq7XX!nT*)6!){Y*mX z*IeC)HNY)JV57zv+lq%4b|xwf%78x zPMKgq=FvXJOl5r&N)T?Jqo4o*1kYD)xO%7&+~%xF=OjLFZ3+fh6gGC4A-=)r2C8%- zjUQlH-)P!y8i==@HPj(nNnn{|aT7>Y~BDoIN087_@QR71ecV99#3r)Ka3GtGe3IrI;MNwsfm61uDR z)pqweD)ZWA!}JEtKfR^rbl(VD5RsA3N16of6JU4nq((4U8$pEnh%1s2-wjYrwMoK_0Mu8Z8i7~9y z#%iNO2u7E}5(mTbYmGDYK?e;`-EmPiLDDbS9hqvw^I6H_>tMGxWngHm&dM^dS0Y}l z+oTZPZd5nh3eiMEBd8grTic%08`x(xlz5(TNX$Uwf5$QFQ@ zYc{bqxo59^_PaJWrwKwjzjM<}OgTj}X&TFzp4^PtYGcsxDzPed$OhCY)bK`ij&vBj z>4!}0ct80>w9rH3U=V378!@Tem z4bW9hn5w;8awO>| zGMurg%4ah;o*JjS97X|swohYhSN+z=9Nxm;5GgmxR0{$1H`Y~O%RKMEmedH~Qrd;F z^?4FaB3c;4`ko}9KnzVlCuzJkwr5&`t<|a=x_$k7Fjnob@XIn`nPstL9ZD3S8r;XLvr)rL zSiogm8{j4*+_p_4fNYa4u7|rbi48Bw(x{Uc%C&!zRYAis6lbnADV7A2sY&DFDM@5f zTk@~wK&WD^dlD>S0#2ZtKLYh(RAWPcCZ-~VcVUul1DvA^+H|HvU6 z1yY^Rbb`TXm-dK~)j&pT-^7M8^7iJc&;Yjx*0GJCno-*EvkNQTqZFCF!}w(P9i#;Z;BE3^gMY}Q9@eeTwVInS`oH@#)G6x(do)b;66w z=59h@GFtoD#2WdZx?6!wy|S6=wkhj<8P>9MOJGc~^}M zEz6)OA3_tAvc16|%I^CBK2WtWabo+#1i#{ieFBclk$!-KXeTj^3$k1AB2j&QDR=H= z({4&4+cDgXuzjR@l4+0tcX8~=BMi7YCZB_h9yFE| zZ+F%VQMD{{d|-<**(yh&+5q^#nu$${iR#FqX!p>;h;eF{g&MJ14)`K!-3C}YscP6ETvRj*&YKBAj-nR1P9hJgJ~(> z!ZN99_shka1_&3gjt<$%$i*`Ka5||=p4OWgAFNN=w7INht{Rq~yW!?8vJ1Pg3&~6& zD{+#Z>~}Q3dSk~Hk;x%j8L=M3yR!OP9C)h-k`$D`Onka|*X2=~RV(evC1s7fE+uQ* zbt#PB1wddIz_qnnXJ-PHMO*VP8R~4NJxnJLnva2kLNgDa6XwC3{og@^U@xlzD*)+oBO^Y}Nn|v1Dm{C@uZdyL?)|955BPY7uq3Km7M)?`3^ka5I zs&r<)WCuOzqR?;dk~6y)pko+T1?wjFMBoDGo$g>Xmm^NYeZ>nmS4Tj;2sPO3CP@N# zgBBFPAJMPO&M*Alg#;KTSw<85t_S6$6kiatLPwA_Lk}Q~+P7B-k`-r%B-D_1G|-Z81%yXf=&E z6;@LCM&uJU63T8v&6WE6Brix_o$v;*l%||LO!ds#>^8d?)(#oW0yBuQ9jq{$nzpWC z0p%Prv;&_6%?l#4ovEsut{XEue6BCg&z4C9#WWX*rneiD0mtLNLoA8tir6Fp*KRYC zg%i!r^}$;8A8Z^xY-<8ePN>?^{(~|b255rz3k%*^`~P@*@8`CzEZ_J1tiJ-&w=|Y| z1PVFuS-yp6b6V+>>KvMMF=WYt;?0j}ud97`; zgFq%q5dEDI_`~zbT%*M~N6YHKk;9dE|V4{b&e{-Je^O-9LwFm7>z`O-t%5s@Wx+lST{?f%fZvNU*T zU1#%IMKkJoXe+)Sr7kji{)aXL4K|ygR5ESvLmM$k)m|rNBQB%;h_x}jynHv z@!;wBA|s@S_I`wf@1b?SoSiuT$pWagm_ ze3a1hp_SD;N~wod|LiotL#zL_+K{41Js;Y)1UAP~6hE{9L$H6T1#x$OsR4Mizf}J( zRSt~dL#NNM)n9BQgY}X+|D}=WAYjGy&^EM`5?(&EzHO#YsN2pS+{AKvG8b?7@D@_c zWy<@9eoBUnn-g06OKnAifr)7AhYkqU`bW1>erOBe6+AW`TKfvE*@G(^qiEF8?7?kB z6SoI{!2DBCu0ON|+unb%4FguN+-|Y`(2*ckhEe=$Z3uKdwEsWx^0&H}gGk1@CN{PO zKfTzJYsh{Qv-=S2iX?(rnK>Qdq%9%2oS|?u*4t6)Wn}6xB^9iP`!{E*Vn60+jHG&T ziIW2V4D=5gu1mt4d>y#8gL;&KrhX9J+Am)be+%&-^m(ITdWNMo)}KlVPa}JU)IKHo zCv;YS$`JB&AhYVh&5>+`llNv1vXUr3{Ue#2YW;jN?fg3iD*cYUAZNU|kCdmn>mbk9 z7fG2A2upr${O2?B%+eB#n!nC5zsS8VQ3ig@y<@tNfB(+4;op^x4Goo!<{r+)%!|H5 z&OMQ2efb@2m(DNF%YS0;iuQUrzm(CwT%(f3(tePKUw=$Rif5kStk1O?rU{Sl64%FPvo47* z6gKum7hQ#@2Vb;5-ie|gJ^DoD9e+_|pP^h^H zu5XHhH`T#>{s%G{^Q4k$>_E=4G9Q@YQi=f=rZ_RM(2+domI|PQpcbuZ@Dfm?dux`x zm@Q}8pgp-v1oN5X;1c7Wx&K?pP>l`A(%@`Lw+_q>w$MuIFqa@>lK0@kRQIV@TG+7J zJG7cZ>_yKH-mt0vks+C z{PN}m1MlFV5ly}^CR@qaaySKVP^Ct*At`6`uhIEI>(EOj5_-$)(YEE}gX5TO=zj2} z0Ai$%mwt-V_dvm>@91lm7Z@#GE{@YQ!Tw&BK1nm&TVx=9=*^W}VGRNW2N-PMFEEGG zxpvF8T!NsQ1-_EZ!OJ*QTS;Von17LRD;c7#tZ9eYFXL-^0@4(NgIJlS#t#k&3n{J_ zCNRuM0wsy)gK>1!0k5X7zGL({&(c6~*$a!8z1U2;xA2=|98;_-C60pOjqDpIM>kl9 z5ZEabaRVw-uZ3jQjY0e4fWS6+bGkQx3yWX^HZ&8lEaFY7?o?DE8vu5va^JaL$WS#V z(rBSY3wYDBU}|z~TyHm44BS~LfKomPw!%>#rtkESy~u9C27|IkJI1MleQW~L#SlD~ z!3;94uspzO@CE**#bmh@+?=gs(c&7_l*-Ifn*s^Yl2-_3UhCoU&fk}hcPg{T%g4u$ zAD^C{O97qySI(Dg;&w9$+aL3p)H-Ko@q_dg3=w)nHin8#6hhU2jii`#B}i!s`5;s! zYfM|S(zjLzHLO(*9(EqdNN^`S0d5I}=i|G+cx|zfbbt@Ar}NZTe8>SuVh#bI_y=wQ zU{4>-&kcCumi5VJ!1*PCD}tpx4wTfv{PfKUzLBg_4BzsGg z0S7HfEEwMMjzXDuhR~J3s8imHHukD8UC3{MCwHP7i?`+N6vu}63<+_XzRbcd3p2R&StMC z*hfIH&nakAE3%M2J-ir+xGQA*V#T3fMKzCA73*kR)95df?tM?laFv6} z9+M)GJ$mjn^Mwfc?)0%o_zL%H$G!1pX0HKy0pX&v91~3VCFI)yfVnHAAw5gIxjN1J z6usls^!9q-8(&>qU49Jvl_k5d#PQ+_?n@jLk9~>dyAaqMB3|yXeBsxN8}~#I@mivp zl^S72ji#N-H3gGE%u21c4j_C5`-P|^vKCsapUju#(E+PAot>X1$lsHz*&n~~bBQ6l z?+UrWBnNJ}TVz%AQ7f21i|05Va(lC9U@m-?TS1pBgcc#kPL0`M3KF1;ynpeUQ#3vK z{)u*b%Un^$ytmw$nNP|iL}CVgqQn9RiI?`oF@k0FXZdl5M-RdZ8SFVZlC0r($tTadu^XzPrm3c%-b9^d@127$-$6ofAd8K$aO1!=voo za9t_9r!N@hfsL%TVzgmKCY+KpwG~sH83?=it z_NACO7~%9WHJVLR-hRa2OnddKI8p*_g-SXAxo7abc@5ej$kVi2GR!tC)L^}iV5|1b zl9jG-&4p+Z2d0jl7qcfP+B_ASlROz{3#YuAF8|Q>bz5A;bK0<(x3Q7slwC}tz{xRS zT9Tto$ZFC?$ULBdhqKc8{BxwXguT-iZaZAF#q9jMYi!uT_?r*fyLWp- zcl6uvZH0q+cUyL7&1rB$TQPEpnLu;y&2b8GhIRo24hE#=k5MS*!5nH&w+=9tHWR+P z8?|CFLd0DIbs5s#je5EJwwjlP+}(D*^nH5(`&mGiEI!}e{jAryZ*P)CNGEZ3AFX^4x1C*JWNK-!obkk)Fl$1ezF9Sx@r z$3k#e$d*KpB{-5UlEoQx$?$T4kIILeC4hr)&L&jQX~EYGV}5L!&UOfcx4BG~3ywR8 z0gnVA7xZwlNTz=-&X7MUyaoRn9RfPw(Lvsu6C*6?-*V6S_h>qsOcf`ZFu0#VrHa9{ z;k1wB9$fIvIw#hEBr*=Tf>-f|nwz|`ZV0(6fevuOf$7$ML#OYn5zJ&nq+=|_+uh!I z0pQ&NFrlki17E-}7AEE5^Glx(oQW~~wg|%^#pMq5=Ghqu&>c2yLAVl&IFk~1(~!8Y zAmGGJ-j7DRg4qmhvpv)|uka z=333Z*eXDl{Zy&VDtZ)bEG!_t|H4=a1p)d>g>Z0Ambu&ANdRrEWVm{A=se+ z0-;?eOFMF|cgR2AR9l7DdM&(0Pbk@mmkbP@h=I^&UR|Fc)6o&uj+K|?fxoeDb8lGV z2DzT7W{-h=vK07oqMN*n1@tucV zh+^wp%Foj)dGNwyN2lK;^Z!kj(Ze^9M^@_Z8`=?W$kGrf9Oqu`VheNpO)?)~b2k&6 zhb&pWn){PfEJR`9AS0FkL&+S2^~8H`*`T$PS|C;3p)7?L%Slqx4UHFh=2ieMvQjO-=#K)&yP<(p#1f?i4)W#69r8qYCj51V)5@(+aHq0ADFUF z*cn`%BwX2&JU%_qaS>1-ME4E!MoN>Qbu}%L>neggPh!(IYRCx^k8p=h`Oi7vNl?W@ z&bt0oI?{PgndtdTZqcu1HGF{*`BbOKC=h+Srun&uh%Rk_D%K-T=U@| z2>rAmAYLhmn8g==nkQ*~FvO;T6XlgZlR){aCK+Hg+~ z-T6yiqOHkxZrsM_UW8tZMf8X4D8%~eP#eMD!w9kj(Kavh*@c%(PdD+nMuk>%oIC+g zgUmiW&%y(Jp#~4ztj*Dq1YW_;wh5##a26^6cad#U<^Pt9;_plInC$CjxLAoC=VN7AI9WMgE7S0(f;8c;_&R&hd{ih#F4iY z>Ah14nH5=+K+ediGmrO`r7{};tgc*B4SgAWpEtU`hq@8Qo|%B#y#CAsK4iPxKoAlc z!F-`35nd#+S!qK_CU;yNzIas&7cf~`2=9Vte6g@;3-4L>Q#0pAvF^8DY*?5DLr-(q zHox0j1`#DHca_h{#oyb>EQrO^B$JB!Tdsyn%}uhMmRyyo7jtvc^<2hv4EX(0q4~V2 zH0>R5Kcu};fN)|odWjikP9FyVlh29=o%6squ}9dm(bpalVXVvD=73c-kq|EHV(5?2 zlgk5X&fz5vKcYkX*YZCP-n=%$jXBk`U`5IDGoiX1&1Y&dI4p5W^YsiI)i$I8d628& zc#jPNl|Gi_-(-fmlqW0I~Gq zg_$5K=v_LBjRl#Q7#%MyczJZC7|v_y0dek#bbNCX5GN>+&Q48OHW3|-bTn-#HbHBb z8r{Ymd0fVY!8$Q3gFA|pKNFXe1UaU9y9}DCm7Go8<{M9W>Z}V7GJ99W52i(&7_*qw z&3# zUn7n4)#GgM5C1WF`{v+qG8&IDBs|EP-CBG&8uVUf<*twBfBx{IOk4jP?Z25Ea=qJr z@AY6*`uBe?DewCi)&E$}Os9Z=?$~lN_-ZX{6HAcN4xi_)k!^*Z7ZWeM=?-DOYRxOpit`n@=P4LYMgxJ?`sNTvoDF zy<5p=0ui@o=4vwH|JYh{LuL&87dowWioNEtRe2@5=NbtAmU^pD)l?B1b9`#~#6tP? z`B^QI^|qQ5`&v!kw%96{Z3*sGgcrB#k_1F@Iq@Wu$_|an?cLo0Qr{=8WS@ArgQr<@ z+MCQ36)>kB5nA^gs}@GG+&h1zz5K+s>a&u9spP8V`g)tj+7uq!n>|^~as`(_*^84W zpJh8fxi%;plIU`x<6lSVnx3C0C%;vG*M?%YpX$t!P+d)^WeI7;%Qxroi_1Uk&;E!n zQGT&E+grX~oU+9K{okc0x|cBK7%0B8_LHZ%Q3fmPiA1YAw9BB8 zV#o@fXt88lm5N>nBo2X$T;k^J&52DJMbg|?A#lkahN2S_m)d5?cdo_Ks-j3yP@1(Y z<`+}C)vP@?56hR{TdtT-FEL2%yEJ7i_**QUYL7;Qz3tM+d)hJKA(kDEkCGqlJiJG}$1M!*JqS&j5bHqN9U7HP>ZR_K&ff^L&yD6E{x$xGx z!kbfL0cPD59WjA+N3@<%ruRF^fgE z#RhaG0eM7V-k|sv1a>pZc7x~u*9nobFqMD8ko)uY8fN2wQY)>3e#D+*6&FY+y3$7e z1%X1=xep12pj9EwD}@))tl`lJk?;)J8=jo#M!OXgoU>%`(IA_T!3pFB+m&nzUz3Kd{UapG(zF0C!LoFyUOu#3zUGvD)R+0e0;qvQ4bzwVAqhj;s z)3toYAMc6Tx1#Cc&5|4vTdo_Z*(0h~`+a?3Ka$eggI_>lj}dOMPGYsNLUxA4GOvAq z*>l)np^|-#JrJp}C*L{DMwF+8Cq@e5|eoE)T2!QR+y z4LuVWIfhRc;@kqm^VzvQ7dCS~HwSwQ$$5~QW(Wf4GLJocx3XvE2gff(7L}o#@=aZe zsWvD2t5^%Ox5nli-!FSb%?4DDd1uKIWCP!z`o==!1e?X`jQn;vDBRZR00QS%VA&HH0MegB>Y387ua0rOL&DZ&zMkSYT zuH;?KiCV~g5}2tdxDAS7Y@krW8F0P4x;R4h`c;mAS4g2XMN^Bts4q5~CQR2AMBZwd zlG`7d-vjwXU7Y)ShQs}x-RTiU(&F!%UnHhU-_vK!nsD1@Fx0bL^GpN0`FV1)>H0}{ z^Z3T;t4YRcG1J}}m^(vC%|pfb7AnS9uNdDvvld@paZ%nvO_+-%P!5reY@6(96YgOG zgGI_U*Sj;*T5djb9ZO{;-Kah-%x2-@W{i+SWiaTT0$j%TQS1UM8q2Pi4m?#$gA6vg?>Fg^2pg+T`q|XR{JW-td z&-gU>n>j*RMfo^*np-jXv!fJOTM6qdbgNemD`YufUWpw;f}n7CWOl;S%wn`B^69}e zgB{Gc^}t83&`%LE7U#l2M)VbRT`q#5YZeMJELBWxYqVf_Duas%Z*vZ)X`_%Retg~C zf5R9H&BdltPu6c}D1NMvrvTEH&(xGEd+UILRh&TsYa^O*7^o=Oh&FsjsFs@QXXYPH zC*4)igwe(R45Ho9pIPY^stNI4-ql-bubU0?$gs{`74t^6g>FB3q;GeDysMRU3b4@D zB3R|Rb(2wuceNO~p6jkx9Rs;prc0x5iiMu36~ zymnXph;s_nrz!jC$nma5e)9XYa0VjqZ=t1d)7Au2Ua~?vvTi6LGnk$V!+wQ4!)o96 ztW+V!@(4J|2_yF^C@oJ%9OVxUc!dP#R^`%zMN1(kuo(HmncSvO(oRw##STd!C1-~o zeUaApWT8gfV1-0;fheT7Em|=twGJ|~gF;^1FNMUoj)lZLek)|W)e}+$T0Rj|435sZm&iH${Tk||PJSUFSLBz~ zA|b&79gLuI;5s0z>}njr(f7?1(GOi`X_h^@IVTC&d$2$7;%8Vf>J!XPC;DW$sSbM( zB1kv=iQ*#)KLw#>)0+vo>Jw*pm}2?&nDQ~+@#8N#e4syn0onQk<6C39WtbtNN6ec( zV6A|;?QPAapFlZ@yx!i5g=4Z-jEBzMRb$u(W08>tphoN=okcCXrKp}gU>0T9*aZL4 zJ(3rO^}QOB1u#<`#bCvooXu-2&5KqL zp6aMZ5^Y^bJ6q_wDg&tRr218K8qnG0;RSnG&+rPT&MdwO9Bg`NINU{=h8skLZ?v2x zs|lJ-?*Tqgf)<$*uFEa#T|!K0Y$O(nH_{)N-Bbtwq5C%c($tWAth-slv+CGMSgW$0 znoo)JQ=wW!gds5!H-$10t%by6_?;WwFCb1`^A(=NGs0bkH<19@TSUiMN?fD_HVsI{ zWSZ+%b~i|xlA<*6T6VkY&zNy9xB?+u7_V3Za>vLL&?XcUqUS_b#5{iDJ$_lT{Gr!V zt?=4K_2xXio~k+2lx2+uTgzbaoTW=Li?bEf&qhtM~|nFH%p%H@|m1W+R_>V{eRX z4FAMe>J{EotcRn1u8dJyZ_aZm2RQzOCbI#>6pc4Nr!5MP#ze%I1jhQxd5$Tm@k~t6 zj9?QZ1Ah~1=F$uA-uwOyj-0WGbO&K9euVh-Z%2kil8n0s*K?lSHL& z1%|`iiN_aLpSj4yE|#)~IfM>h4(V~l^&PtGZOvyrBnL}!;CLF-Mc4VLh8rW9r*=l< zB$&+46k-6uj_69eOp8ZD`8{-Q)Dzu!PAnn4V4I78N`h>3;270<>SFmy=?d|tLLV=# z{E&_2?6~^b(YVpdqtL@*&!iiT1g9Ub^o2rkY#YsP1Xo)=jT{i z9U}zBI?u_B*xvPC5W5)LWw>vp_()%#cG*lSg2LY)k35H z-ljFEFcK0>N0#7ML6d>A!u*KfL!13-FoT865j^9HD@Y|rw`HDRDZ~aeP%d0d4}I=u z5-b<+zQl-qf@d&h(Z^90N5|4QZzzJ+=#BF_9p=z0FdEdGCcJo_E} z;7ox-3TbM=AhW11ijGv0-%ksfdMP(yTLe>S%yHQO`Zpsp_2x8&JaWN?-!^f;gp+;@iE7FAEY$v#5+Fph+G-X5Pa8{=V~f zBCQ=KkB>|Gclq1n8sE#~Q3AOYwn7;QCedpd;10iVRhE5hl#pVSHoSn5BVXc19cSc< zGeKut!k7qgI20r{Bqt3~%-{-Pk((ZQ4y~TuzML=M46@&Nn@>+I-uI9p+j%(%E%7ewo+)uMA@C>PpIiD(0BlR)OXJk&LY3g$NX`a5YvMK(F&J_8~O=)SqgDP8d zvGj=fGZD1|xqt+$h(WyoIpRJ^Cz7R6S+Qic-SQbo$v38(hAPd8vh*|o8e4a?lI|M( zn&%WOJirO z3Gn_kdV2xYtN&vyRen!?6Q>42{Lc_l_@605{L8QZbgon~>5Fr{1`9_$9xuy-e}=lh zhPuBdTs(L>`{mb={!2*z12Emt zCAea)G_W)|V_Xnt**4V8C{x4A(ZcZ~aK)YHHg)*8()p$QxYDqHzVKB0MStl-Oo+eu za7{0NPX7E@KKvP`7$O87`OEvnbU^PD+r01L7@%t2TiN%q)Z+X-vn!k&H3;vMckgW{ z$0E}&@4TUR-q1U5=$$q6E|yxHzgubOT~hw9!{qY1{Pr;U@zr6nxGwJ=Q7uJl;?KH7)<=+hn-k8@wqJ**Qug=Ws?D`JHJl z2CtLXz1Pr)<+m@jGk$sXQo;iL09%M@Mw(`yg!fYv;>6S-CeQocKCYQ1i;ljy{%%Qt z)R!-HgrXz6g{2L#HX(ic^RE}|r<2nQOz{AS#}-t!1p5;Gj!P$Kwup6v#KE5AgCvC? z@kz?W2uCt-d<7FxdUa4z5Zxbd>+Q(GIOQA1JvVFq&X)Is!B?=pxRGpO2GwHPm`mj|mkDB#Xxluopo8@-1-Rv}m-Fllsqk6wTs?uvQuOx})~6PoYY^T5EJ_opNK)WlTe!y1h=V+-fz3!{Mmit2V|- zuUDxLyMsD~2DH?uSIfOhYgDc^$Mp`~bQzAeg9C~8y_fGs$xm-yjg+>+OhrXcB$5o+ zx*$3*P*J@jhc@>Pe!2JKPluDkUjOB7ExIn|KJC5fEAslC4SvfIU-b@0`+L2YcQzUb zn!xMaXSC5A?N#sXTin<0?4ckfy-x=}?HwGx+5dHaGb8fq=3tc6 zy2EO}Q)`zS)xoITXb!66vui7@PKy)KtqyymWY8J3TBC8V+^-MVi}OmQ+-)=}MHI*n?7(5NsnjzzgK?aV1OYL@$b&e^clt~WZPq}%8ZdJWD`WjvtIdUI6n zHpks^t;S}pwa49ljh1@DX1_Zglq+@vz)(3~C+DMypk|{U#=5!%jwO zAjkpH8r7V)=^A|}zdOJk-zR!Qi+NqEXyn*#X0~gv>DpkDB1|TOTCF-Bw1&)mpYLps zIK7o#uiP7SMuT>zF{%%TNwqo})dtmZc`RVk7_`W54~FH@pwq0^M%7WhHcT4h%D5@8 zRBsL|2|xFa%)(lLbt0`Cd~8o6bp-_(i+!m)ebPKIb!BcTF2!+vsSJ)nw|Q% zG8(q~6sinb)pny>9yaQj*Z1vi$ zeuYA#!LTwOGGnz$2O!>^9hWH$_8E*pJe~2l*Xk!U*{w7Ze4uv@WeGXQaBiv-YYT$%^4=^!m4F*`t zj@eQAx(*1eGAK9uRUyMcw@gR%a<4wB^afQXkwSyUVA!lTX{o{fZM3=^_VKvM_NX+w z?Ru@zuJs?XUcIP^C5Ol-mQ) z8sLU~!wxMoCGAS1GOW}az2tuvq6~8{{KeH*ggW!j-=lxIy8dBnb`Mp9+y!6j1Ko>_zhXi{$&{NY`0jZrsgb;q?f zujP8B%E=n{djfY=NaPwh&3?Xj1-gr=L15*JL4PXJIbG`mzh=OGkjhwaxHTTszz7s7qB+BG zj_ZWq02?@+YYaI)Zk21TD&1AvC*T_Z zXSE3*(CBp=Dl`~DijQi7sRL-Elj*eFYgT&YLA}@NG`aw%S~saSy0u!r-2+^LbsHy4 zR;LarHEdLyy>6=x)}y;ltJCj-wQC)aMPt+htyCBtv)-+MGrH|TCuy|C?Pe3`KW?;u z&Yh#VK4Ans1z3iwXmxt+q}A^An$;fj1l3h;^ugdXIfN~!_Zuy6&bZS~7+${$Jy0IB z+kD-$HD`hPjWSHma9HhtfZFY(-Kcgu^$J|ha14AsVX3>VN*9`ej~mx&y?(u&FnuG| zi7|DBF?!7*q#FE44f?8HudqQX6sm!*d!4p028HHgF#5bUT6K_jr(SCgTkL`=gWCh#g0 z7mL;JP^fzXvKjV3zm-k}WX&;XQ>Z^^_Tcc!gHfIBTWy2tI#5FFGLFlj$4+l?S|CLS zAmtYLmbL4E$g4~ybWytpBRA^STFJOk18G6`)~X}ssl^%S_PY?wgL<<9_XxsoCY7cT zC`h?kuS2_cXG~@nuCxNR*Bi83Jvc`l>2EX8d{N8UXEu}3uvcqWK-yI{1pBcuWW_-F z?ItWDXR_67HIrti*X%ay?CiF-{}>3t#$e|S8?{EI(e4bZ&8Y4#Em7@bwP8{KSZ~x& zQyF*SiG^gaveN`^L2Jj5rD>q^qxt7+B&p|woRAEwiBdzCuQk3jlBx)!T7Oio*Be?v zj#zKhWoy(292vNU&bX2ED(tioWEJ2@L;@6MpC#ll*D4jZdZRUJBy~s=c7DA)9#vRD zPF}e?gm$TRn&Zk)?Ws@&>Z;D-!cS-u&tZfr5OwUDdUMcbzw{apnD=UK-Ww9uL`A1W z=DnrNPFr+d8x5e+1zP%ya5_h}&_`@AhLHmv!s;{|$t{wO5Q>Bd_|B=U2sujMmzdA? zxYif}VQW<;wJ~iUL9*335s-bgS`(6OR8L^I8r=bOV`BjS)?f|T>|)|t!!FR5V?M0I z=>bJKW}J5@uf|D}6VdOD%S{9&l?rFPGN=O-xcJBpiFv6l9L;vlFHklfQ*(7)E;Q=5#CEeR6?_5f>>{QfUv$^&z|maPx$t z2CZAwnIH85C9N9sz+a8ODu0z)KEM@53Ze?aho7YCY&4v9b5(7JDjN@AwM1c?j}=i* z#vtdJ*~lah5Xp+;Ldug(lr2T|eoIjeOL0eWTZ-!XQdA2|QH7^vYY)0r7+{ck135yu z2WtYBWM&7$Ruf#4P@rCEB5mlhj|KI_l7Rp_m8$UhxYzGjlR>Y|CI&ROK_RSH7xssB zERUctK*xZAp1K1h!xFMykQa^W6c(BlEYm@ib^tLHf>PraDrBOveOe;2U!Hs|Rla{g zI{M`A^;7+wC_OAJf3<4T8df+VeU41G!&X58ATbQUtN|G8x7+@h6P%_5Ws7ImR7(~hL0|V9o-}Tw7+-ot~L8s9hz~i;L6gsO^zil7c zdaY~~0VXs}r@(z(&J(l%Y>kQmbsjd=$~IV(lzggjDF?cw4V!FB15q9sTexS_?^A zgG3%zku}B1r1#>OdX)~+c%=1U`YnZ!UXDZ-l}AWA(?U?6`IZ_;&4!I3g@7%06dK*9 z5CXotTS9VkcOlrky9=SAxVup2K84!%C}gs%yXFZvefO9~jr$Y=df)kV?6-Rqs@z(r z3s~)TB!23`aK`<#vQ=7@esc(siqx$I0UnNdqqv_!p}{>0L7U&*5^~CW6k_0aj%mPT z-d%{vyt@#Sc}t<@aMbFf?1Es2Yh<1TGpj4}6beDl-dzYxd1oPsI_@q6WqeDaUbR)L zRbV%&t$I3esObX0fCC?P5tfz*=uJQi90>>y1OyFKG<GXhUl^!%sw_2l6vt4hu>PYHaHN?LSdPiu&cl3}VAf#o%S2i6az3c|1u zpeV#>Mh>fJN;z8t1z-~jMt_K5yDmCG^{;+-bDNJys{Z|KqL36{zT((?;+~3%JZ7~w z-wa6fCW{G|4lNd6p?@||GS#h=jPZ<@I_4fU(AK)4<46O! z?R~sfXkspm*gbBo9=k5qzq8s(ulQ&cC@=QaM5;22%t?S~OtfKOHw}V`FARa1BhG>O zV#eT{8|!Vmo-RZZ@*5#>a5t~2sMsd(0UK}0+PIKIL+WwDM&loU+WXIcynOZg&D;NX z|KRZ5`=2rEnI0V@1NrcA@vlEl&(1F{{|kQ(?kWB9^-rih`s+fx5FNKI3{`fewY)xi6AFCsocl6OqQ;zxEZ*lKA#na zxrFgA78#h&BYEeddRv@mz`K*I6%TiAZY#fTk`OkNnTUs2KC*bj@>XHyZN=VK=m5>Zf znHE{41-oMFIyy_6p^23ZI|Nd{dzW#)H3aEu(pLv+?a^)OE0i zysI5qOl~dXn~;{~TS{fCg2}f^he`J-8 zo(srsDIB+kj6`FP+5SikG~=>mJ7sMLtd)&mEetGs1!C=pHrQ9}fOrEk7$Uf;m8QBA zgSiF7@i_g$qk*%XE$yH)qr0_9IXivXsg+Xh$A%!Fg&-66FI0El?E6_@`Pn| z){(adnlyZko5){jEaH;@^p7R~l=L$aOA+W>26!zTDqFer!dY@w)PU4_(JUESAb1bT z{FTjm37qBgIm2x7e~{)uI&l6b9tPuEtH4HI-m6|bL+AKPSmcsGFQ*=rJEixs_e|*# z$nd6}gBYRtXgHSgIo`!M0wjhp;h@jH0TKWE@`{W2bkcAE)qMn_*BSH*HY}1d+V)%* zY$3DK{duoC9xvJ)=reOq054l;I&ualj{`wW$k{2Kye<$8xEbRgh}*7v{)E;Y(g z7T&j(xyM|)#RNwiI!-aRa^o1A>!UWHIR>&Fbg**;?$NxE431~CZ!V}0s2%XqH+9Pt zD>%+K_7);zff+0^R<6f*U^s}c6ry1eL6t|yHZnTqMQ6dZjKM^-OjteR9$?nk&wI0( zynsy}Ue@_0LZdqp8z~@20IK;QPS=mQ5R#QnQ!~t;`t+|CdTAF)Kr=0_OTsYBh`bBV z1!A3B2uNv%8|nm~gJ#!#vE|BqjYmRhdL)dKXV1CV2TaJ;Wb6t$n%+UWW3KX$!bIgR zp6%EpV9IDXupQtw#~!(lV{ltY1H=*r3hcX+q|0G3X7bp{vftv*sFjnSf9A4nSqyQ7 zBj2PU*vK7=PBiNsC+R?dnbuia%44t) z)qbTwMs1yQ)e;M9WS#SyxmeXZC7i`rbuGMbH50WH{6r=Ksee#SXl}2cd2oBo~wJC@*#)sA|5?zqa9_7@9w_i1X)BhT(^PV+V+-Y zw?q9qRsb7POZauO*^gOI2sE8R8tkS1W)9dOoqRS;>gCK$Rw>9iLS1eZ$pCeVL<|Yo zIylj#K1J7RYG7we?^`ad@@ZlSrcNsv3t;m>+IP^IbY^TR=n8FO z15C6Z&$4mHDAlsb_hXb&61kjwT2E9P12>Rn1aG?Qi6yl-S+MK$9bj2S4^F=o@DyT= z(=cmbew1l|7?^Hz55y3rwLlO;oEr=~QBxE<$c>;pxD)#L(fOd+QOJ4L&SlX5yI z0Bt+{6kfxKK{{~FMkIQ}yimktEKz{4u?X`l=R`-W1Pf6EZz51+ly;0cQmmp@hJ8eI z5-pI(=9uqs8kHJWnnsux6Ue~CoS*A9;Y?NSEDxQS>3~Zz)vf#7*(3yFo+b$ohlbmZ zwmbezIq&ZNV`If7aex2Ke(8VVJ-u7fO~%U`+=%Q#4U5349uD&Fx>Me%Lw_1ive&~vYo^?q3>M5qyS8c853W;e6|xb zQQTETUuhe+Q$0?@M>=qWv@UJu=tea0mQEsS^pK$l^O#b=tcwrRK4K8&!Z$`@3a22Kq>hzTrY)` z`qHMySQ0^Cn80IBpn#(8<-8>mV4^8ouem<*RU!9o2`7$f3xuMpHrx}`4wBHWh%p2c z9~Z}x)y~h5)rQj_0J)#Jog@;Wn{zjgLaT@%#Dx8E5TWDym9N)g?-`gRyhk(^bgphE z@qjAgDwJugULbM9c?~!vBu2ean#y2qC8o8zfLtQJ5Hkb!)0&oJym>LncQdlg&JAOdlZSFDV))b{Q*`MUy$W! zplsKCnY-pLeh|*apuX887qchdOq?R8PV#qOZYpI2`L;r_#}9%7n`)t`u)7OVVrwJWkd3m*4LOb{1?Q&w+4R{*SdMPZbgC#P zz;kkcLq{8uve7|*ZO9LcN|?q=4rk%c(Ol`cZg|ct{)GQy(l{(1&c(6bRY&LCZX&#Q zjr$jr1?S{sapxGsCEcf-6U}#i5#C0eIHMIOM{~%{1v<}-x7g;O1`OaGMHFvKbok^? ztfucOoI9*{6}8=~88CDUfqPele-S(Pt}@xh=y#PA$+oRbJR! z>vP3B34~%X!>8zp3mulPWu^gNB)v>t6=dqRsKGu$IlaTpOMY1~w`J{?_C2s246OQ` z5z{6zCJZC+`cVDSq(_a8B(?c2f(|K)nbKks@mo>Ah)Xte>@vi!AQloPfejPLsr>Q9 zGQP2uxJTw=C}y$<_uQnA?N5MG%9L`?*Zi{-4!WW+1R47KGq}yCPI2y*`e^r!vWq;Q z-O?u3JzL4m&>};DCU7u0m$Q^7>{7P7ZY9dZ4rr2ZK4=FoF_kDSP8cqnnaK!@E$7Qm zZq5x6>?A|D-G5`5KQEA*e};#*YvO{G%X-Sn#;bcIKZ_<7M{};hw6i0&7*Z~Zb*82K z84CbSe2F5H8Vj%K&lbdHGDkHde$L;~W9)PkFiQ&Z`3hf1I!q%rqBE83UwILJ6lU7^ zl>D~QfzQdL{LW$K&GD(NOQr-4<^n+%Es3H_vW~?+?v%!-Q({tvYq8k4TUya!AfUh8 zE=v)w<%gtvzq@Fq$RWa%lN(c0v*`R01;wlLI$o5Kg-W(|bS>!F}B`DgG?nYBgBVMJeTVLTIA9S@`Zh?I#ggc(4 z2e%!tSBTaxHDfS#3ZUTiyZ!z_;F@N{uT!-M-{ba(>72x(w|>5H3qMt8TOrnwL3x|h z&5iY7e!Zd(2|A7-kaHd@)*Z=is-&$ z57^eS(|qZ*xy)b2#lcR$7{sf4wOxw@n2J(&e_aVbE!4b(>i0ZWy$6s6M=O^g&yViK&HioMzwUIprS?TybWQ0j2NCnt!alq3wgL?S>sRc}*cIO+A~?dY`~sL9}E?|@^K zH(bm$7A1W_&l&pHqAcj@H4nt}6a0U?%#+3(soq$?7PCMk8^R04g&0yod3%*SU2Uk|q~D0KSE{UUx3z&oD_$eG zKv!zx@V$nC^B*3`9vp(`5YhsYnlRiC=^>6Oof^0N+}vI-qhZ2FTFkLK3x`R(rEoy1 zC0!D~@tjQ*#%I_&?1clzeu?*L-d=w4(+KD5eXq7@w}h>dYAdtIKcQidTopq#{rYya zy{)_g8WrPJ#7|k9Mg)FN4GT-9t z!Z3j?*f%$tP9ZuC#kI@DZ(D_$cI)vDVRh%QgaE-Q8$5s#Xgp4}S;!g{W$L?ddl5>% zMb7BcDTy@iH0EuvzCDR~#!eL5B%u5DMvrS`u2SGmpY0_3z%*p{P_c$Je=x9X+UwMY z>cC!Kn!$z|%Crwe&oh-8!PJSDhv3|M$vB%6iM&PnXG!tilQdcKaNz@hKL``jb0>+u z>ZXMikN#gbNPWp>!OLb;?)q6{Dom8gbWrcj6*^-N&>Z|X4DhOHQ?yRERC5jE-OQY< z$&8dJuo%W;g>8qr|5yWwEo!H}Ii2B$0=LCH%DhoOftU;0!R6O;)q;T&LFPA0up+lx zeg|^KmW}x{&d7QeLzKFr3yn!oM{{A&t`B%8De@1erod1*giigyZDX2tJ{YxnJ|v{fF{o@RabyPC zC4y(~4#(wA5OjHDq&Qg4xiV1&y7k?x^jUF{@H+Re0jOXOLPR4rut)Qjd6F8n0sBFB zI?p?a)r^yeDicq0Weo(zJI7aNpkh-CvEy&8N8r-i8(yayOz0SePbra$sNunN5_|q_JsRjKHMN8lQMhO?*y019mcM4cH4MrqG@P8W2EyZjsA1Rf~ZiRWcTBl8RZJsAe#tbWEW1CFvWLs z8@94FY_0=^I`@YS~ybZADz3fj=3s%+l3$sfp6PTc2B{crB$4sYL~x~`E9grF!6?M9_pq`E76V` z5_pXtF8(Nb2;@Ykg?ZI+Upq9b3}E`%tn|t?1lYT9DbAA{OkK2iqRGVV-ptBB>@8Qy zx==z2ik(D)U=?|l=_kmJ_HbT?-fkCM700%PRvXx-k~(Bqe>m7NGo4g&FX=vLUNLD)C8+2gXOuNaX2kG9QyeB68b zb)R!Qzxp3-c?`(%N4Aa3|2fPan}UnC!H3o->SY|E9cc<+Mf`T=yeHKj`o zZp%M|(*WwsFeeIj#J82sVA5@+0_nJZ`c^*ET$?a(!Cqm_l47MO3XYRI3*FU-;O}kY zj)2F2$)Svn~3P?5!wuc!c;E?hL- zDrhbcBSLO@2cptPZYzVDfv32>rIch+67qN{%vmLkFa89NE*0<5&4&+Pja=L*z2#akldyk6cC`3lwW7LUqhYWKclc@`eJm%vjhhY|VgBt@ zgvj~ZYng6fh4xUb6~|Zy=Ll#5r3Uhyx?g8>9SL;H7S)5u;qYzdoEl4~?s8CFF)c+? z?nsx*kqreanRh+NZI>q#Jbj^1m_#w$vgb8`#%3@0J#*QjX7)!=>xseel&1L(x7 zsrJGB+Q`q&i`Z~(a?-R%vQ3v6f&rDFtErtsLL2O2!4CF> zHK?nXN?*Q~FmF9)^rni5N|WINK_XYa9!g+A)c~qcoaM%XQHG{5$~25`jF`vZ&8@*Q z#Hr=02jiD)^1MJKZ&uTpgKf|_>bYb)%#!0*RBUPmUy6}uC$5gilrhu59EMy7^`-6) zh0=P>@R^vDJa#=n6rJ5&ei3-2l^V_j<9`|i65LgrvcOVD=o&1xeu~wmsr!?mHH)m2 zbN|{+Z_`;wGDQ3W> zJN8QNo9PG)?M$QhRVx3otvZ|kG(SawV*#DHE79a(T=~v!4xQ6(6w%?j+TU}Iw&Ir?h;?aHY zOnjP;gz-$xoF$nes$)X(pE3mx4_z047}Iz)1jSUR*&8+mw1#R>_7wi4JfWYI%zD~LG~ zA|Hg3E_4ORhq#9ux@AEmOZD+FZ@IFpEi-J+`~hf*>^{1%TO`kJjz3b1^QqYfH^~5y z(x*4{8f5oTFdk}4w8{QqE%9kD8CpHFz;tuG2TX|i$GnE^AeWR#A_L&Eqy1JSS1{n- z-TiTXt+PI+1h9zc7+}Ik9t5Q}8xEusVu4f4m?gPnoY}icv6( z%;9v&b+D;c4~9sQT?CXHl<#Q4-42pVAyb%aP|t-CVXozoB&|nj3ntT(F`kCKefYvq>oykX$s<`e9r}jrmF@TY0m6p=LBRP^7+B z8d%d4#yNvT28^7afT6D0*_s{WMvLR+gx;%AZa9|!tKd&mG|Cj!wo~d^U_KoqK|(Fx zHZDbZI?6?|Q2c3Xo5hKg&1Z`L0YQKX_ObR#@StX6IisQW_5e}la2h@nux-vgB5IJc zfr|Wut7u>X!j_BreQPCT*>T&HVYXiR3?ncz`qlNw8^5o>>Op5-MK-T&*X%NfS4P#k zwX5bG0CpynMRS92xR|!j2PSQnD9bKFh3NVOBvh$!aQ<+PQ=&!bx0I8zF0ODb93}J3 zQYrSly9aJzmRk`90#c;dKqfkDvsISuxMjH#KK*iek*kvHmf z_{%m3CS~*&iv`=g4JAx48z7g+7Hwky9!7gqx0TcO|BqD9yNGN!)4F&D6a)2akBq$A}R-qij z80;TTT)JR>o(MEv4ko>qFQ1uv4D913!eSv(p$td z0~4~do*s?mNiAz*MOIRE!3C1V2mM6B{p9UWY&B2ye7T-iFuG;2%0bxqjnz2k0OG6n7(HTI>e|QMiQN)jI}R{EP=ha!!20RwB* z)Gb+v`Yd9%`Ag=jhE@>@@lmVohD>NV!*Of*IT!3{BsfDM7RD*W-Cbx=I7*RGL&j~( zLFwqb$|Jcrf#0BzwG=$Hw@bs}n2(02rGnthg2b5<|b z7iQ1uhw8AO+p5=c)dv@6M=;|9I5cDpoQwAsoq|nW4jd7F;^C=!TRnY*Dv5Aa75#dJ zdsA#FLlKBFL|Yq}I#HV@omuDZs-=J1#Pn4*wBpL9(1fXVBxX0aVO9*S8^&cLQSXgPGUH2DZS2sJbzrV8>GoO3{i- zH#=lPv7*he=M~)MU$P-E7PuzRKGy)O_|ym5-{E9%542L>Honzc5sFY)cvmupXa&gq zj`e4y#W;Q+6x#BrkJ)swIIu%xo(S#Bu~< zr$PA@OdwYZzXCDk3^BKJ6sw!sLL{Ul#zFAZ6#e>yAu);fJ}!3~@P>0#>~awMI(##H z!-i2rK_mzCY%nATzHIRD`8Jo(CI3^K7eLj>!* zwT*!z>Ym~!s0o>qXidz`c!e3tEt@;$A;hJBc{x)rYdnH7uVdr6+Ew^fY-QdyJ>agb zAD-F&pC;kBS+qt^ewv)@D0c4N44n1&rnC}A7m*_NN(560rJrqo(054&_clUtbX5aL zqwD#q3FqSv42x~7HcS5ZG`TwZ@Z|CAnf?DMaP5RRcv?wXec!Z(ho&Tr_<47Ce0njx zrqq)&dX+rv{Zj;99)iILPNREDPax7m&`^Ow7g))-#1`ihgqUga&1oWdv?$kzIt^rI z%(aHX^Lvbd3{+`^Swr;xSre z2r6>pE#(8dwERh8$)zWWjt{GsycNBN`@##J6%+Ayd&Z{U{yL})!!OhU2#=eQa zfU$^iR*ca3K%|C$OWtB+Q^ErM8r#||-*Mi*CG}w`+U}Ib;!dQcfT_|Zf73sB^Kx`J zn!K->xxkP^{x|mX-{fGOn5=(UNDNI|QDF`=itg?%!?CyhlbIPj4)A}>mb(;_^`^22ovys+6Vb^(uyPt3jZD(g|Y z^kf*^RDDc9@D3n3HC9y_7+w!S$ukyCnuAlNqi1BxPmUK>$b*cNY($fiN*YNh=r#^! zVQMMS=7IgD_rvguFbXgv)!F$>L62ktA@)x8DJmzij(#7Z5z}utswSl7l@W!GKmfd7 zp5A;YgP8p-;~O10Ao$8_gpskp zr=2k%AuT^IzLs3TU~oXqnU=1!H`H?!P+{iwWp{1&_fpF)yBwGTpLE2Nx&6ygF>6T@ z4y9eZF2z^FkR%J+@niZ@a7@zUVibN(rdRx{kd6Eh(uaTF>7QY=qvjcbRdC_pMW#ve z=HSsI{P5sg^u^=LXQgzvs;Ebl#^yQV1d}01pF}PYO+VU`{KO;bC__64U^U+WyFpd{Mrz+1Zrt|%T)X9y7a_O<#WFq8(^EfCX|p60*}wE@t>sH5rMJ`u_Bt0p`XeU zg1o(|)%$TY>F5P2jqgxMO|!3ilvrFNnMv)IMv8#+C@Gn}t*&S|{^YiyN_+jr4|7ae{}8P+ zCh+yhDmhQzH{?8g_-2aF2?JXckPMS7$I7a;I4PEkxtrSpZ< z0PaZx&s)+x$0XF2o8WXzwcmGWmqvmi0gwP|PLAcW^q34sYnkHq@#*Q!BMycMJvCU{ znkl~XY|MjJBfY72D(**v3khZCLVikpyd1rHd-!XZYdMT7?e)8tFAGTwGBxK(4P#I? z!r7B$%tO3X3se<_G2R>nqO|-`B5Cs@!7eS`2kk$O4ujJPJ8?-ibamPF!0 z_GMWbz%LSs%F+&_KAX{3zF3FT4{7RvXlgGMg3U`91Ruzdfz=Gbp_YtKj)vy8Yqu*d zFU$qO?iM3glRt%8vnmcQNfqs>jqdn=DM6(yc9d*nTBJiCg}dZ6_4LS{P^Z+6q((03 zXNhc(G-5KRvMR-u~H}vKF+zTMe@Zc9nPAF6cis#gKsacpbwrz z4*|VuI>;f(uH)#ZG~?mLn5j>5_sww1wyW(1uk&s>|H&MA%wRZ|;l=ls7bcNe%dn%m zmMU)7D6iFSH7a4ETn+e#<9R&LJ;TiVqFF-Kn6qmZ)Fe7XQQW=$4L;OfN_vGBF5wm= zB2Q;vVE2yfX%8KU2TL=Cx^s1)*r+y@u8ZdxJn6bGPY-mBz+P5YfZ*WcG)n@%+PzUh zvF}wy*FASN`|>OI0xM3v6Ahsyh`Q$?7USjut3g@V-+X;`7G;BNmVr6C!^?2wnSH$O zIMO(Rd1KE`pFC>J@vc{rIx0|vc=;KDwdoFIsp7&-2BWhABc%!+BuPO6}B}N zc^Hl~$%C43x{)Zc!V!m^oP*!=0X!@hp!{Nyw^Bi1Vk9PzR?`7Q=hw9i-?MAUA*h=T zA=gY0S_G0fZQbBmZMK>m^38Y`V5BP=3PKn+3Ejq5yu#jw zH|A!A^b1&46q8{NNIuQr-s{8B{_Eb$wD|5Wf~t9TFb}oUc4ya6k7@#n5s>$d6^9Gh zUK^Kelf&mh@ueCfGqGA5^-IJ^uqh87ve$oP5+Akz2I97Ngr9vs#fgxRS#P_P+NNzPxSihp~Md& zz>IS(6!|B?dsnl=xVbHM6Ai9Kd6Y7C;YdD8B33~h6Gbc1wV%RI7=`9iiM32@&(_i+ zsul<~?pJ#&zPQ00CwM{A;W+h?Hu5HXiVYV}D+lWk2Iq}Yh!5YUYNId2@`zw&iVG`% z#60N8`y-wH41&X!yl)~Ur@~>A(V{9`7YwIUSqihA50Im%fh^52&E2Doe7LJZ#XLnF z`IRUi4|$MbJJq(`Qf&{2#BY74d=pgtxK_7frN<4uRVzD<508?6JmwRZ(b zd=q^jO*-0P#{7#M}qCH6Q7c^;L}(uX5J?GL>B@zRUyAw<4` zUnl091G-f*$IWF#X=SBR4r1ftGhAd0#cFM?Zl(gXIlA}&tSzwVkCI1XngY}QC~=wx z5*yK*4Duwc@P<@XRL`xG$;zyd=@Mst(8)Yk?lDO zsO_bwW87z~L&q`4M0GwAEn1wLIEh-}EHzzpL((QEw*6uIz)EVQmm>AUzG8*W<{EM) zjCQ4wlt-lh628I{N%(a&;h)6>dkh65=Pwu3RS}he+I8a=vWM!LSt5 zm11i^6y#pURFn>6#)i*zW`Xhq_2*N#X%D)Ee#jX^U@5{2iS!T*r`XA^Dt}SpK%+YQ z-8kq#z(Lw&w4X>g1sQ^MH>meQp4EBD&hIZ=`}WkDFl>{R7JcXyQiCJYIx-~lYzQw- ze7W}xP{C9VAxpMK@-GRmLHrWlR)TiNLMsTPmvKBPUBf1I13mGsLB5uG06j{+2*Jko zgXLBj0IUvxAm&|i7po>9zMG06l$0prie}#GyO+RSR66pm&>K6?;fg5r?7vvk z1Stpqb%Vx1lj9;0mey{EJVmr4LIVo*VpG~VIYfa$C=5d^DUYEg$#;xAagY}@{+S#p zH90d`^`8`U0LR#QCXw!mDB4i2KvRg5Zw7$~~{BPTKFpBSK z>3DH?4B*& zjG2`^n^?9i{4D?3;qgA{+nJ@F(9 zuK{`I-mKq;nlGbSgH;qCMKdR1Gu>8kT&Ng!VG4@^>uCP1AulqTi2QiW52-k!QK8{S zYzFL1fDy1fLBOwPRyn^<7<76*Bn6SA_T$A3T6s*aL;3uj7G`Z4b}c#|6E14G{J$K1 z{EN^)%9C3SCD{OMU;T)ahD&X8nL)l5+%l_W6THG#3o zyJB9+gvwHq$CO8CjG=Z4DGot%MTE)AZ}*oxBjK9RP%4u48xx&hVAf>x z`Nv#N@|cqx|8WlQ80x=c;jXZ2!`NdrYZ%#}qxtn`fddh{LiDk2)@tgW>7&gxx{@Px zl4FteX}5zk!$R5{F^*P~XeyK9q{t3xdbz;8DxHRm(aKaSV!)j9$)~xVCC=*A$r=Bv3at5QqeuP7%fd(+%ps#hki{y?s&wU7t}u z2#iCGQDm~_RvsJ!^5ru^Gnvj@m{^IC!hqo*HUb2zsWC8K6e(lqS=9qRq&kFEHoo=V zC=tpY;c-=;{qM?dwNM|*>znFVcPqXMasD`0P-Z(pe)4^ZBlyqJ{+r1mMsWMR*MpI* znTztErox@iPfO$8-pkQYpy2J7uYZr? z1g74U4M71DR4p(vy0Yq-#w1K{52G|ZwQ5KuW;#7d(U)r4`JRn=#)xjrS?NEVw3U{F zt!y^hpukB_CQ4Nl;inqLN`p~Plw}muM@*DXlq%wO6I{U8Te*g&m04p>$-7?Y5-+Ud z#U-F$yML+*s{@icH&@Zmy)Cn5nVeuzW$ZPt!3@Z+hCAmVW*~5E<|L(#RTm@5#TivbK^#dM)N{1E>*6SR&Y{JA5ySq`iV3f%LHoWta z+3K(_}>c@tJaE!o!wsG=ynWHf1EP(tR;elU}jUnoUGL?|# z5Ft5+6DDty(&}7FYf&41i(_C!&HiiWmR7u?mOG7*Ayl)u#n_sK>Ty#8`iZH5vl9Z- z_+s**ghv*_+2j@&3jts(SoY~xADN&6sOx1wVJ00(14jf=7b80SE$e|(B5bFkTfdH@ zpPGmqL4jFJfV9FZp!<&7GTuCu`M+>22C-q{xFt_jBwqJDMK@-{!k&%FET~)YUF4)| zr%!;*%~~;ufeoIfLuohYd<_6fZ4hmR3PZBaVowImS)+izWa34yCWlVP>pht)(Wk_C z$K72^Ssf6xT`U18c*K61>Ce`RLF^8V_>RTbW;g3i zr6vo1t(k%*@Gm#ThLc?RuYMbYN{vYV@|fPlJC^?Hs0xec%6!o&nOQ`H+@ct-%}FYa zUlR6$0KdUGv=+uq`nnn%Je!P-4A4Hy;$Cwn4qjV?iI^WF@`v$@5HTqCLc>`LK=hRs zR&B#JHL)Kf&YHdzrrY)FAEHsak261faZ&0#a8m{a;R_=U$q7!&V}X~LwP`;=%$k>!2-GBLC65d0F*d2DyoMCVb{Kn2o{?nA(kN5lpswoeFq z5pW~(#76zUW&@zSiL#R8Z2>B{xgYl(P-6%#wh`iEo{n@VG)|b09RJ%kxEUS}& zHjABycoFT;SIwU$>Gp~$h44u+_wHZMH6sd6wW%Vw0Y(lbFPt14B~t-WgFpjoVuk|? z6R_ABbXrUjnH6?Tey_!3nv9Prg#m@-L9n!=inJ#f)&iFA&qcMd=w3DQ6B;FfK4u#jkKu$v6^;xtGeyyfLkbtx zCgr=z)tn(f;AJBT8VoKA4LYbVHmGjb8dTzrN&gOlYig=d=H$J$~MqowQ8<%U1+j13Ii@VDphc0x$Y$K7&4KY>zx}~kpUtZx9#`zl;%dNI_ zaC5fOQe45ptY{C=N>uelo$j;1WUg8JGKPQTBm_1~9%nu^$EAo%dyu~t`r0&dm?s;$ zfWK?L%~FihAQ+kZ;{3Wew`mAtbDi`K?tGbilX;RfgOZSKZf!L~Cz84k)uoA6L(m@J z20)iIX*Reb>X*kD+E~E6PKG`!dhz;nYUeQ5FQfeRG!+1gU)BPu6Pc~@-DzRl|7N3F z5udrrqQ&yXp=_c;Ztpi`^)@%?ZgDx9<{MkfAW5o$$1O!Jb{cq!z|DYC*elCIa;_;| z%A41YU>+=~F^>T7yRk>tA5o)cmAQUZ#8O({*JZuI;^bN1`czqXUQn4Rw;E(vp)jD0 zW6|nF1v$ktpSMst4?|LUhqLQNV`6qd7?i=AyUK=5a<8&sDaOE6Hn~-i9IsRgQnM|? zIY<|4Wi9z+*OHIy*KsIzu<0^xE{~4E450mt_ls~S5YwUNA+x``n=Xs@7gpo745^h$r)<2L9yhQ+s=NFP;gxKHMA>xl*EgdoXSotziOm3PU z?errJUaj>QWu+8eJiw$lKVM#0w#ud zA%NFc&?mwGgl55^enD(IUr=kK5(D+d-`^^i56NgqZxKd{3uS~t#9aDK>sBy5Q{f!h zXPy&E&<j)a zdt>^xV-UpHD^56JEpD}Q&b7pbki<(&erQi1EtRrJzv|x_N(J`}QH}*4;x*j>d)TT5 zY9LHCJYZPfND0Ss*+8-`9#+XeXW}<>N?CSGm;EA2c54CPj$NkZ6m8xO8OeoW`^jF! zNU?Zrgilen*DN?fP9zzo7IL7(ciwxmLAA$5))t+1H26a&8{{V*Cf2y;ozngYO|0BO zJ0cJ{a<5nkQ4W`#4~g z_^NbfGytYjp`pU}1>^YZ&q$ZT`uNO78YG(X7Cyv4w1M>aA(0AHG-PQ`p~KMoO-!}5 zFx{3sCA^1NC-?D!wyK&H3j2J+FdQrT`Oc%2DA^z zK#s}(uSBKfzC*|@I!JCWl@LWaH%E6Vl{49vR=MwWwbqh#?~)u5LUJ!l&dQP4maHR3 zR;=Uy{mjhszR&aaV)^|arkQu<^Zm|u&S&O3$D_5CT^Dmn4%V}%2X7^Km&^q!GTImz zIFf%$hOf@D_X28>CMGx3XZB7|cvG#?p_-Cby*1>zaDnR8aRpA40o#41ltFa6B(bOT z($__)Zl1aV)p|x1^i#TMi<@>fX(^{@|1wVe_y@2%>b_-KhVMXx zB9p3_7;2O_+dw1t)9}$EX_a^|7f(Kn129mm<+6qZj zzRt9Mrh?=s<8@6_rht^wo+pt zIz@G6nWhVfv5+o*ks~^0O4{iVNFDoEw2>r~W==;P6V(B=zF86+xe`V)u}Kt?h#w_k znrTaSv9qYV{9~aKH&#J;g`rsh-7_UEn6g2!qTKjdcG}WQ2Ldp^rOPqJM$Hmfc?}Y? z1OD#f_hb;YY|kNm;v<5#jpKSPXsUg}czN+1CQ3i1{gK9h^np|93PjGFcPgKWg6*PI z#vt?hLeiu}r4U)bY{be!;YAij`cRP_f$PKZuH*XA^Tt`)!o?KK@>$WY*-j6D_<_33gzs zgSaFBn-tidR?9{q?0upBelEqv?x6Kx$3Ma5%ZN)hbsE=DHzyY5cw)3V13o_aJcz#& zHJmi{U8nMgdJI1M6IDfh#VMQLp^dX`Fke5r6D+9Tr&NE*v`|G~a19qFt2GTNu?;}% zchKGffEk(iYN`A)5b_raUP$!DrtO&QyayKg(T1g+1bQW=K-zJWdWZHE;AOz;`ic(z>!?YE!nQ+y9W}cr?CVHr+egH>Xnwuc*KuGq=Zos9W*gP# zo2XKs_n)F6_R`)WSDrlS%I?oc$Fv<1HET})omLj_7g8!>pZ?H)-R+~#LABed{wkxN~(xg-rs#y>|e(~Aw$Uy@2e#FU)U(*kvh(=lH$vW z6>%$jm#>oGYgs7dz*`I&qpy*FHnZJHY2!Qz;O%#za^*gJ# z9EcgG))KC47og>YC{q41tuaknm`X%&V!M14BXgNv1u9P9gnm|ihgb)?HK4@t7qR_V5i(3QV*(hvKw#7--Lp(!}c2Q@l+A+pvS zfMRAdH1!!z7I#N1JWKbV(WjDVbWg|4?AUCOPKHt3@KSyw$<_v#w&J1*fGCSpw4apk zLgKZ7O@PHLh?XOAkeX`l`UG~_7mDDB)gJ_bXR=4)Ht8$W?#^zh+wY5Mp)AlOGzfJv3?<$)UirrA>m&Y+b7A`yT(cSj4^#nO5E5bOONi2V@M$**1V5NXQzEf zuX4O$NuRF9{vYPcMi}xV=>c>*Ul`b;gu`e+EiEEUKnY_JN>iaVC*Uc17EFSJR({G3WZOR`22q}>z$AB>5I zXodZx)nu$~Fs;1${(z=pUnzuxG@7+H^5L%?c!|5_{Vkhn0Mby523P_D2I}Dq%Rc2V zV%U^kf5-t%o~!p%Qo?EL0eFz)T5oW1H8zt;R);9+F(cU(2sBueQ_9X&h-7?s_u}UuB|eNvt(|)P*hi64cH<&QofxnwO$(oTv-1)WcR?@rvn)*899MB3}ol#MJt)-Q13#TZA&iY5&y*}RZVz~uMVaYCt%Dr%b8kHGpBw#+{vBEpic zoTdqftSG3~DtWLTiQ?0=E$tkXlYGetf*p*}`L36a$e_2Obq_Qi?GBQ!vSLt8yXj~- zjDJhHDK$BD2*~7X`;-DU3XtYbIDEvL7Trs&xM5nIA#9|}a1yaKjZixA+o;uEw!^if zlA1jm8h=qdj8YZ}|IK5dV*QfWdKc6{<;_W=8`3HzC}YHG8(*K74^R{hwXI+v`fl~d zDJe_r)tN?PV46elIkr6rw9C$)`dIBs#LhD_w00`lz~@uFheV}&`v5NL&=sLXCEk&2 z%aJ0M5+Z6*@ZCiJfkfR|;`T${1D4=zr@Lg_HAnBIy%QfT8^%KW{h;iJ_$KL3i_F+a zRa?j@dz(svD&B#tl9oslwJ8N!(;G27P91930vU-YmoHTmv5$wyt0EmNq>uf186z{A+ro54Lx!Mfb7+AI}k52wm5^`XrDWrC%=qYsd#H270O_V`3 z-NYxrqH(ek)76WJu`P{dI*U=1`dx*%H007f(X#YWC-fO|uw+vOb*G^mD|YFu9$QP% ztCbCip3y7%h|kiiuS8bUe_{-(BYt&himYbCI;L=?O7f{AKVcK;<~SNwX)yHu5R+$- z6yl)$@g~yVvY|4IL6j(c7F~UxxwHdZJKNQ%`{W!zNBY#oYpG`OiNU-M2I?E083T6V zmM2}~GEpq8(Dxc9vdJ@ZAZ;{JrZ>Be%P9Eq0)Kw+t3e~b2AX7x)`-%US_;)rc4V6P z`gdlhsM%5h{lNa(X0+pre?mj{Svui^dOw~3J=oV!WZ~RH3KsQW_bfu3yrmi(!Ttmw;6<-%>$-hX%{x-A37onTVe0V4$qq}>8rSpku5dV-7FEzfodW_HL zh;fSV=gK7MLhGe;52^?zZ5vTyuEG-|v|VzIEA?t>^_tutA3SAeQ#gk=ZV~ zy=5OT<4$A~SSW`DPB!bQJG;J7OeH2+mglu#mz2h`kY5ycu zVE$61m3q;+DAp-yq)VT^DM>G#<`P-Zv{9fX``-*IS9O{xeq@dSY3Gi;KR=qw4pD27 zO=?9q;QEK)dnXa$tmX1zWU5_OxdT6o2>2`lv9P;rb;jVqzBM*3WC~kPrTAHY*OJw7 zDQDG#QgpsTc`9p_xN=FHgcG-ZN}4n;sy}q^7hUDZm+49{6rDcDvEwQKKYXR{vj6{Z z3-TG~i|_1yEw>VR%yPFS%W29I$^@;qg-X4SM>lJ;C2#7=HD3~Mik^=9)2+Vjt^J#H|EeiFVO0F(I z7RZMVyaa??lH&IhLs6|bn7)Ig`^4y;QLxc9w7^`0$q#sn-bhNB&@`|w7HEk`<0$(2 z5Zf3-8H=$eD+^y&TH5cY<*kfL`3tG{;ro?z9RWoJpt`~50!-TB6c2xiNbd*!g6rCn z{_*~sJ3k6jgLqDB)phl?m!H*_wZQ^$Tb)eg4TitOl|v(0fwv(BmIG*jM5;ZSE{wOd zcj{}|tF=2_I2l2QM#keLjeBH3IJ-BV`n8C#P}(U(^^|QQ!oAymbSWGiLB)~@-{~D0*E$64MqJD#A>NBS7_e` z;dq~*MpA`jy`L_qlm*i3Se(q&&9?-Ys}gjBwK`>Nz!XO=HK*d#3DzEHBNfCz+A~SV z%<;X+kAHkkESus+@>VvMO=UaNplV^f#OPQy{4JR)46E+()zXos6P#)FSktF)zD>JZ zLouShf}fD;vtd+u>2hpbgo$G=Vzk(bglX!6x%8LONJX#i{N$p@bT72IQ4*VC5;d!Y zhFGo)paG(cLUYBXsL{&HF}W_ET~(>Mxl-JA*_0v_V(L;WD&tfuFXS{O)P|pPtt3$4ngK92S7fo^au%M2Ebj zgXM@%iz@IFRQxrliz+}TRUhmL7{spfv!rha__KAl@s=coJcRsp1d4A%YOQ3*s%&TK z|EWTvLy{N@nvXAM04YWg&b<5KNn)cP?PkmLh$RSgmlCz7639;|H+5k@rpY8MZDR<- z-71qp=##}HW>BL>*d0ihr;eBVusd^U!zA6Qs)6B)CcMi8(YSyxen*k|l3?)xI`wCx z=xtAlW$aG`n`ISrS zeaz_5QzJuP&yQ?>GIsXe`#FuIn~eEePjmVe;Z;iOy*;Y07gNbV&*Kw7i>jsdtcWKb z@b>8QaWJqRgaI1ZkP!N0BDuSfyPutVKU>=f-_g`0MvkGgx6XQcPbn?484f@~(_=+` zz@H;y%j8#IIjz@;WKQGw5WRk$6YNKhw6nEi2Rhls58*+*qWXD`w6(Gvk#*ydamIosbKg!PxwGJl!en2N9W!mdAwr?FEi~jAo=7 zgmkz{n0EBln+Y_*4kI0x8o~L5Nf<|l;aiVoAn;jC800}1$)FM(?z`MbkcqzcE(&QZezq}YZEYrK5R)%Iw0Jh_Ra|&HWcPW26Dxc?O|(&%0(w; z*@03$t)DF3V8WqJ3?UoOWU~EPr3mro6{4NUP=7j(P3?m^5h>4qBrK~lcKC2NU5m!9 zzj9{fkw#&~WKd7+Y$1jVjpeDH)4^Q%hyA?LL5pWe4v)e z7fTqAj{%4e@-C4ucoKl^^Kme+=LiEdu#?D6BfC9B=zmby<7%P?;JiUgl;f>0ZuY72U=V!9S+5+^fEQ<@*Gc>yNWXatP^r%vbf?RS^lVw-N_Pe@FZ56P zM2EHq_aow6g?`(zz7*4B`eZW2jj)#Fk1){=wV3nra;0!QkWFfb+CZc!lEQ&xIIYMK zo*?)jO~gkb4Z>3eJ;Jw;sX_0xVk)zCsJ?VLDP%wyMyOGJGvbJS?Ko9n9bI^i!CkmsX3Witg0Uj~{4}&m&Jyq;VBh$^Lq(A^*D3D$w zyl3ns&N_h$7_T5kc=3Z~3z=*(mSk*MM#mhq-$O>P^gDMB>!qotZ1DI^WAV$PyMixCH2(O7^MnUW$s_P#-$@Eh%p4>>*LnMohS=AE`hMhp+L&)H< zI!`>w`IyWTGKFNGk`d!PJDZUs=^MTD-HMTs6UOnIn*zr5@@PlB7)C7^_t|Iwy*zD4 zI@`5V(9n4>d{~-p>%%MW>Yklx7so z1WGp^nbwGKbs!~n%M_q>hQ!?;lEtxKL0&mv#$zK(_#>lh@ zP?i@s3P@gMdf>zdX&^Yd0)?xR34K{#f=iL9BcvE(2)0c`=)r~=SZdJIxF~XDq#xnX z4v?53lBGQ61Aw8qWA4L;OHZNW@HD0{TMKqAHCxuJJ+ez^9A{*m{ z_G5^IZT#bNlt}VdEnaVAy0ny(o!iKZMbU><9L5=9C6Ye`11k^F-3Lsesfoxi{sNHs z5Ee^5&V!{cwz~M zF0Zlyb$RSH$*;RW7_uso!kKD8D-g2Gr!YL=LGmi75x$N5fk60bV063!fy<;YJa|*8 z)2+GYjpa>|-~~)Rxuw>pO5S8-`l2+vkR)9OFLFGH0%XRQIk_3(B|5oV;z2V-MuqH? zXpn_)0|S51vzIP4R`^3a$snuY2OBuK%||u7yF(V_5e^S}Louphfe3p`VF*RoBM}En z#}#Fo(O{8EDGW9%dZK}hc+!c+lbqYBxbdJV`>hDyA%5Fj<>ASw9_&?(4inm2 zF`8gio9$C%)nz@=qxGZeEF)=3WFZx9wO8t!xCehOMPD?*&4 z;hPXJSxkd*gB!!uB>AKPi!r&a$lyV|NY_r1TMRBR(70V37lP!24@8z;EfRLqF@BjwAV*&kEC2ym*BVK7{ z*Yx$IcLIJR6eW-T5N>oHdI(4==1h0D^58qNa2D@MdQ0T@|&)gY1HL<&cozAeD;e7*;v6ad6sMB#WI0Vh-=+CbnevU%LVZJ@Z#=r`i_;O{7qu*&EmaA^3bDllk3 zu<_nP{eT;t7;JPps>Gf2`ZK^!`8W)}PZK-d@q0#+=7jVry!xb)Kf(*h21}L$q&x!v zue_Tgyh;ua2ZpyE%^5B5LSLXq81xI^C)pSjp`St3f18<3k;uyAZtFb)GO}z9@ed$P!Iq z2u0W)atD(U^NJ8;Vd5s3mn|&HcT+f+26ZKcVw!vh~qcA+#z=-#X0z_d*i(xKL3vflkz}*kiC>EDmQff6^R!5@gr)!?o z20K9c)Mf}_=-s1pE{1qxD4g-5vL*R+0)g8gH^PcxME}Uty3!IPmiZ{vsHZlBXJPI9)EefI^-9b0wU=Ps#y7^D(Dh1Zp=iwNk~msBM)gn z$I4q(NF?nTa-`jgviLm+gJ(6_=%e4GFJ^COC+UbSyP6ajyny2g$LD~$K`5&&GM=a_ z(Bx`!11^(rh#hgKld-x(g9NhqJIsZ?1;WP)%tbiVoAQJKts&WXEXX#ad(9R_qv~kd4Syn7{NXDrwM>RPB>5izlRLdJ~2^vnu@_k<_Q|JKY1L6WD9kdpy2u5l>C7}cnva` z*GM+vnM{7HoOuT=Wh}Cqm771p>A@HnI7j-;HBQd-CFe*&aoHA=zfeV~10dfPL7#|l zvD6^}5Pq8c5d*^Uw8`gf&W6f~Z@>^WihVnV4h!O^XpL+^UVTL`FULwmFD>^J6VImf zTWtH##fYV`8)2llshpU~Ru>rZh7lHM$cc6`n`|u4NN#UERoWTSv75Z5fJvqG^rFbv zvPw0;sgDQUVc#npSD`7_^JV^Q^iQ;?l&8rqB7+Au_)R8*$Nw*Vy=ZbzA@ePn7&70H zu|>by1DB`qF{7OW{Z{6b`s+K+#0T-UAzpYA$ev0(rjdyy^F5gogHUQRpoteWH_4t( zxHvNLWM+_=Nk&@^Hg=8jqt%po(E%xBgL+N-ZI|9@XC z;FU>_K+mQG62jn{OE6z!7;Mh}Ye9YQ#so}_Xs3^d|ZX+zvsK*|<8ie4PEqJ2+P=}$TDkcGy(9l2?q+`S5q1$lZ`7ENc$6*n_q-(= zoiS`XMj>rE8p$h%NCnEKm}osd0fIah54ikQ$R_ze!I9^uE8#!^JY;Yr8}h4`TsAVj zq<@_IV3;5o_BtRGhMki83jGeF)bKR3DQ1tbh>8BlN%Uyx6s~@i2wFKkri-AL_+b%K z{+sC;MbUqcb6ad@j<6u_)k9it_ z#e$L<{YDy5CU8p&O>nb1C-1Q}ch)o6!U&`6|78G@AMwoxA9~_}Rrdc1FtDkF0UFpU zPiX50*)0FrfR@4efR{U29eYa{4CYuqkQ2ayRlGN*IYZej|<2?-J?N+?LPM z>rH%>>6HN}UdRwb7(5ezRi;+~26hW!fCkpEkoNeItw}F~^Yn5jOYbAXNa@WZH=bg$ zQGTF@8v{*kH~32aNT(DZ@<7qnXvWEAuClh~L9!{^ni7PxOdt%NFkr>IMAT{}m@vR6 z5)Kr=VKAqLbo7P$4WY!sA4*?Dmu(h+IGzJbAz>yFCRM*ecJt$iOn)E&YbbsQxzO zhONrWr&(D!h-oOi;0+ica(~4HkbU_?IsK0(ymCsZ1VN-Ngu#;tta3`J00Vo4FhB!) zoQxe)4vF%SPkUu0ZukN+d>RPeEeVIm3iv*sAs`%Rya@{`(0J#Q3W;pw6Y>adOntRR z&?UCgvOFLx9w!UQHv93JbNK5rK3N zf+puI?ZJYkhN*#Gs+vZg1zy1+exaN|$hKP0bRwEZY8v?vNTzZXG?{|NpJ*)qk~pmo$F{25~wO9uzp86H5m1!iE7IcA&$J z88EYH7Q(`4Gz}Z0YS7Pb&FF>Fq zz!VzOZYd0`@LM^Sz<647&IJYE=?xdf<`j~p7@a7V&o}>F~tbsoc`6_giDI5rd4&<}Qtf)zwWs7>3d(mGDTLouh=)d`Ep?Bz;{q0IN5AjWVCG z)R}&6jLkcMw_I*%sLaNG)h2dESj8KCqKokaCI)wuX9Lfmm)iA2q zw??M+avyX6C_PLnumfHS!_E%4VZ*4>iE^L5+)ECD7EmIE#!zz0{ju=@{_umrBjM1| zKomUCG0dTgK9`JWJVHak6PNs+Ck{C18X$f;`JwWmA;AxB@Rs~lvF~Za7@JGUgC$al z48J8eL~;GV+ucPHg=k`(!PNL_&}Ou z(o{2$F`z%mnLI0=uu>_x)gJM=33_0$OJCX^0UpriRW#Dmt3-w?JJF1whUDGxdLM{NnbkP9o?OlXZOIwqEj4AhN}qaCp3c7pu}ABLIFr;ZO`5 zuca9#e_+xCMpF7h*$X$)3LD0Z+)N2@A(@!XwBXNoFjW zab!xoefdtjK(@f)%-_6wh)(VeZsv7=FVV9ZctkTZ<@MOhroqhzIhw zN-3UhGqS17*knc*7}#!vLCS!&5e9V)ZmAh#Cp_c>22~efuwlFf4cvU63Sv@hyk+Uy zMmVuEw*&xkoTG3&$AJ?&UbKP06;U|k1rBv2pKR2dN0cvShTN@6pKWYfy+o)$tMVxH zvH^%de1&Yu(0e2>ka`VN1c{l1gCFp)VfgGDB6^9tcQqTBQILrwjF`{s1R*iU34#-_8_ zfh}FZG8RxSD%b!o)nkG4XQ$<4IC(hmC|)TZO`YyXo5Os<RCgfRoi}IS{y;6pkzg&eF(0uZV2O$`5G=DrOWFC|s4iP}J{p0tqTJqQGxeCWWro z2Lt?+>Nad741Qc^37L6A?SX4KWLtZ~h@H?A=>$RO#e~5#8(5*U)CC4MjW9?cu&6`X zWJ5kx>|&9SZNdkkNCb>iFkn2RuY;kBl44CNq_6}j7NAae^=U z5ZGwfu(wgYfQ>SOjby<#BO2JM~xq9nvFU-2@~@?;WUCtB$h zeOyTVlx(&*Kn)l?m zzE$c}8SbrwlPe=-dQ|YTBH0+PkLyhtFINdC=cQ2%GEAhvNR3&j{1hofC0j-~^C4<-v3MYg2+B)vgs zFKd`=dm@v;upDpDVsgP>HCjNVvnAoc8Mp+r3;GQkaasr-xNQJ&Mxze1T+`fLfGh0e zZ??%qBlKiCL5Op;;JXZ1Q4YGmz@8=yaa083LD<*> z1sj?S*wR*6xWN;mVc!&f!wrK+`YmDL54YT3;vxAnJ_tpH#BWtPh3?Zw2H+=xKm;Q(kcUZ(;m36za*;GO6NxM$enK$`k) zp*1SIpw-svwV% zm@~=JC>$}NXjM-srj^Dx{DWwa0aA35jj#gJrNM?y4L0;_u(1;l26Xr>*`P&NO8uEy@Z1aXCM8fzIEN6-Da){z43bH-xbY>C(2i{;fBGJP5A4? z^9GrlWNwiuF}?TYdz_CGR_sA`;J0`7@};fDvOD&C*^vVjb{=8zIMPi4xy17}nLILg zbn*A&{H+M9#UB^m$@ufj?ZCeqZXlp1f$Y1)^G`DQWd72{pU%60CcY&9@k;*V)$%6_ z{>5b9BcAuk6p(qKi+>2`pI?%Hh?0MZn!jEZF8>g+|0bRf$vh(SSQr05&fkf!TKN;G z)CHea+`TMK+rN3@}v^c!{?dgI7# z)#7c&rdegstPuo_n`Gp_LC*Vqy3;5)WRj0>Sb$RqJ1*!mj&3?YwQW-k{U&=k=men; z96}g89>9v1gHAAEfR85}k^wx#hC%m$HAK3piuJi{)y6d-ERt@`fgC5nyJQgKmq%fE zvVjqIk;v&0r(ty-Coou^z~e!F=++F&N?jUXE8<_h;1j@3guxkNq3BTnz}K6?C0kgMc|L_yChiZkU!eOLR+I@ylD5vIkLLK*iHnO!TOC-~-v@ z_I&b}!VsV2Mqa9(?lLyDm-|R3-N69}sYXk`5e`39@@`|(7i_Uf3c?^pn-!q&=W}*{ zbvP1>N5bQGn_49^Kz{w;$8rD#tVguk{AQQrr#Pa*u4mO^Y9~5R@bn;hZTY}cm7HR1 z>M0M&r(Rb68z})2{ygO&>hSrL8^~A*Fa1Wwsuu4hy{L8w&u$7~s%qr6oQ8#FQmB(Q zojTu{QeKnS+SF{LseO1I)UV!jJ-osD&joF;!#*9vKLl%@Pu&^aJ$_Z{??LE*|D={5(*m`MEaU}i|^;4e5C2$nE$Y$4m29ycN{X6S1-?Z}>4$8h>hqdtP-Muyd~)NdK)g`g z;D?1~*pL(QV$u#b9_csak;0|!6+BRF8=F!y6kD&f1wfpW35OyB9%+C<@gZ%C$ql}$ z^dq7RLMVI?ir9fr@g^SK ziLM73Co;}Dc~IlkVuC)~k!We)CRY+_;vwEhtUqCpSZU`jcJIQCfn_X(bwXm3j~biK zVD~m57+wg*^Ohj}NF;YM9%TCK5|5>M;J{u^xLJLo-vp7wY>21W)S$f20Q@1MVSSzz z*(EnMlpp}U4dEdj@OZF!aX-m*fDE1j@%y0oU8MmJPZPg8iQk9lHyIUKk z{h^LzsP_(_PM;$j(DdH9@0~}{ba)KuYc0Ocq&29i0x{s2^ z+uSdVY&`JCea^Vb8)3lEZQaZd^inu@;E{OYE=;&5k^xNs)%+92rkf3lDe}XVK}X1> zlQ~MJMBQfl=LSv;@$ZH2Yf!QC0ooO!W$uOsdKpA_jLdN|C&-*6Q{t?xY!?EUpl(|b ztu!f7WRciD3;w7KPJ}}>kanY{6F##pHRf(rb0mOD@0)ikIU9Ci2y+{}&)W(Wu zDr&c+;ZkIbi~#sigh$3OJh?r{z>Pf{vH1O&stO((2!{tPh~i{Z3PqfXy3OUhLNtgM zG{?ye!{{5)+k@QVWhfa##=z z9$a09H(E9|8gbi^;_fogcoB_+rMDjIQ{*6ECJVmc7ffy#yn!*GLIsDRF%ovPD9=F2 zF0%)pgCZ^u-c!p@OUaNt{rMtJhE?8OuD;=(rMU^0e=*~!8wi{u;gBl~r*$73!bb@{ zP?}OcFxmKSO)gKYphtKlxusDJZqHgwzmW&3^a~h-v4Mc_f;R?55(K}caM&2MAPjC? zPzE>judt;s*pcG5WTVKiB8}p8G{b;}wJuLAXCpannu;n(7_4@q3U(tuEMVa``XJaC znuw|)S|-2PA3P!nkEe)dt^9SvK)@^$@cBGt!C&iWJDXn#rlWEEha(3Le1W zfo!-C5wc;-4f_#cVB$m2ldZBU zK*R?)E5acQfy0A+cHn)Dc;i9ehu>MeAlQUN*7q;uo79t<0;vyaY@N}@6FKDHm61))*9yx)H5ZGJ+BiFp4;=m6JBq%4i(Y{rSvq;mU z3k?*zqm4MDDY}s@QKELJGKsRG+y}n$-%{OC#b%T4z`&*@XM#G7nksbdZ6{2mD+hb^ z4v}lMpsB{#rUKF6!8c2g4IRp%{qqSNj-~Rip71K+N?2q8u=rjIM3HRpkbXlfxM8Cw zXA@qnaL6a&zymT%^a#`DCnZ&Gv$uq}>KM(zo8(h1zE1N818jW(+u+;WNUTAQ?cmaH zX=^y52f4%^ZeZ-}z3BVW;{$1H8Qt6%66Q0GzJbP%H?Z0`#G2Ibj%v(+kf0EM5zNA4 zD4epBsXNptN*ikBY6?R_F_(tCh+ERH!j@!#jrSqc2JlDrz=q5S!z1Al27lyw2nS_VXu#t(94Gi2U57@{=JS%LBqFVZxKRM9f zTvvbSFYE3n15?b|CB35r)FG^8|^w z?p>_9IjPLp8~SOMmlB#+xLP=8#?G$U(Og!Zu45N{K73JD{3T| z-#J)r^fc?vV~kgZ`7hD;_PbZqKQz?WC(I(-CSXQCJ>Tb#mzN3qcB6jnqeaHk2Ols0 z@?=hOfX9PA=sgL*WKC;T}?%q816?vx1-N*L|N+ zCS>?v-&bdY0%FHHgw?!XCNz9f?JMu|T3ntpY|8Zt=X&1?inzW1_3OgJ3ws>iSN-b3 z1JV?)ay7DTh&0 z3{}SpN8KKHJ7`Pc!f@N@!yzv7cl(^J6&IM6cqyWh!`+G2 z7=x{4OjdVwFn>5B$Y@;U!Fr{q_dc?`%9PZ*NiBAM>sWiQ*-r~E{ZQ`k)xY)?-i)b# z`-bV2OP6PMzkB6b@$Or};c?gN{ZZ}k_un+$|IeMMHu-MZ#3z@^WqHLJ_RH8^s=ZI+pv|wUjmqrXGo;sz zsPHbmM_)|3IqX_apy};yPdjF}^Gr(HdScDN+-Vnf^?dLl#m3_Kp+j>s4*YJjbhqcG z^?R&JJ7gYMS|;m{W`lFRjs)d2Y&9itcWQ5+;|8^Zhc9ap(Y)PZ(>?1JnjNcsyY#RH zg$CAW|0>(sHK+SJ*d6nbsenhYdQlLgj8eH|KP(gBcg+78JfYn^W|s znS08%zEhJ@7Fx%xxnPkntAC}8-W3|=cwUYyn*4*R&}U#)QmZQWQrcyuBv`D7k1IVi zq4x9|TlIdr@y0rN)mewF!-q%Rvj_|OaJ#GO${O=wfBa$atYv)_K?Aq)Twe|3( zI|a|~XTB(~ipxC~u&-YlafMh+ZPUNZrRer$aIXOMWq)G zF1L3X4L>>7EAp{TKxomc7tIgu&9MDt;u4EFZ4!+Z|C_e9`hf-U=Fz!Z8#xy4>hvM{ z#rVUn1*5;KeL~f#dG3(X?$J-3rusgZW$m7E(!%S8{@kj|x*arM5LeJ}Q$~*Ck#Z*z z9o>o!)?c)FMcMN!7SLYCbKb7DS$+g}O7j&e8D#kCvW&^U^!ZcU+x&(V@91UftHlyAK^w$-G+4hE>a7k94&9N!76P=FoQm z_lDhzX=HMCu)kwwzx7E=^zW{nTciHD&Gw_-r8VDi$7=hN%&vQ^<0`EU+hsEIH!IgO ze^>R)Z00ic-{7c#yZ=OYZN1Oc%3(rnlR9miS2BE_=GkZW0@neNxdG9(g;Phpe{t{r zk&JimW0quI?VNb_+#83vaR-f-teWhVwzGY}<}G~^;yRYyn$Y0Pn-r7TXOk+p4=)^P z9#-V?N7tM&^UX6R^r$rKg+W8r-$x_Ej>f8@vU_GZtSocSdf|x_y^ZnlwbN?NRgL}T z;IQC?f~X!jIbp-?`a#CxY##o-bK%pAF7=wx;40{ z@c6RL8HHC@%_wQh0*ig2xwfmD7dD^qI6CzAZLX1*BWe#XZq?l7&K-x`z(k`H z)BL;&ycz_&==;};T?QL6w$=_>5^vKuac#5Iq!anC*XF+KaPGymZ{HPMNDJK>`)=5- zAG?^W-8IcI{jm*ydA%#G*kRgm!QRu6i9gR#9gKGw-msKWm}9NuU8~y8FgI`7J;6Pw)K;&l z>2IP3et*{2t=sk@eR-EWl{SzPsONJp1@-KRvo`z9qc;AYXVsVCZ*cs`lr==y4Bl1b{*wUyS{ zpX)kz+&inKX#ed-XXuAti7z$uu#3UXEha_}GtQRT6|=x_Mm6`+sr@UPFY0)){IwY? z%iSp)Xy*UAmWk)mY~!-lYsz-+>1`UhzOhBmGx>GuM*UK+S)EaJx0$xC{gcn*S{b*0 ztMM`=q~_`8Z7Y39cvX2*qiBnh8_?cY>bV%p%s1AJ-TL}A{I*GAg9bm|v#k2Us(#ZwlbhGeJyH1?{^mG~MoXhwxc8ql z?pgH-&Ocq9IQizBsqTCGOsi&G?z{TF7h*O{h>c!axBKMZ6Ah=l`~Bp%$*t1DW;snA zll#Uo;=$rK;bAjVLce(wHQHc+ZE#!17a_*ecKCL!I>s;Xw-!GAk3JZ6C2Lc_pNIVY z50q*UxF94i$ntEKYxQ+id-bd5*(ZA9lHPCqa^26GSoHg0-!Qk0w-Wj$tUB(p<7t_m z|MctTeAH^Xlat*as_{e0cWZvHSNA&e=k@Rie&!WqU_Y=++Qh*o*Y*vXpI+>F@YfCl z?pBHMxH|Q4|AO{+hu!wH{AT9kz@a;5Z5YyK$;08L{%z(x%sFDjnAY1z#@23oXW!UY zc~36vyqmLe{GZ;tJKYP-d4Jz7DD|(><)-92_HJBQ-ZKBmpf$fd@+lhiIR9?zg3GfX zKbY(A+rvZNA%8zjt^DrPrHgOZgsptPwamZ|Ei2S|Q+rDGzuk|oc|9@7yV&)C-iv8* z8P6Mcj(=Klu*c718SD$t_v&}-Y3In%Z+nZf@<@;UMR}DA#X4;=myf`}Y-sR!7tS(h}KjK7_ zWvh=*ZGQb^uWmI?of|YbXnJOXk<+;z zV`lzQ>vH-9>-`4jyRF!W<_Pk)$5|){A?AGLaLRhAA29P{pq`lFIL&KowLAbWS{vX?vz^?GVj8oM?c5T zz45C1yy?9R=cF_|IeWJMs<00$bnSVS}ZC5YZzh`c4T3nvRq3a`t9eLa);V{~NKu}uhywfJXKG~5{Y4A$l zMRref+ua-)+GxLH*3X4a_nesPZv35p-k}KnS^8P2N3Qk0l|A~oebnu|K^6RltQ}m_ zNF|GRHP*EN|nW;H3e zP^{EJM0p_IlZt(N>InLnR>H!g*bY&HXHe9<=v-4XUtmpSLchf zW(MrZ>u_tB`=Se7o7zXstdRfrpHV{wl*@kHE%-?P;&sI>o*rMj(zUrwgJJH2*WCRl zqSv&g#xGBOx4GNZ8tHGx^vhh^w#B}N3r^Hnu{Lp9^CmTWzB>?OsWSLsQBj3g1+H5< z52^Cgkgi)A?p<8R_VTNBb4Fj7RHgiu-?!Z{nszvT)Uh&`A`?gKt8Q^`XzJFYPPePN z&A6X&F)wy%h9$TYgv)fzx);)0H*``Oge|SG9wUtXy^`E>9BAYxq==yYQZfmzQHnFd747~5` zw>q(F=<8E)m#YUm935AFZuHr9!}F6o?s#|m;MK2DLcu@dXU|KjR@kmuakuG)KR4-; zW>xP&ebwZFKkmrNoA-ONw|&RGLm!X0_}9SXsUAJA)_n9KtbRvd6PH=n??13RJ$>QA z$SZ3eH{JQV|KgE@@~3yO9nvArWYOk(;r8{6kIpPNW>bfh4R^X7Iy&=h>DJA9Rqx&J z<&GDV8rZFK}0k-?QD*#JK9Je&gzVXm);M#hKskn{ek;`9E?h{IKQlw&pGsYdSWZ zv@v#K;K}R?`cp=|Pr5Mfr!(V!Z}4ox;GQdL6mD(5{oT0{6`jjG={w19&a?9i8av%A zP!;?4k8b_CP2Huc>pL5J9=W#a;e(T}ch6tvZ0c+Nw5Cyr+q%R3f9iC@p-Ft(AAeZk z@xE27ANPATew$mcrqbBq^P{TWX>-1n!`9z=&8_HsuWKpG@8b?mT9Wr?<$t`tc{lVy zuY@iGpVcojJ$oUOdeJnA>^bs78HpPZ^6`+n={zkaN0W$KXV5Z>Qn;pS?AGc(3s@6s|i zqGhlBmzO>L-q2+Ez0{rG_A0l&ZmXTOUAtWBVLdeb-(&yWc(7?nQ2%;clg~{#Z#H3> z&;Gz?WlHCw{YM$utaxJX)AC1?{s)Z49IqKUx@ge@zm09z_%B~?eq**>^v%=_c~>9Q zU3n>Iw#i<%7E^b|9J-%sZM67Eoh5blRq!93Z2A1f{;{s{hgG??u3!0X%&q)~MORY# z$6cOrs&ZJuApg)U>F<1BPnjEV=1~=WZ+E{kVL5NgclKLgT<&GZaLdzfAr(ek9i__u zC1~upPNniM_A$KD^HRAP?>3fA32mFQ8l=LmSICHAr1Evh-}@lV&-) zcA7r0Y8??XYe=wL#iKrTe%l*p-FebY)nfe{W6LC5vP>(yTA}&aoipZ?*_%>t?UDSA z1*uo;CmWslrM%wjHY-fFEWBf$P-EKYatDpabhcjNAGY$IpSON!X#XOMFdyF;0XEss zef9cs!gJnk51Q?A zeN<|ulcDu^`%-oO`n9av$Xn%N&Ulm_+o_3x>es`j6)K!Dvz$3NIHi$g#Ejkh1Fx8z z_sL&7BKNgaF&a`+nac?~dsQ!nQw7jk8>JWcS`ud+(Y} z*m-Hy-&cFK|M^nX4#OLbtB$`}E$&Z0(@M+yJI0qAGrG%^(Zjann_n z1>Nd>?)CoL5ep9&zOKISaF0>R3$I?gw!UE9#idgnvonsn-+n&e;=!P2o6-gcbxkRA z%XODSpX_oiuJ0&Y+s&a=?|)Q=Q%2n$Rd{Sm(CvY?;R_30LJmit_1Qf?EikTDqlin1 z1A^~5oHL7Be$cdMsRjns_75!Gxb=wx9S`q1WZJaFo?$?de`H^zdu~Q0S)J)>qD54-oF{OHKQG97=fsBh}MC}7QpV&9|?pU@ANtA$-~PAq$Oa#p!ZPx=|g zd9^RKJ7aTDW1q}X)n4@q>DjkSc+`!gi=%tzTpM@bBo^(WX$#4z0}5P&-zUVG960)kyU1?SMK0u4ReBy><*mL>bOtu)ZxLk z4Vp)^ShmOXaJyq>3)c-ReY>``LE!?l|C+UJRdx=((_2`39`g@7VfbBCk@KKon`gSK zR-8JWGuQZH#=%~13Jd1`S(I~jTZ+3`O48K6YvQaI&PuSj&^x12f6ttT6($!&UiK+e z{m?2YYhb&SdsQqFQnE_N#jluNJ7MTgdRuEGTfe!n)#2=_dr`xOe+Ub+xT5NM`;TGf zYnI1b{W5=T)jv1ya7>Ya zA?OASX<5m_am;NOhZiS@8|``=={2?}G{ELy^B1pvvCY^!$70FE#YTy3 zs;^D^*F1i~fks<%qdV;?bR7R8`orh~*Tbq4wZ9vZ+q~1$X!p_&e5X2PxLeP<;bn1h zS=G7v3(OC8+tjci?ucVfhGXK1a`g`uxs_e9c~RvBE6#hL(=&0-vULrA<2x_vj_2n}-KUt{jtyY`#U)o-5mZq#$c-E|wb1tdy%+D_zsopsHFHVKxwDC#F@IbHvlkYPUm#jr{}{#G?KI2smtG&_pELF|y# zbD{OUG8^?$PNdb2j~}a=TPt|j!Ebs*6(kG`%gL!~?OxZ+Vd}^xwXIioq0i&&PtdEB z7-#D_FUfcD4=J7(Zxx-WcD%4?aAC&gW&h-?xSC{?_F$jIf-S3Ub3uWF0b+}OQ?%UX{p=m$v8uo72T9Yon#XC-GXUy3JkejBKOEyGGvG(?2xx zUZhRz4EU~0g#s!zhK9TO1<|kXlVL#V&v)ggQ_{D8V+}<%?Z88Gn>TrWHZAXA=7M$U z?{a-}?iDtyl6L1%xy_kx8_$jF+I7jUsgaph`$NuFE$)8LrQ$Sge_EOKXYplzfdiU&X(Rh7io%}OB>-`c{ zx9+Gq&1$zc-B#kdsCchmmIsHKf8CiQo3F`@diaTBlp~;UHoN=|73%>QEV<&8w+`aD7 zDTax^e|z%xcVTI*lE+MSnib*rCO7=e;s>EAGs8wlJ^Citc7Q?13&*y;JEj@?jj7tz zr^Ro9qaGaXAFwIwiogG%KLZ<-IuMi>vcNU#tYxpN>#FzhtkZs}uJEv~thm7yu>t6F7^XAv_dKT<4(B2?u z@Wiw(gZ5oB@hncCKcK^}2R&k{-0gpO>eXR)+ZTLe>3Mr-;NzJ?Hq6>N{Na)|-p&3k zH6p@!*vRdz$J}XKJ2vmt*nM|*UU>57_>DRDI_>tp|2`-5uhbyB{3+#17dGzg_$1%5 z{G(si40=4O$fuz7-TViSXJ3B!o5S3{L%a{YtDO4u?Zr!{-meT>^I>3_t#4{oX!&pU zl-jS?9PeK2oiy=<-UHX?8FAB|#&>S~%w=%JA`{iJmuFk7f3;xwn}6It{E;(x_^9jy z?FL_eJIDM+mp|L*j(wSSd-vLTw_eu2bhBNbzp_Hjvaf9oEWA>fz4xm1uJ1E_HyB<_ zJa2#bUgYRYR<(wo81cTs@zu+koV?zA>ZuytdSwhAbne*lPX8XgJpGsSiUrHh_T91N z_eCexo<8&K$up)EpPh3un()WWF+DD%U#@lDV88W}9V@ym9`iQphZfyiEq&0m=88>S zRg_pevB$z`6t_hy;r@s_}zjz zZEfcF8ELez+?^4NF3by=8~gL4dEH;#m}A&$`s|YpQ{qcRqC@nVq2wc+fO#y z{OtQ0o9rL9-Y{|Cq>cN!suGKv9bea>$BXqb?|%K|@XDW4j*rjWQ>Nzqz1=n+-Z%Y^ zIlKP2VYa*c&W<~KmG@1a7clT(R)gRJRb5A>dj3;p|B}_VX}NRv9J0uZJ2Gs<^}`8m z9;5xIrUeE3YI1sBrIZ~{7Wu9m+%EU2U8B&EH-FA@+<#(E)57nJ-RDLe%Ja`61wij> zM^c}U&c2m*JIa2DUxh&)H3zRP*l6?SO@*~px^F8Ud;8n;(?O>;Z=X2MxW^yoBN{K? zJ}uI^VvVX@H|+a&R*lRxwJsDi`DOf~?#U-Dw;50Ac_z_rN0%B4Pk&RkV^GSjS$dhR zJsd+;J{oB@W9ZYno&Q=nD`4iVi?=%D?YXeXeOQ!z)2@H#SC~0qNYtO*9%q*;?tdis zX^Y}@t}E9bAJ)L8`Q0^x-KX`6_~+D1Z3*Jk!x&~RUiwJU0zXwrOI z;(>QPYZ|C5V=5Fa`eBP}!KMus_!e>nmW|2>g`S!Gw#m_nHrn-?b+7m$D&+A&z39y%lMtar+f@gHOom& zbaRSGc=`77hs934Ly6fy_ONTt(<21_4tk}r5Zr?4pH$A&>;QbG`AGx$jo#XXW^`J*h zA`Qkqbv<~-t#$5=*ReK!&i4m~c1>J;IquZ!qYlBFgEEkj0b`S1HE?hXh>Ekt57WaR>b9(-uksXHEcG$egB(9!)_`Py7j~b_R z*fi!)w>uk3znyusdaq`!cf9P^+pfW+7jxHCT#?Y?@MO!CIdvu%o#~VAn$+sjJN@+0 zs=$q}R*bN4Z{Gg@xO)=-o9h4n|IEgWJNA96n=Q&ZmdJWB7zTr}RElAS8D?Q-tVx7Y zNt=omkrbsOga}DRDJq3hR9dvER9gKX&vVb4({*ReX!(5qzqcN}-uvtIe!bskopaBb zbmfD0-}6b$@4oLjx^l#i`=$>4Y}gxfhkWqNm)oM|_MN=;=q0IEmjipa0WkYelP?+% zA8>1pcYaB_chti0qTB%367u~1C)Q-PC?6TsuX=W`dzZdm@8r6xuPf^ifyk`CCta|s$d*9iz`j?lEdSVyPseG)&u*LCd zMcdrhXY_$vngR5tGDWq*9vzuo-w>xx{kw_Q@_mu`Ojv8k6V-~G4-bt7-clpHSlI4citE4w?E=tNWM#IjvUt z1)sE7)WS2jTA$48M^t#U-MeGA)zA8%{=By~#6^WqKelT9r*|zW9(Q%sRSnPU^k%zm zzhz$5;OKilz0ham?T_qQx%~Xx=+`HY*pM{ugNP#EHE9^ru&L!+|3H){^N!;DSdM>@ zaHk#T85C0fcoECXKYu)&{8IcPop<&jm2cwHtZ7c%OUw#UzG9)go6{c;4Iy5NxNqgc zC{OKDR%xq@rH+bPQC1PFm=$4pFd*6rvx-}xRtcWND9Mxb)cv`}P+rhxMJ7Ngt6XFb z@02^A_!wwxSy5Z9QbqYGO5{-Rl3s*V{b|sF^kK?*iCrWgc#o_^`ZlX<(bmLyxH+;V z={>xst~Bvfs7rb!k`5wgLpRdLXdg~I5z1NRBR{77#l(3qIdk@OMTaKl+Cgp9<|rA4Gpu;yj=p*^u-mWC@rHy-5FV`RBh6>C%jUhBN*?S|zk^Y|c zn$P}F-YOLt8seXS9*U1_PWda&{HKtvP5LpU{51<=Nq<3m&Ht59o%FrV{9i-5E$Mfi z`OhHTfb_FSt*2X{C+S~luld)SDa-g@aOOXUH1iPkk~9DEX-(3PAXR?`bRzvJ?KS^b z0Dg|T+nN8XNw+5bjx+zGNwcn_o}= zQ1DWJG17u*(1G-alxzM6K_$|+JM%x0bW752IP;%Mx-RKeNX^%5=tlZG+H3yv+WvPs z^PfzeTGU^TRQ;LIne9t7t^Csv{`bXMp z{`1=YUvuVv1a<0A{|Ti0eLZv`{Wa}1|5w3zq#tnRe=6yAq~CYuKa+Gr($67Fz+C7> z`j4}0|1Z$L>`j6TsJ{dm0@J}q`eVvv&t*`V^qm3Q|69)dr%_&y^3_P$dn3e={(<(I z&%Cz(SDpD!p-ye;KaP~YWpNdzY;McJ`LajN3s6s065FlDWZR#oeKtEP3a)zoTjb+Yt@^ zhPA|c!TMNdKX%Yrllxz3+Uj2!=U-WR(!X-fzw(ym65=#8dQ1WjE zJXpF+nX+Ze5y}%PIH95wDg}hf0inuSLe;Z`YJW3S|C_;{|A->YdsI}hVjhpCQ&XmC zk!wpip|lgqIH9Z)B_u9EgWqP#;!6 zI(!Ay;C>hk2cZpYf+_Gjgu->u5w<}McnF5UM^FatfWGi1#K6;#4c|jCxCy$$D{v7! z2BY8$r~>!GHfsT#d{@<{*DS{($r#J;dmvv$zKXmUc`@>F+}H*2vb#jmVA2tC3eDe?$I;)KRA>@&@D$$gaq)$d{2XBQHc=hbQT!);1oPhip`7^R4vLy0W4WEN1l&-5cwc-2yzJW5b_YRJ+eJ=3vvtcTI99J zlgN`u3lDSvFARlJkN}Ng4Cp3CH>eA#PzeS>OPC1Z&>3n$GL(ZvXa>0uMh`Qf6TAR5 zVF?U}kHKOEm$FwezeYytY@{4SLp2D6GN79%RiFq|fD&*Xgg|MCg36$O<)JuKhcGA$ z9;gaMp(6OEZHw~s)Jcq+P||KV*QAHjaITDnr{M&Qz6`!&^qFG%GyRzMrk$zJc{`(# z|NY1pLUSTG@3-N673+Dgiv#D+jLx@cdz6P?W&3SY9||1HIYEsoQY^v~9vxOZv_uFu zn)XsNO;(xOvP4!G?b0f3(!kXT^T7{rfh$Vpz_Pqh7q}zEyjxZW;EI*?!fP&J8Z3gX za2S0rMtQOW^+}iXNQe4Y-(FCk9bhO-gRP(`nO67?e0yGs@+>HQf}!o3Z&@!tA7b6p zfNyWW+mKHF=K7X(F&7&uQ}8D9yHXsw0PcnR;C^@j7Q%zD2o}Rbumm24rSJ$m3d>+Q zJO+=$3U~sZgs0%>B^&Q+a>4rE8(!*PYu0`9*Gun_N5jfJ@mWashaU62`|0MXug2(e zJbb>=|FLFYE+0A{HZC_MM|Jgc@Nn!*oU4^Yn)pikT?J3WYB=Nl1PLwa(EiX|tlH?e zcb#dcumZV;Hf!M-SO@FjjCT|0#T(9#68ZAYseWcV{TxSbpxv{u5jLq0{koE$uJH>% zUv_rVq_`%RobIGkYEouqO1e6dJ-eKK+N6Y9&(U@>Y=N!tJe*;V`ZhoHcMMWLm1wUp z8@Y{kFTi$qQGEp36Qegx`QKqYDM(*~oxbXi;N3hdk(cP>W!M2b!TF72OyeO#a#EAB zQ<8^_$;}=zMsLPR$&TX({u;jjb3OK_QuUI*#;0q>>3v=?m;9x1a>|ILap}23c-?PG zZi;HyFZ~L5VHNH48%nK(71)^9cjeD8pn%$J2l7AfNdLHBVXUvhE_kf~ zc`D<+wcRem$wSz6OkMSQlC9{Aa6c^lFaIW{2vi--6UtzpCq=C#B^( z<(V-Bn>Uk}U;PpEA)g5OL}3zW3|cRmSJRKNMgCBIldmJQ{A2W}A9tCtUwxW<*{`(L zyjcSpkMh*N7xL0)`cXTx9jHGuM{a$lue`P`m8-tyLcUa=UXTwoM(J{IHyW!uPjzIs z8JFVHrL_7oHhGEXWrN9A8}~e@OkfY@c$PagtftT7b&a z>Q_B21UX8JQ;w6PRM!jctwrU!-cT?))K*)u>Z_gl)+9+Pt^UmhqB{JA&aQ7J*X$wO zdemp29@(o2mtOUwNe|Yym;AH!rT$HSvR!HItz=W)_V}h9<}xKBMz8+jl;8gjr+z89 zxqRJ=9(0OlF}XV3kI~ul8Fdn}dGm3ujMwRJE$TLDMLpL`O>*Km1E*Yl#Z$ihgU~!D zu>tkuV6(!_u1f<`T;+0>*-9ie;nHum4mnZn)sH6EIM?*i$SKQ92gUz$`!snPlg2FE zi(6$HgQUi%aVeO+iPG|c+b92pPYYsmUN*YNr?HFzE#i@u@8M6PJoh#^k{xROS=_Qt zf^G|hz?s)mTE(5x)5eU^x9QT8GE?F*M`Xp)!d{%~=|f>n4u9pLeKv? zQDF8~#fW<#8g!jq(7jc0>X(3$Pzp*z87K?opgdH7ickqEJ5)hdg=$b8LL$P#Lp}D@ zr!SKap(N#|Wo0r3ZA=d_jxklk>@gk54Yg`ezb4dz+E52HrVEjEp&ncW7ejq$00kXW zL+Uny#?S;brWnX;Oid|k2F;-bTmmhj6bd=uNIEZn^{4FrWq-x! zX2Fo&9sBi;k4=mnGQ|HmU%&U{yKwxaHKs6>_(1$I2rh%mAx8IS@_1{#eZPk`3ZEmd zp#EUE60U+FFcg}{X69y3iW?To7cx%2NZ-y(j2jl;q*Y)h-#Bf;eTXK_0}9Y1omg#;2SH)b1ivjw=pF{cAsJG@u_ZOAEvdn6iE-|UoJYS#UpeCOps>TyH-i30 zLMo)eC~)*81=W`nTwha1-&~iznZ!3a`dUu(k8d>nr$Yv0LKZms__{_AU*`nZ*UZuP zr%T^);`Py^u*}gnhW^JwHsnAqIQn=eZ4iCA!SywF^kveo@n<3$Cw)qwfQkzP-ew(W5Zi(Kng?uZAgb4NL_`->9JaMg`Y*iKDL< z{hIN0CO*Z{cf!$kE&We}>2Mv)07oA$dkr$aiNW=?bo6a@>03kmD@R}IWWPUW(*G>D z9&Uiy;OOJVYY=@Sg6nJL=xa#7W_-1X4+e#Uj=me||0cK@=D;oB=;P}qLG&dD*Vm*m z3JKcg7rJ!LBfiJcnSQl@jC0X(E8GUR!yVx0v`;Jk@*3qJCInW>!y@gTY{tM@qp}OxxnfGFbuW4M!Ts<6EQANa*co_xn=c9lo4qqm+lIyFVYPN}1kLAQ^c(+m zAif9`BxTnkkX?axCtnk4EhhgVSOO2jQg{UNvOBeacBkfLw|0~S*`p46-AQ@btsO2wcJFf8y^?q->`{=ET~C7S z3bZ?y@~6mO39H~~IAg*&%IWw#)af(w+E8mX_13^zcm~$NddO?6eC??~Ybz(Ov1(^e z&{)@Fhnb`MiU01{B`Lc$fb0q!>sIW3mi&#d37&(^um$q6o3BU}$nLbf?AAfUv3m^q zjopdF*MNeg?Ai*lE70zV(?YH1$=?Pqz;<{MUV^;r=Ic}ivU@~ccI)6nkiYAq-`E{Z zJRKAyW!K9fy8`WQJe}8ylD`vPfmdM{yasvM%~!7qWOs62cIzNUkllw}c5f$M3wsnK zW!LK$J;GZ#~cpK!(` zDVyI0*&H~gJ&frc^7p}hH~{a$dtk<-OM*`6NjW*rUtitFvEZ|kUyD3OVjp4s^D`cs z%vchLZwCcQ*?JIUYv5RNXZX(v-lyyXI0T2`LvY5TKVaJ*q7G{JsnR@bw2!`i8ylj_ z*jSBtDk%K!*zgfLKZYal34991pYmT!n*HsWpk~8~7HE zfn$emGd4@>%OALdT5-BK4;$>Goosl)Wy4D1zdJU}acuYwo!`R`a2$RFmklv#{n93< zbxe)tKUKf?+51%8FU%!mJjT|uqzuM2;L;C3`U zb)Nc~%Z~NLBhjyLzhlR5==~l3fIs0Rxb0|qHanaOdDwC4Jheaij6XUMzs<3u)(w7t z@Ti)_<3v^{gh4pC?Qp(ro3}rl3VGOZYCCz~WycQUmC&!S(y=1~y+y$OVHPsVWrrRG zh)Ev60?o<}Ziu@^9+tSyB}bss_#}b&!;UR&X8V0o4BZ}xhT>2Hj8CMg=~-3_5+s8dcC2e+cxsqOY^bQyo75?|xk zASoNlgKP-g-%q^J@2?7!RfI~a169EI%YIUbucRj=WhZ6uC`@+nJ0<=nivChB53610 zn|0A|?2aa$4hoW2usv194%roGcdeWFND}$g;XF7Wyl?>+yEV^UQ?f8Qds0yM+BZf` zjXZ31onyZ1vUNN0O4y(vDO+lQYzefr+|8j@P4a6&ZKwkmLS1ldbsk^(%Ogp7-bU2( zMnNva3)x2=<8^Ig%NUoLn=!;A8Ha+T##0Y89@lt%JMJ##`8wqAoKUMFC5`@C>aJSVUn|a`plhP1<3x7JJEC!lFGiVOFBi#ad3A6Iq<519Hhso$4$KS+fBFaQR^Ah--J z2i0%Vg0ZGU7WhR-Ko>KoZPI8o@}@Mb5gQ9C*|tzh&l{^ zPTgI@!u_|i`=%r%^Y_k<<3@}~$v)MkU9S>$X~JW4&to7j#!or3qWbG#>gkcnzu4yQ zRX$O@RHvTOyNF-Gcm~6ja1{)JGaf-yp9$&XM#g2@4F?O*{7-(lM^{TxST(l!gmz}R5@*pF74 z$<&0aWlppPG2o=m( zedu@+L z+yGyq?vQA4m7_m}Id}RO*B$g{7MJo@kl&6Kb0_&7kUp&*LbZ9J);#j=g1g}!P-sJb zRwVbrNsmQlgThSm7m#-^+z0oALNxt9Kzt#Xk0dI8DESYPw+I%)Ltt-G`ea^wT8@rr znvdTd`!yf>;G%;4472JbB&B8BbV3#p(!2RU)OPv_g^_N@`h zG&d6|*M@1AJJ(6>^7)ik;?tMGEimWq{tbOSb^Ut$*Wvzt&TMJlQ!v-^*r9p+p0={* zFtQxJ_S@s`$8T?4%Jzm*u1%on2>*pnUW)7s5T}l_Uap|M^mIc`0fqhOT*CZ33`^k= zP>>y3Baec6ji{a0!ZL8Lg+cVQoV>@t%=yXx9|eA|Z@JBFPdcw1D(@EHmu1Wy=qWLG zJCbLlwHD=VZGP->tOzIqMM0Zb6zEAc^E)3-I4$jZaHaignbOEIP!`HTd8hytp%PRE zw+-%i70RlDe#uiEcuxVp8uK3nEM6sCpvP(_L*SV6 zS|9RPBg=QZi=N>~L?!)nlF#v0^Wcm~$Nde{KZLO~xC+DP3^@EmN0 zQmmXU$TG;XP!6_|ejX|k--dhvw!@3?61)sMU?;o+ufi^P4PJ-cum|3NH{mVV3va_a zun+db0eBbQgM;usd;ki^@xvkFhv7r`2tI~jms>~3{{#wqx%DY+K7%&!IUI%dpaqx& zS|C~wS|C~|UeIDtT9a?e6j!j%Lt`iMao-&KDKPCk*D#K5)xxc&+LI4xeyY^`tcYuz zPD#U4)up|&-9vp{;V87cH`Mw9d%lFP;A=SJ5Mlp#%YG0jR&8{Es6;!3iO6qg^DP{M z?}E1PVc#Afmpz_)r2h7Uoc4Q=-_zy?I1WF;PY`&8VUO+9$cA*xP8rjMuaXVvlEm4V z^Ms%5x}W|+&>{R5vLm@K)cTn|PrxtmtNIUm)#1Np89UB?#O~Bse|K!%em^H@rPygg zI7C1Z(0VC~46>m< zG=Rd|5a@@7^w9_!gKiIYOv}wk8slHj>+wn5>%#meAp_Ggld~q|xXbrYuDP@C)Wv2D zOG!>nNp>n|`#I*6YiuhRTN8A|KvR%^n?W%DHYdLY6n1R+`L~I-l)sE2R{MK>7-`60U+FFcgwt7!=g5;nYor6c_=rYb4TrY%zAF zlHZi_G~_544e5{pnUDpoDIbFz3)zqZx!@yz9CAENfQc{(Cd1V*1+Iaqa4k%O>2Mv) zfSE806x!gE>xth0v*AX#3FMQTk#pb{m{wq?f`Y@F*+;*|i+`7(5Ou;0bsVo`QnfwUWB4;AxOutC4HKZI{lC){^%O=-g-> zay@K-XJI33g6Ci}Y=N!tJZys(U^~1BFTu;O19rkI@G9(r*Wh*74SV1XcoP)9!Vhl| z-wSWUJFpKFhOXivYT^grU3d=;g2G8}At-cvI@J1z_{VSrK7mg`VH0Ja z5&s;H!WZx*DD0)|E8<_nH}EYSgYV#b_yLZ?kMI-x3@5^5SVvGDot&wTE+!OLp6V;E13*K_0JYJDK(IP0(}hJQn2Qdz^};Yn0-bN_qQeW) zCp%3Wqffe}PZxj+|Mqw^7TLh>oO!K_-!@~DdmR6iO|j@uzq%NcZZ8<$%1`e3P??!a z#Z5i6bNBI2`d;Vy|JGR5uNi~Z(f`u#ZdzM*9hr&zFXrEEhqi(L(kF@N(|VIm z&5PHOT2BRCi?Z3>$N$x}7&un9-!=a+AU}8=`ESjCes-9B(f`s0-4Oa;`{BRdH|S=Y z_On9AB`=u$R6(}``OV$O|JCgvaIEg_K-=-Mz$StA0q1%=maXnS z{;$q`;8@*rul4(1&V7Ei=p3Y=bFZ7=+E?qmQc~NXZd5C-&=)kXN}J=kj#pmLHm)-1 z)4fhFxPRs@pP2I@mDL9Ip}0AJRUO?B*ZG`uOOM)^^H-mfmxMHR&G;m}@L$-GfF6xo z<2CzN#pNq6{1-OZ_f>WGbU;dWZpuXazS8lh_;vq6?w{!obSjHY9x1zYZ>$v8frDP= zo|q|1%ubV?Dytt@7N3=+IZ;_R%JjqJQ|)x4)+tM-Y~rny>0Z}qTU>uObY45=e`A-P z2tQqmXTSm<5f7}O`@rkaAv^9u?swwTkcYwll#nydytJC}$`?U&{G&tqKYgBLD<8la$UrzY`QP#fyNg`l7{UYB@1xCkzW z`kxGehY1P%9RDx|+E|rm&JA?z z*7=4xeydE^X-ccEWV$0&SI2uV=-!%+;X1acZ=D+?fzG3oEZxE_(K$XDDrx zU>FRCWKig~fk!rpkARVo3Ta?J!Zo0|y`$`#GLkd1*K24gOj|bO%<@23r>YO7C~*Y39Ta5^qCXLAH#--=iTN zG9VKaR6mRO7#IuLkW^0MCT=uXW^Du!tI+L~v2aywLHwh-g)xrAU?FwqM!)fClfcj9n zH}nEs0(JuTu0y*BJu4;5WsBK;XqOSJKH2tVhju%)LA#;hXUU_u&~1YCZTd-e`g7~f zEAL#|1nO4brXP+-_N_VnDIu_4LCgNhzVfp{dTKg$2HKWi`dr(|7I(ku$JnQJr4XXe ziRdG5)2t4b*UsX97nJJg9o~3mhouQG4gG9P2_n*Nc@X~Yt#>GGc?*)?a8li{o||GUVHzd zCp^!k-V*n~JyV~_eEX{7y~?(WY1rqyF(n>6x%u1o5BXu8Ny6nM;x6ZzO`Se#- zeYrULjRw#6`Y!9kX{8oh+ZuoD4Ns`uq05+&LpRKrf9G#Y-d)}Hg=%kI`|(v=Y1~%k zhZ=9jH1Alh?}T9kvcFjS>e6L*-8d`r$KIdRf4lgLA2oZS)}nIL!$;(HO|F#~(fPec ze_glWhV}Oh`E2UX)n9J2@2xuDx46B?$_fKVj2~aVOS1v-2Qqe+_@&X&9Se@$c+-Z* zmvK_r%LD8C7BOcg6Np zS$)wRmp1&P9A9(Ygi{qb(dTz?9sYM&C|LpeaTW(7(wXXX2 z-j$=ejot9W2focSui5)rrv`? z${k2AGJJU3lE3~~Jo1(u-ptlll}d|0;v4#Q_SlgRy>TS0P1n8QJ^q+g{LRs8i!J?i z+1lpm^Plec&d!bRb@*k|ijULx$BY|%D0X-8cMe|G_Kn9^G(J%0QtN|0)B5b&Q6Xv1 zmbJ&%Tu^iS>H!PxdUkiorO&NjxIVOQQpOHTL|q&lFjDWXpq1_pbl^p`Ar1Hv7dYId@sq z-IeB-_;6$KQP(zTn-O_Wdh+cdgNJ{5ywB*-!;;dg?QfhitCuzG`>*dRl798lkgCrg zkGyW+_L4uobYNvl!qIhQzF5Ec<|(r`{C=qV`@`ZIyj%Wn7Ii>jfZN^385IuZl<^GzcxLP5dF@7J6km4vsL7t)C5}9BGV0C?pR|gtT3Ga& z&UcnP_U4kv8&bayIq%PHMbfSuIPB+FN2W|0+akU4XGKP5j<34+&%+nLb>roe-z~MP z`}-ra4sH15mv1-E?X-Da#kc3K9Qyf^cix$L=NpT+Z`ZaD8zTp9dgT2g zYuoo|@pQL$FD|}6zG|_je(E09V(8>>-wWRkJ=Fiu$YtNo&1^Dhb6S@GGoN1 zMQ>)+Zt+oS-@7J6?+WYc*|?!XXpKg7BKmJ`{p^c%Ji#98#ud9WBXoI@sQcTuDDma2kwvr14zwb!>%Qf# za+BA8^yI~>u5MZNndtlGzIjLS&2N9Q?%RV?E;#g_XYZSDUElGez2BW!{eEiZjCap} zt-|K%SJc_?(}xpQW=-h2uF|KMN6sEIs^rO6S{E5H*b`Fv$@jy53QPd<-CitF1lp1XU*cd(Jxdz6mj`2--b5O_OJKQUBfxf zRJazV!F15o!gWYpEzCfgU;BAT7v`~`hSV<(C16A;|D#ef>CgSBiFs5?k2UDApk|=o zn9QPHI&Ct*{LWF2N-5qJuBW^`@&=?Hm70xI*^S7XpbPPvoxCaZagEc@9P*|SzXdrL zZiU<6c2GEuPwpUoCz!`kPdz(Ixz45*22x-W%Vchk>3 zFdr7cy&(VIhrC~Lkbf5lZ z`xsLGeH^(0o`5I8`1dK|#=k3xyZyV0wA;V-9#z|fd=3iZv*ENW=%Z?8O{URi6pRM5CNqg=K|vnh3w%^mlLwHCQh>b)eRrXU%umWJ)VZ=v(ogd3q8D|n-cTk8F(9x zLm4hfnm}*J46%G`ZuNMU>f4<5?=|#W0i9Rh18ZR~`~an?-57d71}NzIBn4Doaozeb zw^JGr*X@%`(0QlIlbp1!Rn$%)1C&3;!L-q}je`2rpC%O4m#&>8O?$P|HHhh3QZ^_^ zugc9M>&jRE(yw}Ir=YYvrL@tn>y5nXt52257Ve1Iwx|z{QSFV5ME~-7ZT(rr*k`V1 zhB7~hj+uNil~*{)PyI%a)N>;$1EmO$1DuhH3OA{Og+VA zj4@6NQGLpps$<%#Kjo{wWFs&-+;*77po6#l*&piZ#?2zeqHqwYZw_o{94|tzQx%(c z(#yhQsiOn>4(jP`;e&SYk_=c0vmqXo7rm1oOhN+q?z-3GnH}-^{thGT(5ge<_2z)cJ-PkU({op)Ep6PseTiCCK8?Mi-CZ9~ z{CND=8{1ZUc`X0k-`?MUUq?@+4k2X74`C1v5fCg-_x7S)Woo1P!hdhhe}6BEv@qpF zt*x)~S3o?w6JCK=VHdmxufuNG1B;o3H;`|_TVS4=Ey%A`_EP_Ccn9<({ywBR{n4+y z+^0W!!rDHZc23DnN=w)42J9JLiJj)Jbt~TrwLYegBk&1)3ZH>aKR!pgZ=mZ17&;}6 zhQiovPKnJ^;iYMxpUvjY$unaqM?7#|YB84bLFZQr0^=nK$6r-{Y{$OX1H` z{dVI04Jp|fN!g?Avc^tXWB(>$KX$ID(icJlB?ywrtDyv;HZ+7La0%!%K|%SZOj4%? zBS68V71!00FnKzSFme3^Kq#0zcey)XHoDUV>DN65+2@5|dQ81@>CBr~@OeK}=O3#OVR71t$=p06IoyVBC(hAA@c#?z7sUb9i#?S<`3y48B zg=SE!6i*i*TY&zMUYztF$by`^NRRz=nt7{^^s+f6qFcWvRnR$^IWG$(u3RB|MTA39 zq{a~mitAiVasAy^@m`MX?c^cs^EyoB)2aSfD{u;7=aobXhGN6s&k_vLrW{g~2eqvL zYFiPMC*LZsGAOSKD6c9gPp@5&t<@m`^tTAr(Jcwpxd0TjTvWFvsBSG#T}{90)&VbQ ziKtCoP@8(7HWz`~TnuVoAJnD+sEwAA+GtZzo5r9v+NG#X45&?0P@86;HqAk8T7cSU z_oFr~L2X)r+UQTbs@ob=SLbA^+ZI$;C-?<3VkEg4*^1we1aR(+5fBz)x#W@O<4*D;TdoXx?lCPI@!r)Xs zb&aeYmPOtF3m?=nW0Svx@t1t0vPK}E$uIJWCP(pL6Q?}+Sz!VUvwU-&^>{uCS^0jb z)eEQeh6LyXeL+WtqNUhsh?^rrBJuuE*dxOL+6;t2a2Z?^q|7@7 zc)^?oq)E9SJ9QM9!>%_HPaI)2T~~rVI-Bib;?3^m6_EF7c-#Zw{)X;_B+(y}?K`p2 z<9R!DKe@xm84lUh3g$LCvQHbdyyQ}|R83sv8Ia_ZOKLid+f}YBr zQ&3$q#j0zj*yvUr`@yR?ondAsr4Q;E?|k;n-oLD1JiNJK(2$;4d|KGQ+;@>@>@&7& ztXev@r~EL{iECVbANuxh_IPfLoOg()xXREmjDV4F=8jUs zaqJypo|5xFf0Rypg=5H6+NQxM7!B#*|GUBI7oYb!J#u|o+v)Vw8`bnyvDjGp(~fvO zeICX!;mBs-U;nl``v9m|LkGpP!E7tFiR+-)3^cKtG?N#TPo6hOJslJS+Xl;1TOFJd zK?gjA-p~t%fbz^_nMpPaR0mB>v=)|jNrO__YXy>KNP3rYk=?jjqx3C!Nx-IaXZZY<MGCe&%kkN9?o@)UfRl^vQ0KBuCW?>jo)RX7Yb`nZ`$;Nb6Hbb zSN%agHajut=b_1CFLCWM`(t)QY`2-9XX%|ixxGD3q0D#h%O1~+(CaoIF5~Usb2`#u zQjk${z88$+)wx1E$RTF1GQbOopvf_ND581R?MIoMsSRBds1uB{_1~E~>R;_-o7%eV z(4JJ~3VGQmy&9tyj5Z$ilg?euogUB8umlo5(BL&QsvHYC6_>ZgVc-ywp*Bts>2w7wUrPqrQ{(ze?9bzZqAs6-Kdrnx2Bxq1U}d$S(>V!S7uE7OcED z&?IZpGegpFItFLkeul@hiK9oPzuO`@Sm-NbBZK-@EdeLhh&+S)TU4}oK z!!6=xjtw4sGPR(jnoroeuBcmt_<}B?7rC3JES=x=7wuw$!W!j1q z)Q6m-I@#cMR$%*h%7gW5wqCWDBTOGe?dvb&2({ICR7XJzUS&$F?DQ6LdJ==#7pz`4 zr!VQ&mTC4Z!F;4iGvk$h#kDZxD}`V>&0au$)1<1M;_AzckEp!?n>~{8XF=O`qP-UJ z*>nW@t)Tq}wv*kmReMAE&8=5sREULw)-gU+Uj^wqn4b&U&h2~YHFK(Y*Lqez3eutR zX)c1TUF~?ap3DwnEb(z*+G|eKPCC@Lb{wi}>bU!sO{%A0=2G=czHBH=A3o|EyX8~q zRp<$ccI@;vq-|AeM|OKb2L;pC=qKycHWyf5YeVbEw9&ZCSj@T!Y$M;sfr4z3pG+UJ zMROvleVO|5!eyYbnC(?<6#hqEuU2ZKX?P8l&_nt$9{kjYaqR)Ndz8%9dC#`(JIV3ic|gXh;u;L z+t|7EEt@r#3{YJ2r*Y(P(B`&)(KMLlYLi1?mM^b*3 zH0`~_-R(3#D$^XwKItl~?yj_v-J`(hlGJ?5W-qvPn)=e40cxwuJn0QqzZdzkPv<>e z(0fDwCfj-F1|g1k$g*lJK(62SDG0A?7Lu*JuZRK;-QE+b$%2R&|s%O@K z>T8{tH7|cFt#u(^sh!z}t8P4~j?odAC*R2L@|USo?z>P@XC5EC(I>x|dcpKaukv-?>;?5Bf0+KYjd(%( zXvI~oxcXFDbu}KPbHEGcI>Xcp>|bfsbL&xB_04>%%#2HVUoK)Om>?wn7)*! zxZ7WD`@NL)18o;RXaL%#ydWDjHnmsW3-XonG&c1e=+i(y7&|0ouNUNlV11i&2Gh4} zHtq8ovwWm7VdhIxb0Ay1aJDsSbZA^^XZ(D&bz#~WpO|?cMjx`l3xRz|hvrV@($f&U zVD=MTh?_NJ>{mV2mp=8U_8Paw73gm-d1gOUgLrL_Kh;)gw;tJ|^`gF1ry%>bf3nZI z=!^yVZ6wGB*&mYgpse+?aK4=BGA!X3d)QI*>fA4f#OZgM6m*9r?`*@z5J|&ZTWg z@m`P!UN~3Z{Tq7!DS!55T=I$5i?$ap7@wN!QstfN*yEhGW^HQTG%rH)X7-aR*Su=K zXX?r>*`j=7lb3jYbKIYD*{b8Eq?u#I70xynf%{Ii@qzY}!r1L49;~j`jM=wpe`MC1 z>gQ*7EakFMZPZ?V(y`36SH2f?Y?YLc++}XNjQ`Y+#&6CYi2h|?Sr9#DJ27)pP(9jT zXnu_^bc|5i%%k!ZdVy?Iz85rZN%^`U?R!#Be$ZM~ec7v^c`)lnHXC25ju)g)$10;o zdHKzc#v?mTKWg94Nl!+ae%*a&&dk22uhvdfI$%$RFLn2l7FF*C6@Lv-T;nL4K9g97(@fcfsaF&yUsyttUM@>V>+{8+t*o z`^V;w=JKQZSHIHd-hS(mHgon*+GTXff70y*`BP&y{*^77Q!}q-{AQhdDN~->o3(5D z`!DU5&9cdCcmLKng00yMXZ&VclWwynHNOg8F#9$6R{m0bGp|<=*BWt;p&&lKk~UsY z@PgKx){gvP=0)3#=Fj*Z&m%siXz%IqU#TVDG}&8vbJ3ZpNu-QUsO58WDvwoCa* zarrk66wG#_dC)lAWA~Cy1ho_LjTgFt(q`;xqxK5<^%vOJx%T5lPhellQ-7KtjZyQO z1e!nDr#zJ@6xPPS+ou(BHRtUvj80BCPP301?@-MMJJG+4Cv^Js~^p?SwmVAT8GM4JB9q( z2WzYP@|(t@b*(W?zhzVN zbF@kA{wRcL1s&kkuliEC zg7m7s`p}}h3=~vX^^~s-p@-#L^hC7hmXJN=!>l9lJ5;I=X0?PwNQG%2g}Re1gMtlC z`7*)`%s4}JqMeJX2cTJx(CbehMn1GLq zH2KTNMe5VP`MAh>;y2Ux9JmGMLJ(W+-x|wUTLBj9SBdjzt1z^3nDrGNzLmDO!R>Gd z1h@Cp2TJT8jGyYWlRig}*?;*~NdZ1p(j>o6m2fKrI}bYJ4fe5;AV!?+vn7s3d+59; zAFWjeo&iE*O zOY>veZb><*iCNC??A4E#_KQB|%`UJDPC)%5yh;noeI9CcgPE`uK8Jaqg<9UDe7gZA z!b&*yDS6~KgP|}HRBt65|0LAfi~Jovr*63~_*p;on;{kS%C3dj{2(lX#qbd5huGJ# zhJ(GTtFYg?DD11c{98pzRz^y0w*EAu^)M7W^}Py(O~jXA3$vEdZaF*#kE@Tsxr@;!qW;p!sV@tuuY*os57XBQ z+CKqL!c(vkR>9M-8rHyCcm~$Nde{KZ!baEx&%tKc0$bsE*ak1ac6bq9f|p?j>;&89 zuGv}RGLsY1lQL5@HraL?HYprL>WAsCP}lz!0u9pD;M98v{J!2wef^j{i?*3|5B}2{ zb*ywUD4q=sU^tk%xx`I9#Z{gGNuaip<`UYpSAS}+e#U|7yZdNFI>*UVpCS#^pZZdn z>L{*0)tCA)w#o+GqD%*4hx%7gTb)v=%>+)gN;3sY8zNbc`B0* z^)DM_OMdN)U8-yRW9(Bu8k_pi_Msr3sjm7oHp^b4i|DB`{aM}EDu1cI>{7ovbrjOC zeAQFPt4!@=hsrg7y5*o??8r-(@u&GSyV@9AG*{AX#&fPZ%vz8wrZ4%#??2z3EzzC@ zVI90-)@x;Wmm=(jJ@5u-2lyuPEiiAQ*h~CvDD0ak^ioW1ZW@?&X3fxP-c5A4W|;K> zeIA0t@F9Ez(yy;NeN6laEGGR4@>3}64)`#VEC{MIH66Fq3#0d|MXEL3udi%)>r^w>#;V ztB*PobW|ToTZJ9S3bd;Tm7p?Ifiup6^sYhMSiPmte+IP7>7!bmFzW)^)PR~$3u=Sb zRUPDoP#5%qwtC2m;9@Au3)*^P>)CcP+VPkjg!$u%=GO~xAphrp*^?`+osQ<%3!R;~ zj$Ec6N!6Fs`c)e*_&{q&WooZ=sj?(6d0yfPt~~AB6zr41xXhf~q|D(dol{1n@zN|l z!Di2IIKDJH^}WRFe<`$vHqaJicRS=I>=Rmo_JQq5cYwm~XMD8j z2>QfeCuC>P!Kf+k);Yax#^GIGy8Q;C+%#U>pTrx=a#Ebl$@ce9Y&F}{9^$d|(*?Rh zH#lQ^O3+ptpEM~Y`_#6yl6DFY$Ano!X_ExQU^pa$*}tX`9|0QoNMtG$cHC*S83h`* z*}rPsf%{0Ud$SfLy`Xh!&ZHDK+e6^m&Z0~c>xJIX3v{qnJil#Fb#$PQ0mT!+tyAr_ z?;YjjYun4UeD}Y}?Uc}6IBzrqONR`|ge)-58$*07$a&ew94M^wa%nRT{uj>E&P9&S za0VaD`8k$v#olPo!jR)QV?2gVfQc{(CWD-DHPXH1Pa%B`OohU1`PWikUxP7Q{xs5o zXAu=B*IC4L%C3VMFte=X+xvF3XK6^areW4Ba;}FPKvvEMS$QMUZRJg*Z-#TRat`fo z0iEm2MdoMat&}@fnip@++!yUR5Y`!EZ=>*bxC3PDogic9A>GE_Mfz?y7h~_C-F%R- z3y}F4doSh2SeAuVw^^8VA9?q~1F#StR2&<17Qcx2VnO;L9-FIO!E| zE))C&?Vbcp@KebACU_;~?g_S-;8o;34XZ&mt^wJ&7U{O}8Pe4pGD?p z<3`HeHqOJ3o5*_(HiK;30b;5V%$ZyV4b>^zaQN5sGu5xtdsxouX@^5VT znmjL<_U4Sj^ihMd+Mo?I2b4B__9HI+I`U^hCYUo7>H0f;>sEsLmc80Z=xkdydO>;8 zrFgJg39{4JFWY64vAGLzW2@;;XGijf#vz@iZSb-C<{XLk><&+0Updk*BY)Bcp^E?LyO~qZcjWVE&*G3B zt-`FInD(FH1pETOf|k{9$lsMFu9Jp8i2n&Ep)mUyy<wv-KDXah$p%PSvU$cYCtgi{;Q?xwr>vh)x@4!P#fyNg&_OtBI|+KlrAEEG4$r9R$(@!1nTzz zvnll@-VYL?KLmayNq*aeUG>q`02)FgXbiHe2{HzZT}_EMgXT~eyIN5H5-@hPB%a?U zF1r@7MYp2frO+DMKwJ2~FrNW8X=7Y_RC^CT6WfCvp=2xZrEAEAEFt6snnsupu@>;3ByDrSi52o-PY=;rL{qjt=YfTPtI>Lo4=vzj&z zsCW7(!&g(Y^p`=~H}k1)ZsrYc6J~W}PCG$oh=neoIo4TASK{43hnF~HcPQ*xOAp$_ zgU(udB74DqbyLgyWlE>9f!Cb<$jb$tmg;mig^%$4%*}+*DLAD!MkYWX=nMToPDw=e z2lMx&0mKJ_oKl!O-c59B!D8%}J1ITIf0kfRPB(PxG{Jt^{D9^YPu0OdokpZmt~OH$R}2Gh&9&) zUgG-8jPe>oGtdO^e%T$rMtg27))Ir#=y(*2hIGgP8I+0CE#xfZ7#IuLP}o(MLz`R( zJXem#5S`p>)^&2P3llHIg1OjHzAh+oKo=KTt~62mPdoNaV&a;VNXDZ{X`X=*6bBK?_w(&3lCc+uFqU~Lhzq5ptY<)woUrKH+pO46qsrH|F2Gfs1 zLi;f5YWkQ0*T7V`7Ua)q$mw8?AlDI}0W+a6N03?6zaGpHMu6>bBK<96g7V8(GL@p*6;+zo$FryvXU9_r4A1)vN6 zdy)B#!~TOn+Q`&g4AeXx$6mAd?B?T+9_{ak2VfyQ2#a7bJOoSNVOR=}z@xAXmcwK4 zIIMst;7NE2R>CUKoiME*t;YtS4a{8ZDo^WJ>sMvky=$E+tv`?HB3AX4XYcxvf&Gnf z%B3S0)Q|GihuWD7V3iA%>*8B_GaM9G$SdFf`561#X9KgcM~_J7K%_rWHp6!c(~x@b z=xN65fAB~zW%nPWO#}1nk^G-b{r`79f#N$jv$$t@sVSYpthG4c8CVDFVFPI4Ka1Q5 zo8URv3|pWu-{RKy;kVM}dDsS8_%9&0!;A0|xKB;Z_u*eAe+TGW+&hu4z^kBdaqmLv z`|z(JUx(e`BfSUt2D}Mxf%$&~EO+H@tLw zWWHT)b>?OZ^*(}+;Rt*J^4F)x&%hkfJ|}(@3VnpushMoZois)pn-WrpvObC0o0C2T=rD$^6z(gq|J`*FHTDr4%r~rBnp(3&p6n4%l)20e2)Q=0ZsuHgT)!{riAG~k@)PR~$ z3u;3hxDe_>J-7%ihWgL|8bTvz3{4;gnnE*Z4lUpkXbG+0QfLirpe?k6_Rs-*&=ER8 zXNZL^&=tBt9CU{s5Dz`Ueqy#KAB)VkKPPFg=dG+gt>wcf_cWjQ))k_|2G(XzEMKdOaTx1%0N5N=F zhcow+>TpP>UMUlLrsSmRS$g)8{(j<}e%2#1XqyRHFeYd}x;`J$$#jy~$^R_VJlgi8 zKb@@T1V@+?DV?}or4IAm|=1-gt(0F~(?LMKM*OZC-GCtX5i9YJ}j zW6wL%*pchx>10doP22v&O?{PhcFI&giMy?L75DrQwxfHPwavrT5l+a49LNRRvHm;Z zT=OSQigRx{xKta)GTOGO=|AI6@8SQ6$2i)KhY2td&hirv`!O8*etY0AJ9-r0ryb4C z{?m?Q*r=bf1p8@6kJH-E_LGhnza~6K2#*i5CNZ|ja5YSUGZtck{rHx%JL!~_<$PdQ z*IZiE`|+2;MEbgh_EX_n&`)`$A%puZg|FPRq~r42Y=Zx?NApz|UGjzR?ghm?Z&h#D z!M4C^=EydVjQ7iFeH_`v$-l}kJB)JjvmBY=$kBdzY^q;wo$Z&0=Q!yBjvVio-EMW{ zgMK;wQNP^t*#Ae~f52H$WR3gyC5jG7#f*AIF@j=P)1uA*gCJ=XRCIL(VHA`kLBX_R z)?EYUu%f6am{CzNpeU%AF=NJ@P%&ryJx|{`*j(=dhpbz5jbjS~2T`T>k8XbLsrEbLpqI=F)CYRUW@xnSPn1*#~}2(%BUaOEPSe&uE;a znT5lW{7lP>a_PDECTYc;FDGf)cDec$&*bV2IdSErUWfhGNzz64te-nRrEN}M@nJbV zlPmr8z}(#N1Menjc0}^9VP@gFt0eMo9JXPSj{0irB;EMaoszU$QRgH*^NKD>nkgHb z(^EDjmu~%Jk`}jEoTSs&Y?{cmTzP{ez3Rp7D$`v}XYbUxUvk`P!v3ZeHynCka(w8E zgOW5e`G`bM=AvtpboQ^$C27U4-zDk9Usp}!HePY7r2dI_BziNA_Sx6t*>jg0YFa$= z$g!r=w`g!oB6sd9$0g-O>z!cA<ZNjmf9BrTrvN|Kh9*GtOZSf@>r_HVh1Y4QDi z_cERRQTIblNBw2$(Wco0n*P&tO7`;eOsAc7#-*m$e7WZprjwsO=1Nnxe-tOlfZKBE zS#Rai^P42)lc#Q$q>FFtZd&n9i^0k9EB7Cn94|NL%*ymK(}~x7e4S~wV#W;9veVYM z*R;dBugx}H|E-T6Fy+yy%K0$h&f?_w>i3g$_D?O7@>5URrZVkkI{Uh^!;*AX{nJc4 z4DWoo>44*!-D3LlzxPh`cl&zk;~sDO-K^(LIewLN_6m0$x{$PDlgyyE%x45nC{EIM z?@7|^oJC1mQGd0heB#VpoHbc+fXBs;yqfrRcGJ-pcszg8UN@O8c;thmKgT_E&9feN zJZif{|9!7@TjVizd`-IW@P0e|L^^x*e{+8s_gu2y2g%8he`20gj2x?QZeEXSl$%cr zu1w}n#n&xL)x%HH4l&JMxBDrkqh^k{%Cuwu_KAOo_4(`>jw|+AquslesqIca=E?f? zX)p6=w`ZD?jxQT_M=R2@^S^m=P0~|OxU6(t(oruTH7-laHlT97>p7>`!-ajmP15PD za`WcJZoSZ(skr8mWISfPv*$S;PwwAyy6N|AIzMXKbLbBGq2m4J=W9o1*LQ|CM*r*! zzP)r6(&E+~?`cE2!J;#|v?rZ@&1=)PA)WS*U&?nRoqz5MXYWjU$r){%7L&4l_|M`b z9hO@sC-?m+IbQJ1ChD(vv3|cKJ?`!arc-`dKZ*CZ=bn2v$HmLF{`3X&UpwjD&q-&` z`{bgA=q;YT{@m3_r*Af5(#E6%9^CVXZAt6xH{ig|q(_#Wcy+H%nTm%;{o{gu9FIM7 ze7${1FCVqqhx?Nr|I&5+4j^Tlct&xOzL8tMw?8Mhj%|NV2iwj3`_tSy@MP)n9>0Hk z_Ug*?A=2VaE%p3^@0{yQ3+D$A@(ra?- zy99O(@$074cCm-49fX_%5o-^>}Cg>Y6 z|G0J9kTxDO>z3_kr_Hbr7xmz{|CowL@lWxrk=wjFtW#$8A%9u-aO@d%>-o1Ie4$gUKCUb2m7A=;@_wZ2tTXJHk+grx{XZRC!SQbkUw#YwickJ({)Ly2zH{`2zfS3t zDO+{i#)sY1DYLM7?@>Kw(4Qv`*#5(rop@65=Jz+cw^OF|0pIS}Zx;30HaNF9m*&nB z3tQ*TKih0ttbG;h^%-G0d))jBP1kObas8_3dGB?`!TfEuY105b1Ezd5cs&JI`l7 z;HSCGVL12+uPgX^#{D4+mJbAFvoI3IfuG8<;PF9~`=d#f9RYs2w2dqrUb%0%_00EQ zPFaXgqk}8=2a$$t+7-{M)z*IX>;={J!G8;Ai?)ZYS@!Lt_8bY?kZwPGrk|{5eLv}D zL4R1+I<_Cr&9S@0{_wB1WnmzwL);HtX@9%#7ImXdD+)69Not94>1cV$27I`m>)`(gjB z8?wFFkFqTLmZ$5Qr!BT?AJm~OSxASHZKQSTuUO`mh0dD#q&>D7ebguAkcG6J+G1WT zJ>i?Es~;^-$BW0xsW1BCz9_#5MBhs)^BgnF^Dbj*CLF*3Cj%e}3#~kNq@Oly{4H6|#|ET^si8e|s#Q z8`>Iu3cow%XOB%dZcFyFpxl9Q2w0YmrSup? zOdGT6S5{lJA>t!0L$Z~5wXrw9jZLTQ74YIGkm8lS*Xs& z-6*$?u@~`Yn^~|u^;@o=YNOBih%qx>B961{mw|m&r~b7s>NK^Ec4whFdmT4*DsNqN zg}vrgwI)SOS|{d_Y4lH>+7V-sWxpmnA}$?U+qRAL+N-UFWU}Ok?bela+m>bF&$Ms7 z+UU05_SLaXk5l-vy0&{!$NJ$*_Z`=euzf`XR}}EQMw1n_j@A`UUTYQ*9@Fm zdfjK2e0uEH@2rZ=nR~JGLCWXATzCi`2JL)=bRIkkkHO>c1l09E-%nEKDeynvPm|7v zXP^)5_Xa=j_ky&Ovm84(2HH4C4_cOE7l7JKt~l8$8-eF!%(Ydrcz&~@vm1Pf6Q0GO z=iqsG0bT^1@Di#2{$D`)GQ0w>LS3Ek8g*WW{D1#fH*5B&G}Oq|8R^I?JsJVR?i=aIuljU2)AQn~j~D06hBO!8@!i$%1+MBQt-hw~e`N}<5gYw*C3*G_CQqS!~(zmJe4!jHR6{=sh zL_zO^M~*19o;n6p>Uf^?ed>JxAHqlQG339)rRslN=k!gh)YtmZ2ANN&zX(2s&(!5J zAbp4OZ|d^O#|FF?*mvCMgZQ_#&)^O8>6+ZL6kk{B>5rbzsk<1yfG-Q_@#)#*^)$J< z9jW6sh4d@rzlLw%+d_4d4moK3Mvme&IR{U0kjuyGApJAGQr9BV@2LMh`~W`|(zPV2 zLRabFgDd+pw^GkG!y06MqVCV|3;bFuJ-?56Q|h~oCH;-M8P>OYP#^y2Umq^43`iab zv_Ji*H>rXLxVi08ejN3;VU<3X6?{34nMq?|FL-!U#%*2x1#tT9IV z)X1jO{oXkD%io?kvg^N}d2HUI9-ALZd1lx#4KmHJr#Y;_irj+KZSK?!j-R;a+}*Bf z_r^)DZSl)Z=1oMlCFLu^O0Y7t0vDzH=lxb8e^sdKqO=-yR)_SWv?g4 z?LnEkv}v8H+6;a9Z7OfOZuZ3$QyKHZ9v3dRI7?Zstb?vz{h^+??6FU7_CtN4s1sq=Eo)LaQ35J^TQr}9{xAa*l>$m9)GqCb;S6E&ullwLAz|ryod`w zT9~gLZrbd=^&M|zBhS?SdeYW!mKEwN*-QFj|CKk@N496Z+WMlZ`r04%r2S8JV!L_z z*tWE}(A>4G&=``P=m@`QYs9a83IAB%F$Up`{hK3TV>wIaWM?bnWy*WPbdbW)?~oKQAmq23raflXn+ z!23?0wO_9ur$2l2!m0BfT!0;!1;}kiSvzPCo_IEgs!lvxP*&FyPY3GcpLl%GyrvV+ zmekt{(kGr$Y<8gI^L$_S9aw`X2GK!|pinLg$`lG<%hcz;|l=?Ljy3 zc8g$j@XfQ#dSQ=tsz1)))>n_R$~hU7iGX1@(+?cvbf1-pcCDKQ+b%Q-EL(aKl$^Ji zkADrfXYjpT-U)UFgXGL{Yi@SS(btz=egB(J4&P~IgFZ6=xm_qLh7vGHI>E9GlFsPM z50WnA)f6P9$aIBtkmx*TrnBU5&`}P6r$e0>sZNYjdsWV}-qOw^gH7EIRt%u+MG(Zm zt6K-!zHK?cA!A+bOxqfH5gdh973GzSQ@c8q_t9XQ+f*q}%cRs={@r>5%a^hH;?k3Bh#enndMQ-8^nAGmgEJevXE z9jERAeW4$uXU5?)7RGC&*l0Mwjyfalyq&Ym0f;)L4uFm_0HZ8jU!CTQn>rj=ooOA* zol&;smb}8idmOz+4jy{YP~N+gyK&Q>Q*ZJnsxCvvB;SkhOOdH>8hKZ4EHV>MuY3(c zS`HnSUrM<*Gm<-j-plDb@*uu&&v(CmSESs%p~pLcOUdQ*yc>GFAJcEh&_RbTtwbFS z@qJ>8Z_oN&Cb45<$`U(#M@RBy)v}>}1MPP!a_w{p9o}e5$>}HC7#4c8qwkP$WBJZ# zT8%QNhYs!dT_&kNy|TXgerDfqRPRZQzyMdM87h9+vI;jytgX*z)0}rMWTAqQ`9_skZEkp5JXLRC8&YhEY$Oj7ekG zl=pMY_>J4;^}nX@Zz$Xk_J_YiAtRUe(_a#|hk^6ZaVd;Hl2;DEq6s;Jf39edIS_q= zU@(-!LEy@IFsZlVhmc;u@leu3pspW24yDd8NZmbl!Vy{a zorEy~dCTte$2BjytzJDc9Y?#8yGOoFub4q=z9t8pgobLUp&?S_68Q^B#o*M~+TjV4;rvs9SRB3C)X^ zZ;K|o#5;1Qb9_sw-`pIJstIr;_>&7qkva~`wPX?GIKCAf|G#n^>hi7V;v^lu<7tvdgka<%xPTrGYBsSNw7`l4Kc z{?+t_xut#sY5obhzE{xSer-DC(@(4p|x;&KaDPwcbrb=F>1z%#k#jOfe_CpO5OOg~S7Q{goD zCq(T1i~Xu%?{vy)^BR)m1y+eacCGvoqoreTA~wXgm&;Ddjl&t}J`>J@iBMAvdM*j= z%R2g8LY~LQDq}C*c%7n-_4VXjf6u0m=fJseULE^OOeAMLXLtBuiH8dW+<|4kf2;Js zvaLLwZ#{T;j$3Rfg0hWKKUd=Yxys_a*Rexb)Ba;6Dl-7On`AEvs9* zzGmG1>oMZfgKVw;*&uT{{+J9`z?E_InsN zuzw@m1UEzadl>O{nd#);0=L3#FavG}-!5|p>76hW?t;6)x69l^dN0g^``~_<4G+MB zFbC$sL+~&>0`uTecnltg#As7|6mORq@~;M&r;vLZ=EF1aEaIk1rYx8QAf z2i}EQ$h=4TK70Tl!bk8id;*K$Q}_%%hsE#(d92^Wn`8UHy0s+Q`vmqel)NH;9krUiOWp+-?5p{D|jj zT(Uv~Xb6o!KQ|^_4w}I7umTi8Q>d+STU*06@E6z?Y?O_Ml5&jAt zp)PC2PRQTFT;G{A){Ge(r(-66&A5~DU68+v^lrEZ?giJ3``~_<4G+MBFbC$sL+~&> z0>#uXfydZ?9G-wD;VF0;=EF1aEF|ke(SLg=a zVK?XjJ)sx$hCWaRyTcyP7aZw5VK3Ml`h(jP^zOs{zVJ8L5B7(@!vQb=20~r+&PDHm z)EfkYp&Sl^gJB4$H|!nCer@eth~7hxKNN<+a2Nq2VHBkG>W9OiHh##Q-yky@*)cE{ z#=+rm1dNA#z1lkgYVvPu^d5=aQE)UI1INNYpaKf%)!yTvx^decy~iVS0-OjZ!O3t6 zoC=}$H1_Kf5B<>lPwM;&PKPt#OgIZBLg+0N4`)+eRh*4Q?>Us83+KW4Z~ z^X)bCUPu1*a0A>3H^I#?9crUDZSO7AacgoxgUqe$-v%?_cDMuXgqcuVy>}s-ULQ6_ z@7?6x1NXu#xDQ;P?V*?CdsjpE8@TPsy2Yw7eT_vU8uE5o_k)}0?^*4>LALl`+aR3~*8 zMY(nRAH=T?{9d;yVQ5@pE~qo6LY8pY_(rImUbUeqA-I(6TGH(_BxJxgZf5V68J!RN3Tmi0B{7wG)oxQ6_ac5A$bOx$$PL1W6tF8NUDoSlYmyvBBGdI?XD zqw8z<2EK(q_&a%eyiZzDvRp(QEkvJN8M?ls{`c?${8&g=a$(zP-0)Fd$Bh`|ui)gy zza4emj=q$1b)NQy`p^Ixg5%bRv@t9PO<;Lg0qSz?@BM-z>NJHIw`S~DckS=}g67IY zOIT5P@Y;W6(pC`n3szx&RagyHhc#eLSPNRi+OQ6+3t3nX+Q9k{_Y3sH6#TFOd2L}s z*a$X;@WUqTZwi}1J7^D^Lv25Q{a^4y5-MfG2979S628f~cL=`mGf;9K>pW~|@}ANH za;GAf#1sDfn*A;CPY2i%wld9MSITlLR9d6ICmeA;4;{(aOyW5<>Te6%!S=8NI5sPIpcJ}7`W~R)2TRu4g@(SpeOVKZSGCl2jX?`W$f>69`Rilo9p_6EuK*llX0r+Qa5Z2dz)O& z{|&KWPuL6ghW?c&D z<@L??DVw*S+#qu>^@hMuI0Oy_Z5~EC97e!M7zKwxUG5E!Mt%&8g>j(Ghm#%w<6#1% zZ9bCYqu^*b29AY)Km{BJ-Wxui)HjcxKzbsa1l}7yne-Gm6;6YH!oT2jI0MdvvtS~e z4d=kQa2}iw7eI2o?zL3z)^IY$8{?z6H+UPy5Sz=~q$b5M&Mo-_$-FM!-nWU!zD5gV8Vs#)AGD zM|wC+q5gQ%32-Fbhy6#B9s|e1KcE7RgX7@@I1x^QWNpDGSEJ(^m~dpmjpUgNrGUh|@p>NUNlLFOYWeGH$#BKQn_3;6Vv^2!Vco~D}emw4SeHHNeD(jv-}{GZA1om@ZtUUAItkDVpcvlY(pxwCvRR3|z*Qm$Qk(dQYp za{{>8v9M7Y9iXR`)j5(2m0aj>nAHD$)Xd50wZ6{r`Ahe0OMN;p+Q^M`PR{*wdoj|6 zXu7`otgoJUUNhQK#}*J{;IX7_woIA-Y_L(l)*oMvf+^tk=JX~Pn~s{s7f%VO6=5Y< z8Ct45&6>JR#yvBvWrgqTH0I}Q-#bnbNc2YU(xmgy0sJxpGP8*=( zJz$HVbKPxFU zb|7tQS+x;9i-}kpKNtG-ns;OB06LeWUr2AL&b%dQ@XV?Xbp#(ZX zXXpZ@&=q!tZqOZegC5WmdO>gK17)x~>;ZkDAM6Qx!QRjx_JMujZ?GTi4}XUPU;qq+ z17Q#hhH^Lv4u&Bx6b=C&m^qZxz}2Y^_R<%QIR~c)CW661&OZx8FsUN~C4wTY!-1Os zwj1Szg2ucUXyqJyw+KAjN$2J3Ot-0Q1i$^XZG$H*?ZhGMeo6OTz7t*lJvaln{ z?W6X%Rb5`P=&j~OpRUsKLB4iEPz{F>FcRFRF(F5>e;AAgC*&AdmJ@O;`u;CZ$Z^>3 zgghLMfEWk|$iOsc(t}}OnIE5H987~Hg3EL`C}Y03pAH7|Vj{*_+hB;GWH+f7lf(8y ze@p_~j{s7K!IIxjO|o%@vhDsluQI_$I^H+`Xh>`(a3zE>Ui z6tZbU+Hcm4zSLA#|Al|-WB6Eo){TDJ@APDK{M{lBteY=m{pgE}pncIU?Xw;8+@i0_ z>jUNVsX8sQf9h73Sf;G@n6I36hE3|Q%zlNO`)6Mbv0LXl+MA9)_ucaSKb$<Q2W;|$T#Cpsn$4K1r+fu)BF$dIP zyP;3{>e{VKefuAJqi?3_w_WXU%ePV6os;@R>LOQLpF76-S^Y7_=4qG5+Ub^WTW#v4 z`(4-Zv3=Xr2HVnC+7fGizCG2+Ye)Fnad4|^{TRQx_Cvo82iuQ$3|p!iPy6hcXrtrr zv0J{)+M-U|u#frcvUxF<>eEN|!+d>dy+WV*EU(Ijel^roK@pSxkV+leX0ZJ}kxPF5sd>?)Rm%v93Oafm91jM? z39u}K;zacQUk-|su-~9K8BT#y;WW^pI@&>Uz&th(+;^38-&I7X8z>pu+u_4NpHvl{i+pK2*OaSYuPg|;5Nwrs7+=fHgZ{3K_F0W4cNCd6awG%vDlbB+e-I%PsmHtFAVs%dG2h z2Mjhr!_$m6Y&*N<97>Is%%-z(ft?IBWVy3EvB>AUW>4?LJ zjvhI}cYaVM@yRsq&HCM)SyQmr~ptFvx64k>k&Kl+-psbgiielgDNr!iq)^_zM6OWW+bow3}p zvHzler5R-#A>- zXWOw{d2O`c<|$ujPLiF}P4}-hb<~+3U$z&05Bs#aHfsZ7OZpUdLe%e=IfnUtu8ocD zZf}t3a94xOkQ;gKf|xN~ia9)I0On1pOryNr+y=DDa}5vi4ieVmGvG`(3nqf+u(L_e zfpg(JI3F&6x;#I6A@Uc&#o+U!myrG&($5s-e|Kz73!ZU8W)fTmm&0W6`Ozy#uY`Dh z^eXnJz}0XKOoeH1EnElJ!wqmF+ypnnbhrg>h1($chy5PqhsRTs&e6H}CB8Sd`op>J zq0T_|cDMuXgqe^$3_#tH!^Zh=ZtfeW_*ESl>iHekdK}Adl^eU6;&}}+cTxXtxCicq zS#TfR53}I`co62mTzCi`hDTr?JPMD&()!_;xMU~-Us8Gqt5H_ z2D}Li!G-B9(zhYLH1!Vq??PR_G?n|(D9`XPbNh~+Fw9Olac9%E7gB3Z8$L2tBp(-)5S%T_n;!$pZtf|^zK8OV&O##iIP*ge6ZW8G-@VqV z$#MHndf@g&D}2}IislRVcz?i#JGScE@9I+~ozdz1o6c^u`N#8r9Nli5P6o*1U7QhsRw#a^TlnPRn+^_Sk<{9P{@%hhI7G_P08J zI=b5>^^WU3uzlY_b4G7AXI9B;yB$C6&YQk2J!HG9A6Yo`kk<3M-u16jCJY(&%yF5L zh5v3*G^s(Hr6av&(fn2SY0$Ix<;}kw`pd4v=63w;o~dj6c0#w4&bZ}+SNp7aY}XxI zy_lk`bk+Z*=m$d-U0F@;8G{KY74*rMsP+>3i`Ld(Sw!c>OI_p7?6-?)TT9 zGqU+rYaG4yUCVWzbjX>zPQUW#y(e7w@Swh%?DAcgD;tce%N&%X5#u_i5QFt$Oyj?YbewGX}i#bpCOc0e8Ziy6v1xl05U> zwt)STJ+9owWlrt*?smuSczTDo&zw-Y^Qb$sEg2TLw^^wmo~UOZxAzc%|kaKjsC z_MW~@qc)|@8+>=nIa{CId*9c4UA)2PI}RG~z$J;A;wGr9lJCj*cf9ZPC3k}cv=9MdZe0@!qDLp>i>&c@VeYjSOcGEswc~P$$|MJ}H&mNKO z$YW%aTNE|9EEkb{T$HrsQX8 zZcx$xf!Q`#al)M0tGDmc@2B;!(QThxe&)nEvoj?(T-BneX+>pLMUu6UtnHe7#`jpi zZj>3)pmAo}@{Kdw7eVvJnejg~%3Sngqs+{oSTTQYl==Qwj`wSvSy;buro(%UG9{Cz zv?%(hQIm#LgKmu)XFh~e8#m5uyjN3B2^YAXI*l^}+910ja+}iZ=8ZEITcKy$#+ivbQfFt(*}rjS0gV59N zRQr#9>vP;cFIlDNrY(1P;l7J^_-y=`UX%A}&}M^&f7vttDj-fYj<6>%Qx{mbSB~HQ z?2qm}c(*f7e!lxJ{mb}0^V|tAOWG5R22Y4aNkqkAFYWXB#bpEfT-@q`6At<0U4GO3 z_c~?lTSr;zxPW`oa%*wJo=0}9SgZ5YU#D!nM(1Jw^h~a8o){(M+0Fd4Vd=?>*14Q6}k6bXd%k|lnN8B`aPOp4fkL`EZQNGr{Z$In% ze%Z@$ZJXSMIK(vGVRI87OKcnNF&Vitz2-TLo% zR>=|9?smuIANw5s=*z2L(zN20%qP2dI)1x>WvhL4&%r<5e0;C18!qg5&b(P$ow@$p z%ZE0(t8JT1!`?G4x@g8~2bBMkMW;V^?6!ZVifqRUSX|@}c{8xuQ*4zX?<&b{$knuXZ~4y^6bz4wQZAAcebu_F>qcn6>6h|eA@`y)gOZxZR*spBkUj3 z_U%`1JpI$2r|sHca<@<4*vnY}qJI`xNb#HBU6nX_h3dGEIMw=SM|>rY!QDm~}lbz=1~`qzc$?(@a0Pgm1!$8s>JN1tV3PcZgk z+?*&`s7e2!CoXvKjI$@~dcmSCXS_Y`r{0BZEJcsH^=FKK+&3UA^IOFlV_UrOQt#_V zes=b4_g(OCU3^=U?(?V3X?I%RW4lheZ^y@GY(L<~y7s>&{rh)b*ANoj7j|)v8$imp1Z4U$MqUzOHMsv#dUB0IJ0Ved@`nE&cw&TmB((p{`-e4-{sub zS}k|MkK+dylHDrN%C}zbYqxQSS4%qG^S99xZ!Vg(XCc|GD`l@~df2G_SO2xsO}7u; zZrTHXKdO+d<8Ayq{zEG3eK6&Plh3;D?ml;4HLuI(t2Ml0SMnW4V~I$H%cBkL z(T>eQT?auH%-3OsiQV% zM<275_QY|Nr^hgSR~OmP6LAnacC2hKKffyZ=u1`dVYjyZ@z-BVUb?46(S!Ah)y~)M zij!o?jeu_}eWIyV%yW~EgIMOxsY3j3)%!(w6GmE}1^NMbYhDr`Kzkxr)Vl3S13tbIH4g{i!ew zu7&I1dbj~@gqz@Im=3qVtq^Z5xQ+c8a68-qcfw4#3+{${;9i&o{`cuV()(dHJOB^E z9GD9a!NZ_q(w*Ir<1E-|gJTrvcuy89fLneYKLWG`oiFO!A3~R9=4HWhofub29vfVn zLl$~Me!2N+9R`ne%pVAGC2oG`wQOTZ*Nd_UPUWp@d+KWkSxDEhEIs&D$$4@LTSDI^ zG1M>@K<6U|Ch`S9SgUGi_#REBe@n{ode7x3;<* z3)vGK%kr>cToqugVbdF^|J*M`% z8`!q{u5mH8S@xs<>}I+`*l7%et@=;B)!9(nnAV2s^en5s{5RUb^o-*f0kY)ZQ08G z@V{x)4f(YGo|J26=yWWUPtSqA9IHP*Xl2GF zT#H+7okB9UuMSh!AMJ2o-HxAS!$2E10kGO)`hBz<8I_`PS_1pE|^KYSR zjKj$HTx1>B`Ksiit@g;MH_jVX$rn2R7izyZx~kLJlXC5k^RoTPLZNGdxQ5X-&u7*P zzr?k=_3CmxwpXPdeXA~GGJOq}<+!doOR1B8z3^xBbVZNj_Mh5Ql^(B~Lch=1W+AR8 zY*T+&?p(=_wJdpc^-EQD7)!QmTecHpYrEQztxO&7|MdRZm`Z*BleR}}M~p>3?3aFy z>o8Mg{$I4wHALI&i{s?DM4tWmvo^P_)RQIc0wvI^GToK56wJ>;z8~}FYFzIly3{p! zO?tIIf4=@%UBr{GN zEU#|8axSFhmsMX2#a5QK?5kx}^)+3V-`953%jVUM`-W+KuFLk>xN=-$91C6lC^G`A zlZB88z1pkpC{K?|I=??M*<~zi|HJm$od0Y;ZLj_c8`b6Uf3rM`{we>#Vp>rt+3IV_9wCu)-QE!Kb60o${U$g{0zyQ*^>B1`TWb!Xo`gf4BjpT=4i zjN$6$oO3Mv)R%qjFz&iQRsUkXs`OU*>+9CXWHd{7V>qQm$ozR{gJ)YJ^E#- zcQbUi2Or2c7WGw}Z#=f|ZpLO7^i9BS?wjXJJ^R+Ld<-4*;kS!;-olpwTdb^KcAH6_ zzao+4SYPNX=WdLV`}#nCn`gP3wpeB=SujQ&OZWAu$EE|px^BvL0B!c3YOG(i)v*b6 z+_K=@bc;N7*pB0oh4gr}V@Wux_h^GwO&lUo*@-Ly%=hM7h6`0DSPeDxO|g~y<#pJ7kF zYsp|IKeV;Xe_%ToK&LinSmjS_=f3V52GstCwP(K3ATu8pL6bN6X&*@EZO`$&FsXu{ zir`Vq^5gKDh`y+&O&-| za*{=UI;c^X{DU|K$%*MeDdPg;KaXQUw7$VDP9XD5%^v~Qi^VI;zGeG^`_>7a9$Ux7 z(jX1H;>MMF>_-;DK6S<7+LnF$lLhl_+kJyLy^xxhFKa)|k9yHJ`zqQJK8VS&M=IYw zXp@VuZE0)RuTGD%;NoI_y5AvZJ?#h^^g*`r*!s5X$)T!tt>>Z;`ueaRCk1`c8}a$+>!g0}u10npcFC5=2jDbTzU+dc}gs;rA z+&p6?=A8T1$-+Pw0THvxTQA1VGUdx53x#w$Ug{YQ%3I%5dtJ=4puLv6Z(M1sZCX#A zq2J?td(3l<2pMlmsZTwjQ$MBc&Q>0)%YDbeHq~KXZzvRde#tUUUdGGj5V7O_3Yn7A z&uv+B;|l$Y8fKp2MDR4shiBkf@N4qVk#5(5R|>-w96!(T3*gt};|a>C>`#Mh;X1e; zZh#x%Ch)hlUZl=n(eV=LPNX}-E?{ujc_*&{oCTevBgOsnfXCokHWIR+jA?rD)qx?a zvvjWVUfsr>z~SucL<7Zu(kX7s%BB(M%0dLuva)Zh_?gRIoa8>yI3?FH_IaM zEmzLEF{TmlZOK!wn{5sT+>_{2-g@bYxUAdEqJLv>Vj2h9s@=9-T^}}~+${^%*LU%W z%ow&0ok8EZZ(iumuUlKWUg*#^eWYLXn{y*yp9{U^_DA{r@1 z_SsM8X-}~Kt_#+U@iZ^yT*LucOZ;V-vauEzSG~c$n4kaYP&pT4+psO=STyHOYFYGl z)BRfHuBP8+0=xt7!h2BD)pSfX=Wh4mqlPW(3u+gD*P2&zHJxuj?JuY^3!65~WSce2 z><1^p4e$hHXwR)x%Z8Z`@xe#%F?<4lSZuc3Zm;suW6Q_)8`)*ts9{3~@qRP|$3

    l=(BD=FpUM%g+zJtY}*AQ7BDBg3yNF5UKbqo+82pBUIn`Kf!+{T z$+i<0FxA-*3$k`-mwpM|wx>e?Xf3!#EaS1V1G?m3tGe4unw#XSy&I+!1}NOw1o{}BiI-=f#k((ea8(? zznEe&1Cl92%FCGH@kTc1`ZVNyAzQrKr5=8kIM(m2*KC;C zg8CiQ0b9Y=unqhLwuS9rd)NVXgug;Z*a>!qUDo0^<*sX4^u==Psu4`r$x93688OZn zBg&}sG-qCWFwbK#3jMreSME~ZH)o%^JT@vruWfj$3|S*OW~^=2#)khyceG1W z$?VoPZH#u0WZxNQ8Sgl(8)Iv76ZUpXk!g&>ue1&R8wA(PP`Nk8aip z8?-lkn(mi!`MxkO+OkZ&_RF@+H_!Im%u}!Js@L|6U;AHM9qP88cBkz$ucmQyTx>h~ zVESj`K|SFs$1nQ%yRMSyx3(<0r9nHEkz$sD66ge-p$n8kSJ)N0L3h{(>2lR!0uqW&VdqaQN2lj=(!G5qm{2dN}0Wc5_gh4PE%Hbe57>2-5I0O!bVK5v< zz(^Pchrze)K09#FncYjTJmT$pzFq#SjVqVd5v3yzPJRg1%fF`dciZGDYeaH6xB3})traD`hs2@S39-XgzTE`X~8+7KWGX_2;o@F6peSbss z_LfC=HEy~V*RRcJh>j<(c&qGHyxh(6$j@{x-c#tgXe_eh;BYts#)IeS<5%R|+?-j! z@f94$^=@6x)Bf;$GjueEs;+knou_wME%*ChN7A;x116rQO^+fk&eKP;e+(Q8&$Qsp z?W7eDbxe=r_zCJh2~WZC9G?K+W7`klHUvMMNZv`X6aC&9w(O8Z#OQ+t4ssll>)Gv* z^Ljh??!|FQS;^?p16?WfZ9mE@Zm*xI&v89y2o0byGy=C7Yd6gNlXm_Er^6X=Cg}6C zNGC%4*!kJ)p9AMYT|Q%+hy3}V&o3ao5DI<9SdDT&W4L+uUfeoCOaKGe>uI+v{H+p_ z%+dZ~>j>WUb2|$5gHd2z^&A6k`T6E0pVNGWbmw>-c+QuT@sqv|eFq`yisfLqk~xX8 z&=zdpO&dIp_M)y6#z~|-PP%k|I7Gf=`n}wdT3cL|!2s#G`Xi{R#i2$zf8SpPwZ^^3)T$*-iF4y2BQWp!>>4-ivY5B+t z`|N`@*mu(yk96Fbr+v|X{S|rU+n!t0(U$0s`W;g@_oLnDr#>^^emYjxv){Jiarn28 zJjIDml!-o@M%%WlE|2YB*sp!I>E^zhseZCwZXSocbq}k|(?_-!Z75$=S+p5`sY*^A zwpEjy<=UlQ(T4Dk`}SQu`c!}EKR3&UL!mO~u{zsUmhVF9RtEMp{BEkxv{j$#E8A`l zwriWVVOx9 z?@>M>^gLgwXZwvCW|~v41+;_})sg%gGkK~gXINQstzWtP<$eZbb?Ui|B3+3(D?=+- z1(qzRenPNT&ymU6r2PYs-_rMLo8N8V7zfvdbUgX$a_hHA!_4aFSp(LDwV*Y4k-0YM zIuM@#)@45nO`F&46To`ZX#?@8Ykl^s`vkB7XQTOT0nRu3GPlIhR2EP8L~4Ou>~4R9me1UJKUxCL&7+h7LV4tKzvFca>AyWt+V z7iPhIa6in32jD@N19Raaco-gmdGIJa29LuN@FYA1Ps4n82A+lI;CXlfUWAum0lW;a zz^m{Yybf=`o3Iexg16xvco*J-_u&Kh5I%yB;S*Q{pTcMGIV^@R;7j-lzJ_n$TlfyX zhacca_z8Z7U*K2x4WhsH)qdI+ZP!liS_s;vUD~H@+NDj}7ItZqwuN2Vq&?cDP1>Vf z+MzvROE#Mu!x;aml(ix64pRN&IA06KkYj5+3}}-ZAAP$H`?rt|CM^eJ$MLVv{)*57 zW;fs_KdCWf9Bha#{i|<`fh)kcS`!)PKsVCHV7wVK8)kEHI-C7D;P^TZjOCTHxj1i4 zx;Cs1Ykce{M8>efMt^*z5L5_{L2f&y!2GcQT3`VT| zMkkEDh%aMpOWJeZI`^C-3rJsvS70W`uamwCkAOBEN8a&p0-Ol;_hiyj;8Zvb{t5qr z)8Py_6V8H~=Kn>=Tnv}Mzu{7t1ed|(Fd6DK#~0858bTvz49h_i@J3kN0COp>>84iv z6E|+Kcq1x*XReot^hwgE zpgH?3p)>3XF(=E|cMW|B`m;X*oS&meT~}TI4`lyM(mhGvB7GYgu;bXn#TwWKxmXu3%H-DWeURIc{C!FHgTKK6 zFqv|nBl$ZtfhinMB#rUsD+bB<^A!6Z#(z2TV*DGkzZaYh>G9v4<5kyVoJk%3{-ljy zPuLrHMk2%i&oln-d}ZMOyqQ&CRagyHhc$rv_8IQ)XSm0l;ofM5TYs5#Aq(q48(1GU zfVQw9Yy@6)dgZk#YzFP1J!}qJKnK_owt}r;8~6)s3){i=umkJ}e}#^)6YLDTKrxg+ zC+G}apcJ~ouFws-!*0+6dO|Pg4Sm4zJr2J({)MjpV*b1SJN|!W{dfMm{yYAK*8h_l zaK3@7keLEkLyUjS{~x~posdF2gh@SNLpUUxR@K133PbZy4$`3bY&Vq?> zHk*hm&0VZ0)E84t4OE7)o=|=g=ugtTnE>~4Zx4; zWp09-VLIFbx58~O1Nd>i%pGti%mjX@FLO8C1NXu#xDW0JuWcTH2VoA(g@@o_cm()? zunfORm3a*ODI$JaDDxyd1wUbPP2=x%M0)*?>;E(HVQtR;RbBsk{{R1l>;H9FN1vfD zUW3K@@AYA<{|ngnn#}e8RdD_9KpoF#uKx?+EpYvR2i}GE;C*oY{}5dNKL*$TMG))1 z*Z=FH=L^y=A=dwI*pKy}A^yYlzt@MJ4}YVqw&VY2=YNcUb@TrU?6?xHg6pz{=fCID z>mhyq_u4jp{ues`--Vp#Lg)Xz;QYT2?uY4(n1669+y*n?cDMuXgqd&`+zt1@y)X;z zgZp7NJOB^E99Rrrz?bk9d<|zX2xr1sFcHp%bKqQ-;~N{fppKxEZQD|6fbF>;KuLuK#{!YD(G+?j~;U}2P^K74pc8b4h4jA*sq?>-v@7fi-JsC??@s=1;Ps#LzX$t0p%?Uq zugU8}S_a1a?xa7E?m_w!sn>ro{?C$^p8qFMmVf2$KY|u zaNYDI$y4w&`1#NC|MKL=`F}Eb)t&!urn~|2j{ib<3*LqXC8TEu*)GsGbou=vy zeYKHAJh5RY=^zNZtQ&f?u~0eLOX?0|UzAh6Dw{%AP4cKn>`{-l*uR=|YkzIz5lj9D zrL1*o(mNQLnq(2FvES-QkCSym_o3`NuGRUjHnQp*0%5Q1)f6YSl~=cR>MzHyCcU+h zMa_~vJ3ngjLHMUSS#?^joz=-jeAh-+oe{g~d14#Jr+MMW&|6!1sxHy3U-Rpm=T==? z`DMx<1ja$cUF11#Vr;lg0R8UVH^!p<{CtX*vQxbw8-3MQ^W8>)?SyT%7xIP5C{F4q zuRpaZEuYS(XvtbQj(v5f%e5olrqC7ZVr}c8DpLY`LgyGYNNJw zP?@w*lfFXbQMWedk#zrSBOkhLw>n=%T&MNdwobHBldlT3QQJDvM%sUc^c5GlTc5P(C#+aM>F51fPd+5#2S4U0$ z4V^W~MH@BA*=8@OZXU!sqwKy=oAp9j^@cyvI(m>F?YV}h{g9TctzE8NZnd>71|(vrbL%l(wZdvg%Cxdf~;O?qo9uWoIq&c6II>!f}0RSi07BdgA|FVb=MA!VM+3yo=^IL((= zcfLQYXM6dwF)p>0S9f)K3YA$W?UPtDsI$j{vv)et7=Lm#?i{UG>JfF2B9Bo&Fbwr` zN%Z~e0)5d(W5BJp^2%zXdi7UwjZk^)xx_rj(M=iiqK!DVtc`!z{EY8BciSkJB%eLg zpNI5~$8OQK`{~aL)!Cwt!iL(`$=C1NR7i*UZt9Kxg%9%E%`eZdm)0M$AyepHh;5qh zI7;|2^3%uq(9eU8SK7DA=9iI`^e6nDwkz^NCdNZQl2 z*t@U&@wt}WKYShz9g+I1gIn4c`TOa63Ql%PrCh(P3MJ-sXEeSj;Xe%=R|cf zi2gxGw3%NoE$e=MyKj+ayN;h*Rppj-0^>=4JEqoiEVcbjaLcbB{Yu9`RWkZjU$|8# zqb|3qWTG$rf6wjiT$03#b+teIWei20Vi8mNFO*NBovnGWkW%FN%OQD#8f zMw!Ln=8HeKYRw}^unoMm5|1H~`mMHYTkyyT#LHacs}#OE;cEB=rb10GbKMqwzRa~F zq+jM5t~V{ul+2sGV$pT=7h_PvRd~Jy8iNLH_djHi4rw)rm!i?$4zQz!Lr2gdJCW`T zyMQlODJCs}x;ms2bvi@7Lu|hz?RTN96uQE$&<(o7ZqNgILWdTalAj-3vFMq4?^2@| zIlZ9|l)>&0L%0X~eW4%h341|ZE#8|t{UP7tJ+aso&e`c~%R-!y##io}w=uK@SG6oC z@31RtJ!i3b>e?hzvS99tMZc`jba2DWJ~X;7{0;Vl{lSj?o%8_k8>yYI)zWqlb<-xaUxQ%fa&blqc(j-xTdKa?rTp%c8e(Y`TvaTRwWk zz+nXj(mq{;eev?+VdcD6iMr$9aM0ExNSCFp4{Dg1fX*Y~DA4AkNtdO~$DpsE&0D8!uG-%3EA8!r zy?%`B3-0%XQs`HiW=Y3E{(|D7;U$iXg{fO@bScvtymYHcUYYLD1zd={g`$17=cSi< zqv8Lf?mGagEWiH`0xmQ~(A-`}xs@#_dd01|cR3K@Dkw|9ZGn5_*4(9)rIxFl83t}s zbLYr~qqH)>+=<=)=kwn8xm*!6`_|9?kA67kInQ~{bDr~zcinqm`c9s{5Zt)9k?|CX zerMefY488S_kZ5kfNMvbo$lJ(p#$8S>;XuN_3XhM9&&N5ybbaAU~}Kh=-?z7AOhpfcbOGyoVg z#)^sM>RxLUc-p83FtLmih}Wbn<0P{!3r9YyJ||;V8Er%Wv}0SpBJ%Eln~l7N1YA4e z?DWuX^}7x-1D&4<%mQWubAY+Pd%!$kKCl2-2rL2?151GSfe(PCz%t-N;3ME;U^(y! z@F}nYSP85GJ_9}nRs(B*wZJ-HJ@5taC9nb52y6m216zQtz*oRF;AM&2pE}{NzuIaOCB73f=)82t%sdphdAn_ z>?9LAMP1fm=Tv7ybQuHD7od&`hzIzZKu$U=qb;^UkXKixp5Xs(U9bP4F0blTTu4>_ zIonmgDPz2NPD&ry9(htG#)6;@`_9CPz?iAJYMW;n<U*$Vk?Wd))8?z?59&KbDvzCz2K7C@FS?57cbsIxhwXNc&;*nFG0MubT2sQQ| z;F(^e4(AHfi_}rRbwWM%HM?=?0y)8$&^A*WAiH_Mvd%!(apbr#&e@G4^*P_Ui!#>r zf!6@el^TEn=nAksjw9{lq(?tFZfu|Zp^fb9ahy5=q^g{Ik}uF*0_I-gHU56=)H|@t z?F4oKyMaBxUSJ=vANUqH02~Ak0Zcbg?>q2^fg`|C;23Zm@JD%VzyL7uuw|R4GZk2X zq$ta&$He+f2JJ890ee!Moo?7ob&wOVe-ii}I0c*r&H!hDAAobfdEf$Y5x4}T0GEL) zz*XQH@FVaOa2>b-{0#g8{0iIzegjg0G$0+g1^f=&2JQfNfqTGx-~sRu_yc$ZWB`wW zKLIl!WpFA3@X*av&_Xn-Wd4vb226D&VCxlUC+{lgZ!Xlc2OI!LfT=U&xxwcF@&fq) zZc5x#!f|5%q#8!hb4QPO$ZV6|4eit03?SPzY#-&T(~c)^mk$b%X#0fU6)% z=SkHn<0>%#T#>f*C{wEs>|eIcorCSt57qYbYa)97wi7`_$u(z{EodClX~W=U_9Dw>>0L z#xf49nwZpKqW_e$4cceoz!_Sagz|BUK$@M{LWHmElJlZ0>&~JRqT9g zHv!%N3;-t;`^o;3GA+!K)Ic&O)K_t;37(Td4ZMmW^~keaO-2<@+w)46XKlZ>O&w*A z?Q_D?KQ)omZFbXc${IxZ}VwzOX*TsG|G{vbU4cvg^E&JNRIt|E4t0aJs*0Z`=(6q6c6Zq*Db zcLfGk4cfEXV_+F{+N2)quuat-SZg`UR5|_Q;Hw>ndA6a#Dj z&pdslZ}c^*zigM|rRq^v}sqNj{Hw9Ul4 zvYB-(s7IM?TdMD@quQd+^i%au^_x`1m42`-_Kp5z^@(Lns*fyZUF8$YC}ZELOaIwE z6Df~~^n*UI4K;_9_J#9c^u6MIY3>QM^+noHbCt1RyjYiZXHN zHcZrKZ0QT*t8SpNj#@+1vGt4X5^5fB9GO_(cI+s#?W2k%Wm)Uyq{nvI2X&@M|5YDs z=L31#RIvbSy|o+xo_$g6vy6UnUaEdlNBK@WY?Fz7XBlsFkyrDS?XbRzh3%d}pKaF< z>#6vwm_nr0r(DICw%Im)Vt*;mE>?e4k3KLiY?I?^>pR<^eKiiMe{4^UCu6`qs+iIa zW5NEhF2{juPW4yCfO$2Z$_L6AU)E86*y@mH`oC_Iem!eUvRh-6(O=f1zl;TAq{f)> zV_ze5kY~zCu3}6(^heEQHP2a}?XisOR>hegw^#9{Os#49L7S}4q{fPNIL@@M+MXVtZh8~aLIY?Ey(yY!hcQo5XXDt2s>Z7fnS@!_yP(~fLLHmEDp7M*jY}3|1H6HAbnj;aqUACiqroXB!u$m7n<5*FT zelcE@(J!{iI_kO@>~rhT7tRTS^=XT?nUpU%wWr34di0Z&?W_KQ)%fh}(_i+Vx}0xn z&Zz#Vb*Aj*q_4eI12?|92E~L0MaF6Oyq4g3p7y2;$oY;AygOS9Gv9Kt5oI2H%LU3h znfmk7d!`V4#?KTKq18Rgx_mnZ%G*YTFdUjZ9rCue1@4}WL-8`AmiS~{P+U|@Q(Z4F zZtOm(=c8P(Rn=^|L09?NF)Aufwa1Un^hBB1lv_XihIUv!3T4`7FZrHC_A@93uMvSW z7)17S3Ci2LKUL`0*v1R$ZDkw$jNlVCy85!;Y$pZfe0rey*)e2bRzDnYUs8J_;sF~d zS09PQhxdX8hsSYBY5r7#9*?CQPc_eczV4~a&pf2Y;b(GBG z88UvJEvp{e`YST1X})r=p&#^_^IOe%u2-#dpsG){<*diKO+Bs&+dUOoEpGy)9_vwu zx|A_b%C=M+YTu%rzpBeMMclgto~%D&%Uev zs&e*)erG3F{roF_QCHbuJB$PA^TtH!s^gsMBkR*PrdSJXj9bDHkAbEzYe}4koEI>9+0s? zHqPV;*yg>mqku#} z4*257_@jZ&(;ejI3gZD={b%+$` z7$BRAveL-Yuk^Sl{n`roe&7s1zd{E;=~s4j1Ui*~7C?4&+Iok?1O-RcX&M=f!y=A% zy1?CCmoy5BHMMNpDbU?l7qrtJM8#_Iu%<}XDxOV;@u2*)sWztA&?crQ8}RU;v}s6x zQ(qjV2byBCD!A7Ph{K2U`wosX#bzz@@Oi3C`!GCTjcfJC!>5yJ&|sVigaw6L)vcB= z_Iy#j-d#`6OkG;)Z;E-kimvPBM$g;Fm_ovW`An`;aHuK5#3OZhxG6lUKaSXXD=oti zIL|s+RlCImMQa-P_F9PI9&HLyhWQN%P6{o$YNC32xnXSuslUw7csF)D7Exfb| z?Un6XwYt|HADQRURFm;#?FL@jR-1JqH#bG$$|5E#xGi>{pzxROq;Gb!GmDdYAEIIc zaLjml!~R09S`L&i=|J!@k5%sO|B=H}&W^nFtvhGe{!6=c&R)K(4LWC!UiO~+49{Nb zHv9~~UT8b}cXr-?%DaDOv(4E%58teZ)h4F!xS+p#FwH!#b@#QNK_Y(x+*M6yxz&AhC!)wEXE9kp8a$ZWP5u00lh;oFmzPd2+rejEMg2|ZGAEwb-`frTX1mr)+N@*#f)~6m=CyT~c-daR z=n>)H^7k1V+;i_F{NMZZVuNixVExw}{nuyZGe-IOhq1pIJ)4c?MJKz@Q@3fd9tau- zMMg!21qX$PjnHrTyu72rf6Ciu9wPn;Pi=x=w?U{j%uDW8Rt*4(tJf~%^99veW z)kD-xXd54%+aGObxAD>1pRPgSrpVxIOuG9u!S~ccn}x;1#_8IonCCpVV&t^`Sx2H} zB%Z99VzuXpIH2Qa%1ki`WXn$OfpFh?t?KS+Z9<#L*296-knR1)7jGtDV@eUHonCf$ zQphL9jsTw|>rVkK&o8YZu}r97y|=z?f`+NkM@2R<^^Y-`tj;nXPi{Of;G2gQ0-GRs zw~q>ojEl9luRTS#owfg-FV7v0zun6xEk7&NInKDh-S$%v&S_5n?H2xl-aX?v@ZXtC z)=8~xB$=CI*4snw-mUSVFbKch#s}+|?bgNk)Z_f8J_TU&I6rGywomG_Dn08Fy;T?M z(`N4fg{L2S&1XDI(lnmDuK3rV)W3AEp1OeeyB=lkR5?7USBBL=?>SHEv#MJs;NN&& zqHN{-TvpTg*T()YKB{=>ZvK^PihnM9^sf#4 zlZRK^6F-k^FCJflBmbp6C+Bdz>}}>5p1sta|G8Q z^M7}B+MGY+{LE1|Zao)x!SlWsyt$yY_T)*yzy0{pHhTXlZ=ZRd_)mD6IsX6SX8TV# zgG;M_-q{6BI18OOBeo^ZZo2mgQA z8*>ite|0;2hR6TO9q<|c{)accf6D9s+kGx)um8dc@ISFzWS$s#KJP<*Sx=9%ef*^> zJ@NQUJ?hB%_(`3PKKH?wYT3rwtPj3yZK->J))V=s9#Pq9^G3Heub=UV%EkfQ8W!~| zhdiI@FlD9G;jEcRdhwKojr~k7tXcuP=esyXEV@X%S~A`_j){)X4>BOMo6G&;7bk_J9A*A$&bfoLr=A>+g^xPYvwMp3?X_0v&@rpD{ zyQJd_H_A)OM4GqUsC0g5m41+ZA5i8bDg7aBGwaAUQu;;uNkGZvr1X#UkK#*akkU`m z;&&Y1CZ)fm5j%>7lhSX}ZDSVnB&GkPvH5$qC1pQI8wCUekg`9d8;+FsCS|`!mlnBJ zm6ZJ>z0f?m94Y%r`ryYeifVbpnKZ+7egRVUo76F&umdR*>BG_G9%x_KMI1~*m97uByc-)GV<3ZYOLR1q{jtl9LgB2Q(a(qbrM!Wcu za-2v%_G;ik%JCvSyK!j^QjQzxWGC;+q#Qp|mtl{}lX4tM&kaZ~P0H~kEiu};I4Q@K z)OB=E7p)xQOPbX6$Sb5AXVMjgL-Uhzyh+_IRLV`taVK@o>yV3-iPVsuCxc(s<~$(% z@y%v;NVzUZ-A5+hB;~vyowYjlM^erY(uR?}E|PMdkhV6BJWa~^LVCaZ!K0*{H>6$N z-Z((Y`9oSJ{lP9$&Lh%ATaRxi<$NN&xa-swQqC*VJR$a9l5&2LuCeR3T9ad*kw%t0 z`Y9>r8|eaL#D}Duccf{qHJ6Zb{*jJu_sV=y&O_1|@T zIiE?3edjWOl=GVO)4gT;k#c^M4q9RCOUijpI{oXxy-7LWNx$ft{1z$aJ?Y*PWxJ7b z{*%s}JF^oh*8ynGRg4ToU@4lxRk#fC| zX1J_3l5*XUws>oyKPlG_>CTBif& z%93(jk~%KmSc;VElQf@i(-Ndyr=;(NrW7OPdL_M_KHim->y~uLbnhahJPwi;wo5BS z%5_XSIscahNx7a$cSXMAM9OtdI_q|)e5738q@VQh$V19?PWn!K2}e?{chZif^4XJe z-IM0Bv$G@Rv7X>Dp5U>VU>Tu!>M-#!ze?6~C%4S=j;6X!+fH$wfq@?G9({vi!-50x zU1!|7Z5fJ_M|bz&(4d&WIDGjzF1BT;b`RGN-{Fr6<}d$HfYVm(2PyKN#INpTYo|%< zQ-+$vX0=2KO=-5;=WL75p`UcBiRF_9HeOL;wY7w{+}%tOvB5E6(Q&3oclQWWL{!Z1 zz#({JSIc1K|BYws1u4D4-#^nHx?$;q@3ZydlwO}_>!B+ady}56H$dsFf3{w@(mV5P zy$Gczr=Hp0eoC*(v-LuhUVG>TOjzUMR5IPjIf_-MQ|wnqk2L=EacjIN=5r{R8rpBY zVr=(ykYoSV7mUSgHtGDR{LjY4_eLLgicQn=4~p1dpN{t5elUH+ zq&(4jewM$gr_-e4bswZM4NHTL00(xh#q zWK=CG$GTOP3to4n@4000U-+H`%xo;d9sZQBFMcjtg7!$=$Vzg&O(SWUJ4N#SQcFtD zJ|@4G`BSRmEoL_wtdP6jW2DK~wPeZ9<7DIO(Gu`Zpq!fJC!NOn$&x#M@^0Wbsq%2U zJSbOBE}G{{p#_fOTsuwjzxA#}l#7rf@Ayc*gO#OOyDjoTKcm$AB~Z3i9xOlpx=-ql zye0Sj^2qFtQ{>UWU!>d@fs(h^G;y=+h1X1Jh*bgWlp@ zuCB!Yen4(bEF+_4mX`sQM#=Y)e~4Snp;EM7W7*`oS9XGHjtZg5XNE?ivN49Sp?_p3?t>CYv2)B_o@zMH&S z^tvRs>?-w6os|{ie5F#wgK}!hPaE4h`wl$1DpNtU{srC-?rvanl_tbWuS zoAMc{VA>)cHzvzZNqr=3_jeNRlTUgXPfD?ir=@$ni*j-CY&l+`id30!L#}jhBYO{c zNZzZ(B<1ac@@jH>xm{+36i?|PwOqVpY>~b)wuPPCo!&#%tdEznKmRT*S~Zr!{ZGhe z7tYAqz(z74=&)nmPDQ2E;T<5mODuY zW!mU8d3{HJ>2jc{960MERaPFCok7#2$hSkq;dNIj(rmHpesj0%-_u0ed^rnmJh?3= z8?TY7Eq|29-{ZG^zR8fXa}P=M;Z$*Ha93{LN{|iLcgem7Rb-CiT-h`DlOOxfs-1&0l zr*X2-eZEZkZJ-1O`pDOhUy&AzHcJ2H;W8+ukxc95Axn#HmBb(O$u#%Zz*9z)IpBq|6L3V zJmu~i@5qm-?pfv1dFXJc2OP7vSrA|n)M4Txs9xXhiN9)1TcF;*_+Bs63^6ijn zcf-WB-}h2E&->ELp}lOZcTRp8vPUL9d{tTwd|S#?-X`{0n2{W8-{jJom8_oG?|~11`#J zzxU-r^i+9u%XP_nsh$+AQ(bx{ER(kq=15`Z*;44n83|8VC+Ey>;1`q%$(zN8NZ(J2 zO3=ZtW#8nlq;SLSa{PA(X*syE{JQy`oU8D)WYyYmziK*OdVezmmb<+?FbHF3IN!Zqje+J#jc#RQ{-tTh3l9 zBlR~dmu{tIh|hQVq-~?0#pRpj;#qN%q<>aY+L>0$@g1Lt6W-<9W7v06@!=2|`L2UZ zel%F&AvGIL)!sdjF&eEb@I9BBj5Z`iWR9Q=eN|9KYn~Hlh6GrlfQW^*M@{k?o}DmAR$`DM;4XG6U|Zu zmzqKSJ*8Ul3DRc!FIZ3OWJW}!yw~4P+>?69xYI4f?NTw>SF^Fa7UV78MjsZpgIgsj z{IM*TkHj(jn!I&knUs%eE`5s}m#=z`ljxw9GO%lkEbM3}?Yq>GvfpnJ&s)32B{EQY zxm}a-wN^=)FL%j@9zK$H%X0bU3+z$%%gc(khEEpChL282 z?Oyq1%>Ufe86eeOydle5_687NcNua+;9k4lFwEu`$D zSLD5zUGj16dXn7GTXLTtDJe}4N!zM_$f*PS<;Lv*85MF-7KfaXv){PO^7*@DX!ny6 zc6E=W|KK9q>iSEw;?1PX;6ORP{jNmL-YctX^^#Yb{3fLvG?Jj*6Q%0opXK_g+frfF z0g0OBEqPP+i23w1i5zf6)<51WbMo$xQN7}1;F>SxyU6#YLCi?m>pVd2A6X?;V=u|3 zZ@0-7=^$6WEGTi?D#?#;_mQ|WQ>0+g8Zx?g0ePq2T(PTKOqPxqB99+`BVC)O$ypq` zZ=Q9Lcei~dyXR+!`^w64D{`02-Qy!?R(6$*D>uoJL$64Y$u%Xao0rt+I$0JTzAC2- zU&+AUpGkviOT;q@^B{THfDEZNDJ#E#E{+ zo!u{^GxE!$Rs*DV=`+%4<2Y%%aH@2!a7e0kIWNh3Pl;2Bc~UZZtAxE5BCo&IM~od) zCEmG^+}Y$T83*r*S7J>dRc`b;Bo})3k^a*c%WTgy`S#VV64ZUMT<(@A9mejJGYtyM zg+VQ(X6XyEuK0&izD6^7^Y&>uJ7R%+&^cM!P548)=FX5Ghp&~%6@0{ZO$F&c=e%^e z@tKTy-B%7=Uo0I8E|-O#U&yM{uSl3<3o(6}F7cCA$fVZu<>4_ODL;FIj2zQS791%r z4VRvm^Ub@+<+!@i|JO$H=lhqW_sKvR*?+lgTRlR$-1|tXPpT*Z+q%e`xI`~sZG!kU zA1jlu{vk{eCEL|o?CsU-SPNT|G4o*Ppm(iX8dFN!-@%q-%Y%D??TmqN7IZ!`+o{*d%utW{>6if zH{F+JTzJB>$F+}V`j5T6_dtVh(u@%!$M*Vk(R}|xlOKk6-;`#|NP9fHFGEvX${|CA00d4ar5Ieqf_L}$zJvY5=))wAeEdK5Wo zHz&>5<(IZo(-PVz9&!&)-aaMGSnSUCUse2eR$@xcRcjZGNi(kN((~u5CldTSO#fv6 zf)Q!P7IQxNrD&;y#E~7|_TL(lW~}dVu}gZn8HvA4o9g>;K$2a^=;>)93m7_8lBK z!WZQ&;(jmQd!oPb(=Xc{c26_@e!bj+>dh1UFO0fkYFa(b*gNka<>rdi>Dbk<}VO4rp~+mPWIP69bY8P zIOE{q$+KM}{kzs~uxed_G~?#a*S8tmW~_hFE$;dM%$;Uz9k=?5U84#9?q^zOMBAkq zTRk|@%kRPre{->rFY{)k8XbB}ub1%ggv47*X9w=Nmud`c|Hh%;TFp*8xTj{_NdjsYd73JNx_=+}OY7GW#5QjP1^jrjWT%pv}jtNDEYLsF`7 zXiDc_x0jjYU+}`?g<8>%j6aQ2+Gf;*Q>P{C}vt$*1|cRHNhK zDYdsO80r6b-~5wB)}$KqbuNA7a_~(5s-0V0$n$xs@t3_N+K=Do<-eubn^Rt2m1^`( z4ypc=$6Wsw<<}IAT9Im8I%Hu`t7}se^PL~^)#Xo8jVs%v)!XAaHF12Gy6fLro@!kC zbM?u?I*m&->^kJt?Bi5p_wHSXT{t`^@wEzF#`u1eY78myPQqt}yZOhiYJIZHhpEOY z6?!M7ZJ3kzUA_2zA1q5Xj`_-K;+i4@5|ee9bV)Kw8%)A|P|)-GxC|8i-nvBRX4 z&h^hHB#xWg;o;lJA8GK`J0azUCB_BbyfGO0^>4qM+$wcKV%+FYS}a0-%1>R&dX$)u z_-+42U4KRX#L0ZU4=$PMZ|rrkT^Q__`J~NP=RHOyPPF?q))oE?Ozz+L@y)sZ9y{FZ zenY-X_^Hn?|7!B@+xCdhZTR2l$cEZ`KAeQtlo`kp0yHk%TsHrZ6n1LM^s@b;Ty?~U~L8CrDVT8!t|`ej#? z%Qq)+uX&bJ4~%!!vf=M;UDYe`$35Szud^l9_~utLM?I_-{k{)0`nr5Znbc&9?+ z#GAL`1F^m~zCV5bcbCQ_ zj<|gyX&~0$M9+h>hnAe`zvjeS3zyzVHU4q-SgRQ$XD0UBJgsV;)KufPwdcE@-PI-W zQPFl=Kf0Z2YWW1+)Knw0%}$zOtu#?8JVwp};z~wUM#@OFE9f zu($;F!^cZ|dR(3EKjNr4@N)z7-^_PxM#?z3cTY1Gs?gBz!K^Wf3&wt1>}nsh zKYPdb?cbX2Ki=b<{ZCtoq?y*Jcyaj3*}5?c=aH&i|hA-RrexrWpstyx-yGp0WO8Tkm_+VNsef zeb$K?Meff?{9)$ukJc^6{vTKI%7V4i5^wdNUbDrzG-F=FX90=3ru$cZD=4+pwlt&1 zud8;=tv=3w{bdRk}>sa)$EG z6)IM8e(m+jRjO92Uc-QRqxN6%h`dk6Mm zUxWGvXPTi8A(>f?b9OdmkvyGscJ9}|aN*Ff9QrW8*?Hj8m9mjIheueYkyh?WCMtSR zjFQC04c6EpLrI1eE<9Y7Sf~V~oON;Pt)61!L@g(xcvrXCoQKfz4h9FaIUZGr?9(o@ zy_9P&0sDWzIkBTbt9B`|;c2t^k+njSl~as;hT?1~+BL`L(j?jg7<1BQK7pA?XUutY z%|Fe%bWS5_<^H^EUaFqdNQ!Nlz2*5$9yj#DoMA4fY1!$0L)j&qMyHz}*jwwQnJ-;7 zA2I)FPFwoWY<|4w>e4q8)*mt37fzkXe8jGaC35vnHX9{13B7y#+ts8}c5=ilWm7f% z->xn#kqrG@a&uq(Q^oh0ckL@PT9VCp{(1@L^N-C}FO}(&2l{$GjroR0%(*Rjv-$d^ zUg-%a&$wxhM}!{Lj!y_QCz}g!R5%EEj0S`o>C}C*d7ar@FVJAV%{;@!61Z+Qm;2L< zE@>Rgm@GYvf5-wo8A+22S`OCqR6oAH#%X_6cxca_34wOp#fJOp$RJwHvhGZoZv@D??4) zP6AG$pnbBIqoW!VZ}ZnuqWvv5tbkUokFVKG+va$Q*AtcKo*)RxS6rOBrGWp_zCpRn zfs9Yd60pE+5|%5|D9uKKIf)r%O`B&Fn9a4dRg-Z;%V_f{4_hp!<<0la7(ef{7@6nV)Ka`7uHDUMe|hJfcMw}mhDw$~>)$+@4Qp00obB-sw49oomLj9l(5SZF zIJevRLC|N|R=3GE8@5;-EsuW%#f1NwAr2pP8EB!{IiQw6-x>JS~{$2YLf{dvyln=6U z37VOJCCCq=pUMQA=P^ScK^UZ2HHY?@qczRuR{gSKepPeQ{0NFm8i;Bfk* zTT9TlY{bLK8Y;c)X_8%EZM3u*iEc9Gk@V+i+f-ESlUr6Eb2$u7V~oQs7pDoCzMC&8 z{YxPi&A(zZ(Nfa&OP9cm49w8R(;|G%Un9z)%~KWN5(p3vLeLBgkANb@o6Qf;<-yYY z-Nh-tCMlO-q0Z{FqRMCYhelk9J&I)ct8v|a|3b#_J9MxQ|R14ULYTk zAE*LU1p)!Q%qrj_4FBSgZdA8q)vZ-^i&Wj}RJSbEtw(hWQQZnuxAfGlIdzLo-6~VJ zywt5Lbqh+}N>aCk)U6$Li$>jQQMXLgtq*kzL*0r{w-nT^0d03P4?yuEqaL!EPAzcy?MrOZa)}) zGw7bNgxkCxd;h$cRDaUCR=*9pYh0dj(j(OAT+;f&>FIv&-7${bQZE0y0jHD3+izX} z-nX}nBacLs{Q3P8NuPvFDo~=}ZKM0<-)}E2b2Mq$bf=LOdjD=rA5pJVnNi;+8NEuj zYW4Lk<5K^1bFMzznY8W4De2uS-ZJ)_HZ192pRbZu$ie{Qd+El*fz3C+AN5(1#c%bg z9(>BO`J%^D`=lD{->tOtfbRz5vH`iuZCHNOxNVki=T$>?8-L0e(9Os2tMT}?-L0I) z9X8hd?8D$=JAXEoHtkJsn){^jw}4^xKTWt{e6X}sjV06182h&9boYG!>&8PPzi7KW zt; zcCY3tQ{2VAY^f4Xu6Z2_mMd1eNXh(p3KVtDm%FfIp;s;zad?kCuw7B<8F-lyWQ}We z>D;WQFILeXE>89ikMRknGvIdGr3By<3h7wf2h#2R?bQ;ZJ7Q;PP?^gm1h|2tO5w^P z%O==K!$yT9Vcr6Ky6~=Jag=!jgMfi(@$e(Fd3I9f4w=g=4k27$I6Kdc%On2d@x!t; zk=p*F%lXX)XxKyUU@nVw=}4hD7%MRtUhu<$ngCQ;(el`@S7o?3*`Y_9L7S*Tu``GR zj&XvGUCGGh#<4N4*>c24%$1l+b4znBGjb9zEmyBJ%fF*t!l4t&55 zP-^jnkcFB8D_B%5lzB_4qMOuBTSpBaEi>c9z~VBUvrQH+aFPd=fD+i#N|Y!;^OiBx z_Bm~XqfAPObAFWDFVc{41KaRv~{uim^@Rl6(~B z6a0Ne0=|ZxT>%N$2U^sH`r4m-+(@ir9kPy@O-!JbBgG zM}DUQ1z#yt*ttlS`+XHETI@Zq{4cfo?r)9cK==W|WCsAUWPE@y8CM(0 z_>^ukj;G1kAd)egk}(C6F=3K1QIav>$r$cr3~Dk)G8vO38AFnc=qDrO$r!3+Ov7Z% zzhn$-awz~;ImviaTr!q?aybA4v;k{p7uw&2_IIKEU1)z7+TVrtccJ}VXnz;l--Y&f zq5WNG{{-6Kh4y!0I(}^@1yH{L>K8!$0_WOB8B8%TQ89+FNWO$i`x$*{i64LL9~5rr zJ3P*0h}D1UOqxVR;4MiOb?In|#rvHMkx_Am7*lkNDHg98v`)8-9D?6qMkSMJpfrw&ijA!qVq$ZK@UX~%s2>zkGb$35 zv>sYaOB2;gEgGDFf zgvA;{qJ~CVGlL`XvLJlao5K?j5(2}q7;Xb9NTZmjfu=}9bQmJmvUWRtaMgI|eL!4; zEY+kDJ{&#}!>RQx1~UVF$Q(b5T%Q7&gV-__Ga@sK*F(iw0-*)H=`d3;#}0E(Z(cv>9egRY)Lj11gkg%x1u?CE>iHqfl zl@%O>pC!b%ET!4tNXtZG{V;q}74PW7_e-_Wiog^I!ji#4K+idbmPOMN3pFmRUl`2B z;B)jtpxwkW)-)1iz?TR3LSb}7TWFb)(zQ4@IWzS|W>JsjRMu8mtl-xZ2O2_yVhw#w z7>!sH`h+&{CgHfK;HYqY{25W*L(78C939Tvz9^1mWb}y^iS~ z>oXKTOsjP`b8M__4#f*T`fJ_Sb`af~wOH%8bw)fPjvXA0-GCwOq`6=*!U~xsZJ)?l ztM?0v;2!d%u3DSf6>1xS9wzG|e$uzLrnsR|F$1m3U*&C=e|Gyzq@|wib`sRr(k~2j z-@*O*VLHTWduir?>pjL+6KvVCGNVARGKGzUBDG$cBC$;R;cbKlON0%vp@ZYJZ7TDq z5EPE-6*8QI936xANOH%|EVY$lW#B-dE#1(d$PjF79Wh_ASTZ-U4uhj`EHDiVHkm@; z9J+#iGi-1KMtN{#h;-A2T^DIb4DIcIp;6I>ARLsi8>3Q3ef}5*nk<8r8Gtt+;Y2nK zi`Mo)mDeUVRw(w>5TS4=lwwQ+u&ZO0VLRt<`SL&%@cVnNPV?+O$<;&B?KU}1b$rck zZ0<7la~;gG&)(hMDR-jX47+&y0}j>YhurI=k$qeH^LDQ|6qOHi7qpw3%PE&{?hu@$ zn{)NDzwY3a=SZ%Dj%kkP953f8o4aYQ@iHb?xP6qvExB!9-0`gZVBb1-=UgN0-nZY5 zvxW{*G}qU%!9GIFcHr*TA4?Xp7ddk;mHnCfhYSDOnfp2D@yz`?XijJD?=6B3&dxss z&FRej2z7Ageh&1xXYR8XXLIJh3qqc`9|6tj%>6NSaOOUFiK|nU98TOrLnTy;YdF64 ziEn_0;`aol#InWYl2Xq471cCq)&>t8GL;!<;cwj6r8F&|X z510?U4}1))0M-B-fK5OWumjiw>;p~!oVPe@*6xJ;+x`wmJ6V060ai;pw)c5ne0s~|5wLViwU@$hixTYx5zIW$V*wL!vXVn>sR}W_@Cc8RHXXr689<9L# z%>B^SX?}tH$c6wp-SvF(w3 z?e61V$KBW6&%+I0OZ4#Y^zicV_VDqjFMR^?djuL$J5u-&&$or z-OIzv)62`t+sntRj+d{OpSPR0ySIn8r?;24x3`aX9dBQ6KOZ+AcOMTQPaiKIZyz6@ zIzGNWes$dHxYzNh<5|b6j&~iOI(6#!*75Uo^L6+2@b&cd^7Z!h@vY+9zS7yZz@ zA58n9njb{?YGGht@UUS)eZz*hyZbO`VG)5mSOoHNNegWVLN>|SQI;1&c%RU(gSz2C zv9V89p#E0quLhpdkH&X2O;79J$W|YN7|owPH{mOsnJ&?O@gj~=0C>W_2l~=aKPR-U zfDvPz7SMmnClA{;q5^Tz)c48OEOkfe?Q!rkz+WzhucHH3fos5zz>~h<8>#Rm1ZV2F zYz((`hrXQDeHj9K$>8(4I7*X93-1cPuP!%$AFA^;z_)*6sFW`1D8Ar1eceEV_43x> zxjE8ackn?v9|AsB=cB>L>HH}0VLCqvJdaSUI~P2*SB+l=o?8&*tHBS``K{o|nm zzMsw?1nA|P>w4CBaqgKS2WL0;98jO*#&jN(wr<$i`WgH$z^}kf zfN8bf=5NTWHmR2iqyg!`ljDWC6C0M@bk^q1IM`#`OnDK1`fv-dwf#Htw}CsrleXOh z1BXOpYn*c-#m2Tj;zrwd0cHChc&52%w+v2K?j!#|mnG`5hsgh-%SP$4N62RYo#Om> zj;OuUop$`uUO03h$Aw0q_H}5=>B~6CS-(@9hnrRy6B9H%Fw!(M5U+#iAEzCAskaO| z^hZnB7fQpg$7t(M-G@n#eUlG2Rhc)?2X}Y8Hyz*3*6zh*O+I*1@G&U{t?Aym7t1i8`#)S+4_|o-sIH;0n%al;v?KxAfW1 zy34RG<1`m#0qfVeI{Bsa$R#O#a)}+5U0DFPo1_o&eS&ba3JJHcG#U96UFHHFr-c*N zx;l+WPhyG4QKN-g^SV4mm*eLLZa+Rb?B|Qd_S5D^78#pt9GiUL!={_h>E%a_A@we` zn>PQHm0Ii_wd$#Q$__r^vd-1%OS=?hG09q@RXv)dTF@;gsTOp(?%`3RUN1?tU}-r; zFSmNG%9UMJU)i-%-E*s+Zddu2gzrtPcXgU=m!d3MJ;>5$Wznd5pn9ZQP(4;H462|1 z^vBT`l3H9IfghE)tf*0!Td7`dRC=nO1l;?=)v2WFx*9xd9p@wbu=R*Nj#B~qkgz{na-5i8lI&Z1m44eOSJscr;kLh29qAtrbsa zb)Kc`6%YAQo#zqvrs8R*rNs{R1Zkmo$Vcfsd%jxnkf-Q8YZY!~sp|l_o6ggIYsJ$J zct`B3w7=4ZKdN}>JkWWzRr(E!KKT}khfbW%v&AJg{6@t?=aA0RhZGw=Z)=N9N9eeL z&qIF@|IRwk@k-Enj@N3P=XmY5(Z6YJoQ7t^MMijJ6G{&cel>7U+Id6 z+|bsd&wjO5JmjG|&%Pum9`e=X^>|KgsPm8~>OAe=P(0+t11vhUzd-SjZ`66(AJxdB z!}zQOpTB^`|C4A-;~|%J7M}L2C?4|eI#2uK6c70_ou~b+iii9f_yW5B1={O8{%*xXo}%-#|3LAOSL)y(g?0O_ZTMk2Py5Ri5B;M$Px~2)hn)V?4(+>k z)OpAof-g$@;5lzK9y;Ml4xV$Ha(n13(B*75*@jQod9EGKTk6w?(w#DS&TY!oyw!N< z`06_JjdPp7o5T6W@zQwMpCvb4^=$m2BiaiH=WN9`6yi{KlJBXc{}mfb#g<$g$+MS=h@$tibvgK zooByJDjxDXiif;F7rpPWY0!E0(M|EtZ(-%_q>s+CU(t$(&Q!%izFhIJxmD-cul
      !W9pl8;XZcfo>LGIpu389`Ytu-cGuM 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 Dj^>|2 diff --git a/public/assets/model/plugin.js b/public/assets/model/plugin.js new file mode 100644 index 00000000..8d49305d --- /dev/null +++ b/public/assets/model/plugin.js @@ -0,0 +1,28 @@ +import rxjs from "../lib/rx.js"; +import ajax from "../lib/ajax.js"; + +const plugin$ = ajax({ + url: "api/plugin", + method: "GET", + responseType: "json", +}).pipe( + rxjs.map(({ responseJSON }) => responseJSON.result), +); + +let plugins = {}; + +export async function init() { + plugins = await plugin$.toPromise(); +} + +export function get(mime) { + return plugins[mime]; +} + +export async function load(mime) { + const specs = plugins[mime]; + if (!specs) return null; + const [_, url] = specs; + const module = await import(url); + return module.default; +} diff --git a/public/assets/pages/viewerpage/application_3d.js b/public/assets/pages/viewerpage/application_3d.js index 2f421a65..6be4fa45 100644 --- a/public/assets/pages/viewerpage/application_3d.js +++ b/public/assets/pages/viewerpage/application_3d.js @@ -1,6 +1,7 @@ import { createElement, createRender, nop } from "../../lib/skeleton/index.js"; import rxjs, { effect } from "../../lib/rx.js"; import { qs } from "../../lib/dom.js"; +import { load as loadPlugin } from "../../model/plugin.js"; import { loadCSS } from "../../helpers/loader.js"; import { createLoader } from "../../components/loader.js"; import ctrlError from "../ctrl_error.js"; @@ -8,11 +9,19 @@ import ctrlError from "../ctrl_error.js"; import componentDownloader, { init as initDownloader } from "./application_downloader.js"; import { renderMenubar, buttonDownload } from "./component_menubar.js"; -import setup3D, { getLoader, is2D } from "./application_3d/init.js"; +import * as THREE from "../../../lib/vendor/three/three.module.js"; +import setup3D from "./application_3d/init.js"; import withLight from "./application_3d/scene_light.js"; import withCube from "./application_3d/scene_cube.js"; import ctrlToolbar from "./application_3d/toolbar.js"; +class I3DLoader { + constructor() {} + load() { throw new Error("NOT_IMPLEMENTED"); } + transform() { throw new Error("NOT_IMPLEMENTED"); } + is2D() { return false; } +} + export default async function(render, { mime, acl$, getDownloadUrl = nop, getFilename = nop, hasCube = true, hasMenubar = true }) { const $page = createElement(`
      @@ -33,38 +42,44 @@ export default async function(render, { mime, acl$, getDownloadUrl = nop, getFil const $toolbar = qs($page, ".toolbar"); const removeLoader = createLoader($draw); - await effect(rxjs.of(getLoader(mime)).pipe( - rxjs.mergeMap(([loader, createMesh]) => { + await effect(rxjs.from(loadPlugin(mime)).pipe( + rxjs.mergeMap(async (loader) => { if (!loader) { componentDownloader(render, { mime, acl$, getFilename, getDownloadUrl }); return rxjs.EMPTY; } - return rxjs.of([loader, createMesh]); + return new (await loader(I3DLoader, { THREE }))(); }), - rxjs.mergeMap(([loader, createMesh]) => new rxjs.Observable((observer) => loader.load( + rxjs.mergeMap((loader) => new rxjs.Observable((observer) => loader.load( getDownloadUrl(), - (object) => observer.next(createMesh(object)), + (object) => observer.next(loader.transform(object)), null, (err) => observer.error(err), - ))), - removeLoader, - rxjs.mergeMap((mesh) => create3DScene({ mesh, $draw, $toolbar, $menubar, hasCube, mime })), + )).pipe( + removeLoader, + rxjs.mergeMap((mesh) => create3DScene({ + mesh, + $draw, $toolbar, $menubar, + hasCube, mime, is2D: loader.is2D, + })), + )), rxjs.catchError(ctrlError()), )); } -function create3DScene({ mesh, $draw, $toolbar, $menubar, hasCube, mime }) { +function create3DScene({ mesh, $draw, $toolbar, $menubar, hasCube, is2D }) { const refresh = []; const { renderer, camera, scene, controls, box } = setup3D({ + THREE, $page: $draw, mesh, refresh, $menubar, - mime, + is2D, }); withLight({ scene, box }); - if (hasCube && !is2D(mime)) withCube({ camera, renderer, refresh, controls }); + if (hasCube && !is2D()) withCube({ camera, renderer, refresh, controls }); ctrlToolbar(createRender($toolbar), { mesh, controls, @@ -72,6 +87,7 @@ function create3DScene({ mesh, $draw, $toolbar, $menubar, hasCube, mime }) { refresh, $menubar, $toolbar, + is2D, }); return rxjs.animationFrames().pipe(rxjs.tap(() => { diff --git a/public/assets/pages/viewerpage/application_3d/init.js b/public/assets/pages/viewerpage/application_3d/init.js index dc89b387..8d163d6c 100644 --- a/public/assets/pages/viewerpage/application_3d/init.js +++ b/public/assets/pages/viewerpage/application_3d/init.js @@ -1,18 +1,7 @@ import { createElement, onDestroy } from "../../../lib/skeleton/index.js"; -import { join } from "../../../lib/path.js"; +import { OrbitControls } from "../../../../lib/vendor/three/OrbitControls.js"; -import * as THREE from "../../../lib/vendor/three/three.module.js"; -import { OrbitControls } from "../../../lib/vendor/three/OrbitControls.js"; - -import { toCreasedNormals } from "../../../lib/vendor/three/utils/BufferGeometryUtils.js"; -import { GLTFLoader } from "../../../lib/vendor/three/GLTFLoader.js"; -import { OBJLoader } from "../../../lib/vendor/three/OBJLoader.js"; -import { STLLoader } from "../../../lib/vendor/three/STLLoader.js"; -import { FBXLoader } from "../../../lib/vendor/three/FBXLoader.js"; -import { SVGLoader } from "../../../lib/vendor/three/SVGLoader.js"; -import { Rhino3dmLoader } from "../../../lib/vendor/three/3DMLoader.js"; - -export default function({ $page, $menubar, mesh, refresh, mime }) { +export default function({ THREE, $page, $menubar, mesh, refresh, is2D }) { // setup the dom const renderer = new THREE.WebGLRenderer({ antialias: true, shadowMapEnabled: true }); renderer.shadowMap.enabled = true; @@ -39,7 +28,7 @@ export default function({ $page, $menubar, mesh, refresh, mime }) { ); const controls = new OrbitControls(camera, renderer.domElement); controls.zoomToCursor = true; - if (is2D(mime)) { + if (is2D()) { controls.enableRotate = false; controls.mouseButtons = { LEFT: THREE.MOUSE.PAN, @@ -51,7 +40,7 @@ export default function({ $page, $menubar, mesh, refresh, mime }) { scene.add(mesh); mesh.castShadow = true; mesh.receiveShadow = true; - camera.position.set(center.x, center.y, center.z + maxDim * (is2D(mime) ? 1.3 : 1.8)); + camera.position.set(center.x, center.y, center.z + maxDim * (is2D() ? 1.3 : 1.8)); controls.target.copy(center); const mixer = new THREE.AnimationMixer(mesh); @@ -89,118 +78,3 @@ export default function({ $page, $menubar, mesh, refresh, mime }) { return { renderer, scene, camera, controls, box }; } - -export function is2D(mime) { - return ["image/svg+xml", "application/acad"].indexOf(mime) !== -1; -} - -export function getLoader(mime) { - const identity = (s) => s; - switch (mime) { - case "application/object": - return [ - new OBJLoader(), - (obj) => { - obj.name = "All"; - obj.traverse((child) => { - if (child.isMesh) { - child.material = new THREE.MeshPhongMaterial({ - color: 0x40464b, - emissive: 0x40464b, - specular: 0xf9f9fa, - shininess: 10, - transparent: true, - }); - // smooth the edges: https://discourse.threejs.org/t/how-to-smooth-an-obj-with-threejs/3950/16 - child.geometry = toCreasedNormals(child.geometry, (30 / 180) * Math.PI); - } - }); - return obj; - }, - ]; - case "model/3dm": - THREE.Object3D.DEFAULT_UP.set(0, 0, 1); - const loader = new Rhino3dmLoader(); - loader.setLibraryPath(join(import.meta.url, "../../../lib/vendor/three/rhino3dm/")); - return [loader, identity]; - case "model/gtlt-binary": - case "model/gltf+json": - return [new GLTFLoader(), (gltf) => gltf.scene]; - case "model/stl": - return [new STLLoader(), (geometry) => { - const material = new THREE.MeshPhongMaterial({ - emissive: 0x40464b, - specular: 0xf9f9fa, - shininess: 15, - transparent: true, - }); - if (geometry.hasColors) material.vertexColors = true; - else material.color = material.emissive; - return new THREE.Mesh(geometry, material); - }]; - case "image/svg+xml": - const createMaterial = (color, opacity = 1) => new THREE.MeshBasicMaterial({ - color: new THREE.Color().setStyle(color), - opacity, - transparent: true, - side: THREE.DoubleSide, - depthWrite: false, - wireframe: false, - }); - const threecolor = (color) => { - if (color && color.substr && color.substr(0, 4) === "RGB(") { - function componentToHex(c) { - const hex = c.toString(16); - return hex.length === 1 ? "0" + hex : hex; - } - const [r, g, b] = color.replace(/^RGB\(/, "").replace(/\)/, "").split(",").map((i) => parseInt(i)); - return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b); - } - return color; - }; - return [new SVGLoader(), (data) => { - const group = new THREE.Group(); - group.name = "All"; - group.scale.y *= -1; - let renderOrder = 0; - for (const path of data.paths) { - const fillColor = threecolor(path.userData.style.fill); - if (fillColor !== undefined && fillColor !== "none") { - const material = createMaterial( - fillColor, - path.userData.style.fillOpacity, - ); - const shapes = SVGLoader.createShapes(path); - for (const shape of shapes) { - const mesh = new THREE.Mesh( - new THREE.ShapeGeometry(shape), - material, - ); - mesh.renderOrder = renderOrder++; - group.add(mesh); - } - } - const strokeColor = threecolor(path.userData.style.stroke); - if (strokeColor !== undefined && strokeColor !== "none") { - const material = createMaterial(strokeColor); - for (const subPath of path.subPaths) { - const geometry = SVGLoader.pointsToStroke(subPath.getPoints(), path.userData.style); - if (geometry) { - const mesh = new THREE.Mesh(geometry, material); - mesh.renderOrder = renderOrder++; - group.add(mesh); - } - } - } - } - return group; - }]; - case "application/fbx": - return [new FBXLoader(), (obj) => { - obj.name = "All"; - return obj; - }]; - default: - return [null, null]; - } -} diff --git a/public/assets/pages/viewerpage/application_3d/scene_cube.js b/public/assets/pages/viewerpage/application_3d/scene_cube.js index 4f428005..b3bc8af0 100644 --- a/public/assets/pages/viewerpage/application_3d/scene_cube.js +++ b/public/assets/pages/viewerpage/application_3d/scene_cube.js @@ -1,5 +1,5 @@ import { onDestroy } from "../../../lib/skeleton/index.js"; -import { ViewCubeGizmo, SimpleCameraControls, ObjectPosition } from "../../../lib/vendor/three/viewcube.js"; +import { ViewCubeGizmo, SimpleCameraControls, ObjectPosition } from "../../../../lib/vendor/three/viewcube.js"; export default function({ camera, renderer, refresh, controls }) { const viewCubeGizmo = new ViewCubeGizmo(camera, renderer, { diff --git a/public/assets/pages/viewerpage/application_3d/scene_light.js b/public/assets/pages/viewerpage/application_3d/scene_light.js index 85fb8385..06b22ca0 100644 --- a/public/assets/pages/viewerpage/application_3d/scene_light.js +++ b/public/assets/pages/viewerpage/application_3d/scene_light.js @@ -1,5 +1,5 @@ import { settings_get } from "../../../lib/settings.js"; -import * as THREE from "../../../lib/vendor/three/three.module.js"; +import * as THREE from "../../../../lib/vendor/three/three.module.js"; const LIGHT_COLOR = 0xf5f5f5; diff --git a/public/assets/pages/viewerpage/application_3d/toolbar.js b/public/assets/pages/viewerpage/application_3d/toolbar.js index 50a49c4b..3d5050fb 100644 --- a/public/assets/pages/viewerpage/application_3d/toolbar.js +++ b/public/assets/pages/viewerpage/application_3d/toolbar.js @@ -1,8 +1,8 @@ import { createElement } from "../../../lib/skeleton/index.js"; import { qs } from "../../../lib/dom.js"; -import * as THREE from "../../../lib/vendor/three/three.module.js"; +import * as THREE from "../../../../lib/vendor/three/three.module.js"; -export default function(render, { camera, controls, mesh, $menubar, $toolbar }) { +export default function(render, { camera, controls, mesh, $menubar, $toolbar, is2D }) { if (mesh.children.length <= 1) return; $menubar.add(buttonLayers({ $toolbar })); @@ -10,7 +10,7 @@ export default function(render, { camera, controls, mesh, $menubar, $toolbar }) document.createDocumentFragment(), mesh, 0, - { camera, controls } + { camera, controls, is2D } )); } @@ -25,13 +25,15 @@ function createChild($fragment, mesh, child = 0, opts) { buildDOM($fragment, mesh, child, opts); if (mesh.children.length > 0 && child < 4) { for (let i=0; i
      @@ -43,7 +45,8 @@ function buildDOM($fragment, child, left, { camera, controls }) { `); qs($label, "input").onchange = () => child.visible = !child.visible; $label.onclick = async(e) => { - if (e.target.nodeName === "INPUT" || e.target.classList.contains("component_checkbox")) return; + if (is2D()) return; + else if (e.target.nodeName === "INPUT" || e.target.classList.contains("component_checkbox")) return; e.preventDefault(); e.stopPropagation(); getRootObject(child).traverse((c) => { if (!c.material) return; diff --git a/public/assets/pages/viewerpage/application_table.js b/public/assets/pages/viewerpage/application_table.js index 7b772dc4..80a4995b 100644 --- a/public/assets/pages/viewerpage/application_table.js +++ b/public/assets/pages/viewerpage/application_table.js @@ -4,12 +4,20 @@ import { qs, qsa } from "../../lib/dom.js"; import ajax from "../../lib/ajax.js"; import { loadCSS } from "../../helpers/loader.js"; import t from "../../locales/index.js"; +import { get as getPlugin } from "../../model/plugin.js"; import ctrlError from "../ctrl_error.js"; import { renderMenubar, buttonDownload } from "./component_menubar.js"; -import { getLoader } from "./application_table/loader.js"; import { transition } from "./common.js"; +const MAX_ROWS = 200; + +class ITable { + contructor() {} + getHeader() { throw new Error("NOT_IMPLEMENTED"); } + getBody() { throw new Error("NOT_IMPLEMENTED"); } +} + export default async function(render, { mime, getDownloadUrl = nop, getFilename = nop, hasMenubar = true }) { const $page = createElement(`
      @@ -32,76 +40,51 @@ export default async function(render, { mime, getDownloadUrl = nop, getFilename tbody: qs($page, ".tbody"), }; const padding = 10; + const STATE = { + header: {}, + body: [], + rows: [], + }; // feature: initial render const init$ = ajax({ url: getDownloadUrl(), responseType: "arraybuffer" }).pipe( rxjs.mergeMap(async({ response }) => { - const table = new (await getLoader(mime))(response); + const loader = getPlugin(mime); + if (!loader) throw new TypeError(`unsupported mimetype "${mime}"`); + const [_, url] = loader; + const module = await import(url); + const table = new (await module.default(ITable))(response, { $menubar }); + STATE.header = table.getHeader(); + STATE.body = table.getBody(); + STATE.rows = STATE.body; - // build head - const $tr = createElement(`
      `); - table.getHeader().forEach(({ name, size }) => { - const $th = createElement(` -
      - ${name} - -
      - `); - let ascending = null; - qs($th, "img").onclick = (e) => { - ascending = !ascending; - sortBy(qsa($dom.tbody, `.tr [data-column="${name}"]`), ascending); - qsa(e.target.closest(".tr"), "img").forEach(($img) => { - $img.style.transform = "rotate(0deg)"; - }); - if (ascending) e.target.style.transform = "rotate(180deg)"; - }; - $tr.appendChild($th); - }); - $dom.thead.appendChild($tr); - - // build body - const body = table.getBody(); - body.forEach((obj) => { - const $tr = createElement(`
      `); - table.getHeader().forEach(({ name, size }) => { - $tr.appendChild(createElement(` -
      - ${obj[name] || "-"} -
      - `)); - }); - $dom.tbody.appendChild($tr); - }); - if (body.length === 0) $dom.tbody.appendChild(createElement(` -

      - ${t("Empty")} -

      - `)); - transition($dom.tbody.parentElement); + buildHead(STATE, $dom, padding); + buildRows(STATE.rows.slice(0, MAX_ROWS), STATE.header, $dom.tbody, padding, true, false); }), - rxjs.share(), rxjs.catchError(ctrlError()), + rxjs.share(), ); effect(init$); // feature: search const $search = createElement(``); - $menubar.add($search); - effect(rxjs.fromEvent($search, "keydown").pipe( - rxjs.debounceTime(200), + effect(init$.pipe( + rxjs.tap(() => $menubar.add($search)), + rxjs.mergeMap(() => rxjs.fromEvent($search, "keydown").pipe(rxjs.debounceTime(200))), rxjs.tap((e) => { - const terms = e.target.value.toLowerCase().split(" "); - qsa($page, ".table .tbody .tr").forEach(($row) => { - const str = $row.innerText.toLowerCase(); + const terms = e.target.value.toLowerCase().trim().split(" "); + $dom.tbody.scrollTo(0, 0); + if (terms === "") STATE.rows = STATE.body; + else STATE.rows = STATE.body.filter((row) => { + const line = Object.values(row).join("").toLowerCase(); for (let i=0; i $dom.tbody.scrollTo($dom.thead.scrollLeft, $dom.tbody.scrollTop)) )); + // feature: infinite scroll + effect(rxjs.fromEvent($dom.tbody, "scroll").pipe( + rxjs.mergeMap(async (e) => { + const scrollBottom = e.target.scrollHeight - (e.target.scrollTop + e.target.clientHeight); + if (scrollBottom > 0) return; + else if (STATE.rows.length <= MAX_ROWS) return; + else if (STATE.rows.length <= $dom.tbody.children.length) return; + + const current = $dom.tbody.children.length; + const newRows = STATE.rows.slice(current, current + 10); + buildRows(newRows, STATE.header, $dom.tbody, padding, false, false); + }), + )); + // feature: make the last column to always fit the viewport effect(rxjs.merge( init$, init$.pipe( rxjs.mergeMap(() => rxjs.fromEvent(window, "resize")), - rxjs.debounceTime(100), + rxjs.debounce((e) => e.debounce === false ? rxjs.of(null) : rxjs.timer(100)), ), ).pipe( rxjs.tap(() => resizeLastColumnIfNeeded({ @@ -140,6 +137,61 @@ export function init() { ]); } +async function buildRows(rows, legends, $tbody, padding, isInit, withClear) { + if (withClear) $tbody.innerHTML = ""; + for (let i=0; i
      `); + legends.forEach(({ name, size }, i) => { + $tr.appendChild(createElement(` +
      + ${obj[name] || "-"} +
      + `)); + }); + $tbody.appendChild($tr); + } + $tbody.style.opacity = "0"; + if (rows.length === 0) $tbody.appendChild(createElement(` +

      + ${t("Empty")} +

      + `)); + if (!isInit) { + const e = new Event("resize"); + e.debounce = false; + window.dispatchEvent(e); + await new Promise(requestAnimationFrame); + } + $tbody.style.opacity = "1"; + if (isInit) transition($tbody.parentElement); +} + +function buildHead(STATE, $dom, padding) { + const $tr = createElement(`
      `); + STATE.header.forEach(({ name, size }, i) => { + const $th = createElement(` +
      + ${name} + +
      + `); + let ascending = null; + qs($th, "img").onclick = (e) => { + ascending = !ascending; + STATE.rows = sortBy(STATE.rows, ascending, name); + qsa(e.target.closest(".tr"), "img").forEach(($img) => { + $img.style.transform = "rotate(0deg)"; + }); + if (ascending) e.target.style.transform = "rotate(180deg)"; + $dom.tbody.scrollTo(0, 0); + buildRows(STATE.rows.slice(0, MAX_ROWS), STATE.header, $dom.tbody, padding, false, true); + }; + $tr.appendChild($th); + }); + $dom.thead.appendChild($tr); +} + function styleCell(l, name, padding) { const maxSize = 40; const charSize = 7; @@ -148,8 +200,8 @@ function styleCell(l, name, padding) { return `width: ${sizeInChar*charSize+padding*2}px;`; } -function withCenter(className, fieldLength) { - if (fieldLength > 4) return className; +function withCenter(className, fieldLength, isLast) { + if (fieldLength > 4 || isLast) return className; return `${className} center`; } @@ -157,20 +209,17 @@ function resizeLastColumnIfNeeded({ $target, $childs, padding = 0 }) { const fullWidth = $target.clientWidth; let currWidth = 0; $childs.childNodes.forEach(($node) => currWidth += $node.clientWidth); - if (currWidth < fullWidth) { + if (currWidth < fullWidth && $childs.lastChild !== null) { const lastWidth = ($childs.lastChild.clientWidth - padding * 2) + fullWidth - currWidth; $childs.lastChild.setAttribute("style", `width: ${lastWidth}px`); } } -function sortBy($columns, ascending) { +function sortBy(rows, ascending, key) { const o = ascending ? 1 : -1; - const $new = [...$columns].sort(($el1, $el2) => { - if ($el1.innerText === $el2.innerText) return 0; - else if ($el1.innerText < $el2.innerText) return -o; + return rows.sort((a, b) => { + if (a[key] === b[key]) return 0; + else if (a[key] < b[key]) return -o return o; }); - const $root = $columns[0].parentElement.parentElement; - $root.innerHTML = ""; - $new.forEach(($node) => $root.appendChild($node.parentElement)); } diff --git a/public/assets/pages/viewerpage/application_table/Makefile b/public/assets/pages/viewerpage/application_table/Makefile deleted file mode 100644 index 9a7ddbc9..00000000 --- a/public/assets/pages/viewerpage/application_table/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -all: - emcc loader_symbol.c -o loader_symbol.wasm -O2 --no-entry diff --git a/public/assets/pages/viewerpage/application_table/loader.js b/public/assets/pages/viewerpage/application_table/loader.js deleted file mode 100644 index 4a638d3e..00000000 --- a/public/assets/pages/viewerpage/application_table/loader.js +++ /dev/null @@ -1,24 +0,0 @@ -// import loaderDBase from "./loader_dbase.js"; -// import loaderSymbol from "./loader_symbol.js"; - -class ITable { - contructor() {} - getHeader() { throw new Error("NOT_IMPLEMENTED"); } - getBody() { throw new Error("NOT_IMPLEMENTED"); } -} - -export async function getLoader(mime) { - let module = null; - switch (mime) { - case "application/dbf": - module = await import("./loader_dbase.js"); - break; - case "application/x-archive": - module = await import("./loader_symbol.js"); - break; - default: - throw new TypeError(`unsupported mimetype '${mime}'`); - } - - return module.default(ITable); -} diff --git a/public/assets/pages/viewerpage/application_table/loader_dbase.js b/public/assets/pages/viewerpage/application_table/loader_dbase.js deleted file mode 100644 index d112b19e..00000000 --- a/public/assets/pages/viewerpage/application_table/loader_dbase.js +++ /dev/null @@ -1,26 +0,0 @@ -export default async function(ITable) { - const module = await import("../../../lib/vendor/shp-to-geojson.browser.js"); - - return class TableImpl extends ITable { - constructor(response) { - super(); - this.data = new module.DBase(module.Buffer.from(response)); - } - - getHeader() { - return this.data.properties.map(({ fieldName, fieldLength }) => ({ - name: fieldName, - size: fieldLength, - })); - } - - getBody() { - const body = []; - for (let i =0; iH_skNZ0J&K#0Ma>!w3~Q&6mGr`N0Ynr&WnXG)c;BE7gX&TnSF;fsAQpItwHdi~j9#de-S7h4}5S7FG9)oz9CZFJ4;v zV&=LludJNA%#`JU)2Gj0eD3_(%DIix&tJZHZsYu=i>Eiv{>p_F?<%U!Z=64S;ry>c z+=0_8FRq_kJO9$g%Ei;`8)wf=;cI>4(%On^4&7Gug_Vud=Ps|Utz6u2AMID(MPHRg zH5~K@UtSA)T>M%ce|!E&=Hk2a@uzuK*L&GKtMgG8zwM_@cCX8h2KQufG-T1K-TVE+ z{Qm2H$m;p%$8PAW;J54R9rdxE+-TzB@Av9nQ_@ns;tzZAp47J9YeU4}Q+;<<|8ILS z%<4l~k7%QQQ1LB4i9L#T*`(QKC=X|!jqW5Q@@DktS;g{7^s7g*dlTjDXz?3R9s`tV z)X=q&L-v6CmOu6ne)PuQ{#U>C_r5WB79#&uK@d=R-pExlRO<(ns z@qp*w;#u+h3eO?W58Y%u;`w#H=Xm}Tp7T7vOL?6i4f8+aTzqfg1oQo2KklE+H_WOq zS1*o5s(aj>iS^iLN7H{4z3V28YjWNoq$$>8zB*!I#~p|(_;_;U7&{NeL(Vmw$DIqE zCr4$-BeUnhN7mIxcVgV3wPyh9;)5T#s#4R;dOkT)+v1c4i(9Y1(F+A)Z93D?S&Lg= zdi{-8R@37I9rDlt986JYib9VYy6Bte5-rwAgrqLT}Wz&7KUB*Zs~NX7pcPzeK~Fg|<46*>=P3cEg+&#ddk$$|HkJ zg(2YvI9&Iu5rFqDG>8CriTi1M)#@|rt>PkDZ#o>wdNkruz(KGjd`eUCT4L+2Q z=8Nf3r$;Y6=z#qjd*%!p;~rDb>Purk+{EfrHpJ*}3U~1j=<}d+^*)*9Kbeb%V2qWe zSv_q=@(nlt7q8W_5fy6|-@77%#2_E;R$0ynP`Oo(3+YzK4`)ThguL0GHr>#9MgoF? zZqqTv?(mfjbAX|i3pDA9x%g98;D2&BtDD~OB`Uj1V-_d+4NOO`$qijuDAz==W4tP! zS#7`&YxqLUHsbrc>FmZBSPIP^Wj7OYih-af6ie7gM$$_eXjH?(X2|V*p=vUlsuVgq z@w;MMtcVRXL3&l{W!PjGcfCPe$c|(zwbZLO?4loHOoNtjVPeghL*}={bykv7D8{hO zA}z=?LImxZ0kpK=bbt=jQoecEsS+i0c(eZu5_ng1nO{%|_9oU8L-3n@>^@lXYX;iT znTRT}@{h0vg|rv$W4>M8WSSm9s|3mF|6J2qKPHlWQ2*Y9b?a8~9YaFFOiw|`JJcHm zaue~7YW@loq6(E$PdvzsnnVNB&&FcCvd#F_1-dZS*Y#99@aDp?%|{vTYYWG=-W0Y9 zeSLKyjN)(-Us{dd|DFHvJLS4&{MJH>UVgMEJ-0%I6Zv;cj_5*X+VobN5@Mbnb>g4y z5osM}df(piP)-^g(bFU0qB=F|V(#OQ_Q)I;s{n1L11(eP`Qe^%#_}ODIqJ^S5;`nO zgp*Sv!CHtg3`JLu@xhzN!Du<|!i_p*Sh)riuF?|>PD8;OL25Q#os7Xw*NDwqVzX^x zJE1EZ)_HmaUIO;9pe+-iBqv6GSn{ROU{|GvDFzi;$44HxNijr=XNGr$p^%M>VNoTi zo6JIYDoQ%j)uvOAQ)5jFRMi&d;D(@}LPq?Bn^=GvU|QB=0f%4dEVIa7rbj3e#hA5j ze1~;l%J=uA6%b3Pj*A~?u#laC+Yk0go8)+JmwMt#`UYQ331APEGSpope)DMN&{gsj%73XF$7cK2{US2nZ&; zP)Mt1LW6FWKR488M-hpM-ZiCcUyF24Pz$yma-tG@T(vraE1<>gTGD`BtdM#$uO}S5 zU2-LQyDd4Cv=k?0=>2(;lOD$VLoS(2;?KZ70_$KBSMq0E<=YXhzIt+AbwKIj!LJPfn<=; zc;;bmQxJ>Dc$ljMTV@E~Hu!=Mit{TQjTxc%wt@*$v>(xJ&T~k6|35fIS({ zdrSwfU%%c>H*6g()rWUd~tUUGgjC z`UWKoiK zm}_DmAk<}lLC*!oiJ6v#80n5oYx0uGmnJ3E(k4TI=C_`&q^LB2HUqFJAK9OdiQBC|TLUyooCYBh2(k8PS63kt({5uWOCb^> zaq^!EQPcQ`h>B8R*wEXVtb|{QvODsiIYqVbl+PGa&rmV81cOTjh2qNI7Wh?Y32POw z6bsNyyKaClQw^cDWliy;RbX8-4iyBlvKokb($KjWM8+y2)AqxMVGmto1z< z`pH^!XV#+JVJ&33x*N@4W-Zu?8bzf6lo1frwzXhvvliWCEfAKhg{{06OqMZOi>|B% zOD=0cE6lvCg^AySZsRby)S+ywYsimRF-awIUP%s&|xJ41C z4G7LsIwVt1bHGA5djg@zDzvY(3dZild6{+`i&>Bx(LA1VXEblTZ(AN28;s#L#xRS? zgtzKWK(VSQXNM=k-_k*zsADUNC+dWrt>_L-SIP=ioC7{0}r9Ptceo%k`n z?&6WG@1aoK;*om77*aN0L>?^pqC8Ya3+UEbpjj=tI(PC#tj7#pyc)W2*T^fOtMx_f z_iy;3v<1`Xir_T5l(=P*hoOtXFM1 zBkAzA0M%vzBnw2Qbd$D^TJi;>Ou~|H#8~0REzKiILC;Nc%8--N4<)j|$j?Ja`B{5tyy{DQ!J0YTQN{F#Se~IwithIt>&^`pJ{Uw08mt4(}@5LB&#h-7Ig}WbCuzb6>rk`BG>lU04EhVtEV&-|v#$ zNP11d_p}CYl1p~+FvblFbeOUu**iWv3Vo`5#}lXP;3KuH57+^~HgDiZ?~X9=v|`SL zYZWca9x)$~SiY4~nGPv4rs%~W{PGBf0l zJFJU#wVHu_hten-ncPpi)8Qd@UR{+b=H;5xY_y920VG!QN`qZTy^u%gP?qlGq#DvgP#lNIKu3 z-DBy%gSRK-3Oz?6#^F(A37j~zEgVVSo2b7<5|Xjn<>aaEz9u2JY1m^yB0?yqO~Be%R0H+JR3<7>3tJ%3r01(Iwr-N3iN4^>4AS(i*RX}z zQGM*NeYe{&+kv5&H+ce-LLFthj=5hH;*+uB1>WK%nU1RZ>o&8BPI7vQq@f zu`m5f9%WPH?-=DldD=TVr|7Eh$m~NrGPrS?AX8%{h!LhZ*a;rwn7FJ$i!l$+spIF8 z<>NFJB5WHZ>5;nfQ&d0NZd&Ur0i)?!8yaY6jRTgj0Vn{X9^2>(q-S1OTkhag<`Q|FXf{l@0tH$B@Y+3!qgVnDK;M;+Q9j*zH7{*+p zv;s3;^0C^=U>rk!oCh8kTR}5HA{{|%ok&rI?A9Y_kd%(>bZnB^VrQ%DLzux5_hmaxJj~Zxx%5mF=CVDm8F$&HBQnQvO@+DRKZayKE71F zW^2zPI-QB@klu{7VgQzxL1nVrD)gGJn%$x=-&hLKw^W)Q-o}@RWt2>qWdkuA0WTcf zwEE9^R&JJ8k8Sa%H|{2vj0YAylDl2uknJ`s5G#nFYj6>cBc}c|mZ#Rt**xU@m=$m5 zNF*{yT37ZZ)4AMvCohTse0=Em5>VJF^-kx?Oyf3fM}0?ck8yWcW%mIOeYM#t!oO{Fjdnt~Py@_V{@<4EPScw(iwb z_-L+U+kRU}ZTR&!*yKb%mRNG4?_=&+mZ@W717|tiK01a1 z6}zA>S-cnR0~gpT<{j@2-7!{(B|;K#Om-lYoMty{I0e0XIKqH#OM~g)%?H0h@o)Zn z^6BQ`=?VEtsuBy3(9oeSv(Ea5XW+Z5scv)>Q%p0AKaB~L(F@&{&N9*2ozbbShQz4j zhHPUJ2cV?gr~A5=9HtH^~LocJu$7?2|cS4qh;9imTY; zP=V(`7_AWb`m1btU6`9PdM|EWb1-Juicd`HrG^G4N2Hy#Lq(0{7&ga!5{f2d7e9fJ z4@%zt29qpCcJpH7v&B%5c!O7^18?RP{t~Y<20b8wVF!z8qlT|hV4pZ5UkNw;88>~n zNqQl0B*cpgwJ-*vuf}^orWW|nn41vIP!K5NpJ7vupBl-Im_W(C#>X#A;y>?C1bJ39 zS)-o9xpq1MC@u-!M{mvLUK32Sbsa|JBRyjXi6XB)a~UgXIU$uI8CfcmUH zB(gQa$Yd;TN&d(dv$24z9$NV~R+|Ovj4jgY(pU!<^JHtrd&91AZA#ki-|gM-*1nmh zhoLwbUW1umTxHT>oL`MO*Cyaqhh5)y)46f6ul-Z+>v!t9-q+E0R_6Qm4fgqc`wGh_ zm9oKe-FjcOk2VOTjDP5kkE-EbSbZR09xp-{r^|xNP7L4$+tpF^nW6 z@+~($Q1tZi76y2DVD|Nwyc?2COI2)ZhWlq98e!k;!#eHd07yyQ*n3*b--}Y%_#+6a z5Em9o8#a1CZL`?y$Fy5`&hldn!v1ecIM+s6eDa0bLhU~`|9Ono{$s^g#``%6kiC+{ zT>Kn+DTcQ_6`FPh)+gh=vX12#f$m|!+{x9^F6a~Bf%_hiF7lG|?PJn+jRma!a86nK z#m^y`YN|ZbOfINP=OMR@_r>~dCU<5~Fvs@HQq#p|yAv8#{~4Z;?AzG$rKV~;?Yl zs3|x>JEmiD1h754{M|Zp%rRFP=1{A0h~1sRux~VV zKAtbj#wpf?W;uv*=qidF;mK}tDQK6@t6S$SvWSr|`R2Jft;4?4g!_#NH3Qwfsi32b z1KrD_YB-R#-57wCxw!+uf4`E?;#wCAP(JSNr$s;PLy1^nsRF4)*)A{h(8wRn0=eAS zmcG31+ika7+Vwb_{5D}xLq!f80?gG{Y<|bo% zR;F>a)qtDopA|0If*<$GT>a_XZai3-7oBdeKd6SIx%qmRF1BhLtleA+O`K9q3ib&) zZ?AeJBM!K8)z9C(>L>3NyAw|4AjYn!APR4h$DL>VS$|hze(vs7%kHkd9=^Hi|B0Ae z*#EJ8e{6%DEAsy%z>nwd7qny;kO?^znfW@msMMW+R2XpySa>bh?&6J2xL=un}g?_Sh|K0?1VNq~x*)i;3jtl0Jy zPRYP{ovftKj`GhqfF6HMv*Ok!SM&c3Ih0(R#{-O@z<}0vAPh9(r)l7cL%e_zJ6Ga0 zeYvO`UKDH{rT$ueLa*P>pGoQF9o>{u@^N@2zGvNLgKUo)^LCsquDD&l{%PCM@93Xf zkKI?|2Y2khJ^YOU?G9qg42A`}s@#Z%5!sla|5Ev$_FLLD1P;-Z9@RDYq@idA|Kvic zXw0nEi(Lls8+k1qHYlaUlGx2QJQJg`1#!tVv^Qw%1Vm?GW7e6)6G!w`Ube)i@4WfK zL3?}iMaO=+49wPxbgvvlIs|4ni*eOiNKbO2bb%}3rMr}#smj>_Du&FHg*VFY^Cw+^oDRHl4s6!Pggbg8{gg|k#uJFNLr)CNQp3I za8q1>i1`O0h(bgjBK~P_ILPpkq=O}Fum<+{uN^mK${jalIFxPgIM^1{?l{;RcO2{= zg&+#<0B}^Pv}l{{ZL|G$mY(FJbv2n;@;_CCLg^plHPi8&C{6#dNGvdFWEYLOAY!j} z>U`tIl>Qx!h`%8V4q&87C%6X8H7Qk6U{AEss&pw=gK?WmN7!m+x4%gc-Z~fqPfYA` z2)d>M1dZCAAcA-x6m-Svt{}R3VU&jzs<;NgrCyf6hOl+mMpZ&ULRDd?qLHCWM=*ae zRFTdp;3Hi_x*@V{F6IB-7{n+P1ToBbD`F(Mp8zqO0=I~PN01;*x3?XL(OoG`aYw{Z z4)1qF%nbG0WV8AmQW`TAQQo@MZ#TQ@LIR_`P6f)S)>Rj0=;Epi#=;KpEJK58a-B** z1svQB&|}C9rdY^~LV$D+MubV)yO%D0j4$1E@#!`dCMw;gf^F-{VZM$S$X>Mi$0l1l z|IKtWjd;l`1(oiBUei%fx(A9a5k&bHKX&JnS=h9-*Qv;V>GCD}V({KxzC^3-!V5cl zg;sX?QpC{8b}d||GKrV6HJl`{G#Wf`!66#kIeF(?tHnq{wQ)}oY|{`XmDtgBGvvdz zHtC*@ge9qTnN63ie_(eA+4bavd%4|esZMDTeyEf2M#4+cPBPPg(lLOyo7};Dn&ajT z+~SSfmmJd2HCaGkb!d#AE!;&&!4}r z63(xOiXc( zMeFs_%EfT$^2SS-H*B=Q9UGj#c%%NlPdt2N{lWV#Ja_B=v##eZUB0;S$@_lwa#&eg zyR`Pn`<|QCJQQ9$zrKF{;uk_1P&KD6Ug2MjJ{Ml#AHJ@vh37A=y?A!x69ebo?KpS9 zRqnun1CBqXew^#;r_zu99B_jH_4%Odyz5ts)OVecZ})$do8uNjXP^Ar~Pas67qj$f+&CoOg} zR8@UsmrCuYzgw@4U;ZBC?cl+KF8~+>Kj^ynTXU61`@TL`^|UY3AIIH}sw?R)5B&cHBy-U6 diff --git a/public/assets/pages/viewerpage/mimetype.js b/public/assets/pages/viewerpage/mimetype.js index da541c72..b7a17065 100644 --- a/public/assets/pages/viewerpage/mimetype.js +++ b/public/assets/pages/viewerpage/mimetype.js @@ -1,3 +1,5 @@ +import { get as getPlugin } from "../../model/plugin.js"; + export function opener(file = "", mimes) { const mime = getMimeType(file, mimes); const type = mime.split("/")[0]; @@ -9,12 +11,16 @@ export function opener(file = "", mimes) { } } + const p = getPlugin(mime); + if (p) return [ + p[0], + { mime, loader: p[1] }, + ]; + if (type === "text") { return ["editor", { mime }]; } else if (mime === "application/pdf") { return ["pdf", { mime }]; - } else if (type === "model" || ["image/svg+xml", "application/object", "application/fbx"].indexOf(mime) !== -1) { - return ["3d", { mime }]; } else if (type === "image") { return ["image", { mime }]; } else if (["application/javascript", "application/xml", "application/json", @@ -32,8 +38,6 @@ export function opener(file = "", mimes) { return ["ebook", { mime }]; } else if (mime === "application/x-url") { return ["url", { mime }]; - } else if (["application/dbf", "application/x-archive"].indexOf(mime) !== -1) { - return ["table", { mime }]; } else if (type === "application" && mime !== "application/text") { return ["download", { mime }]; } diff --git a/server/common/constants.go b/server/common/constants.go index 3fe6b1b6..5035d607 100644 --- a/server/common/constants.go +++ b/server/common/constants.go @@ -20,6 +20,7 @@ var ( var ( CONFIG_PATH = "state/config/" CERT_PATH = "state/certs/" + PLUGIN_PATH = "state/plugins/" DB_PATH = "state/db/" FTS_PATH = "state/search/" LOG_PATH = "state/log/" @@ -38,6 +39,7 @@ func init() { FTS_PATH = filepath.Join(rootPath, FTS_PATH) CERT_PATH = filepath.Join(rootPath, CERT_PATH) TMP_PATH = filepath.Join(rootPath, TMP_PATH) + PLUGIN_PATH = filepath.Join(rootPath, PLUGIN_PATH) base = strings.TrimSuffix(base, "/") COOKIE_PATH_ADMIN = WithBase(COOKIE_PATH_ADMIN) COOKIE_PATH = WithBase(COOKIE_PATH) @@ -48,6 +50,7 @@ func init() { os.MkdirAll(GetAbsolutePath(DB_PATH), os.ModePerm) os.MkdirAll(GetAbsolutePath(FTS_PATH), os.ModePerm) os.MkdirAll(GetAbsolutePath(LOG_PATH), os.ModePerm) + os.MkdirAll(GetAbsolutePath(PLUGIN_PATH), os.ModePerm) os.RemoveAll(GetAbsolutePath(TMP_PATH)) os.MkdirAll(GetAbsolutePath(TMP_PATH), os.ModePerm) } diff --git a/server/ctrl/plugin.go b/server/ctrl/plugin.go new file mode 100644 index 00000000..28757ddf --- /dev/null +++ b/server/ctrl/plugin.go @@ -0,0 +1,57 @@ +package ctrl + +import ( + "io" + "net/http" + "os" + + . "github.com/mickael-kerjean/filestash/server/common" + "github.com/mickael-kerjean/filestash/server/model" + + "github.com/gorilla/mux" +) + +func init() { + Hooks.Register.Onload(func() { + if err := model.PluginDiscovery(); err != nil { + Log.Error("Plugin Discovery failed. err=%s", err.Error()) + os.Exit(1) + } + }) +} + +func PluginExportHandler(ctx *App, res http.ResponseWriter, req *http.Request) { + plgExports := map[string][]string{} + for name, plg := range model.PLUGINS { + for _, module := range plg.Modules { + if module["type"] == "xdg-open" { + index := module["entrypoint"] + if index == "" { + index = "/index.js" + } + plgExports[module["mime"]] = []string{ + module["application"], + WithBase(JoinPath("/plugin/", name+index)), + } + } + } + } + SendSuccessResult(res, plgExports) +} + +func PluginStaticHandler(ctx *App, res http.ResponseWriter, req *http.Request) { + path := mux.Vars(req)["path"] + mtype := GetMimeType(path) + file, err := model.GetPluginFile(mux.Vars(req)["name"], path) + if err != nil { + SendErrorResult(res, err) + return + } + defer file.Close() + res.Header().Set("Content-Type", mtype) + _, err = io.Copy(res, file) + if err != nil { + SendErrorResult(res, err) + return + } +} diff --git a/server/model/plugin.go b/server/model/plugin.go new file mode 100644 index 00000000..0001d11b --- /dev/null +++ b/server/model/plugin.go @@ -0,0 +1,115 @@ +package model + +import ( + "archive/zip" + "encoding/json" + "io" + "os" + "strings" + + . "github.com/mickael-kerjean/filestash/server/common" +) + +var PLUGINS = map[string]PluginImpl{} + +type PluginImpl struct { + Author string `json:"author"` + Version string `json:"version"` + Modules []map[string]string `json:"modules"` +} + +func PluginDiscovery() error { + f, err := os.Open(GetAbsolutePath(PLUGIN_PATH)) + if err != nil { + return err + } + entries, err := f.ReadDir(0) + if err != nil { + return err + } + for _, entry := range entries { + if entry.IsDir() { + continue + } + fname := entry.Name() + if strings.HasSuffix(fname, ".zip") == false { + continue + } + name, modules, err := InitModule(entry.Name()) + if err != nil { + Log.Error("could not initialise module name=%s err=%s", entry.Name(), err.Error()) + continue + } + PLUGINS[name] = modules + } + return nil +} + +type zrc struct { + f io.ReadCloser + c io.Closer +} + +func (this zrc) Read(p []byte) (n int, err error) { + return this.f.Read(p) +} + +func (this zrc) Close() error { + this.f.Close() + this.c.Close() + return nil +} + +func GetPluginFile(pluginName string, path string) (io.ReadCloser, error) { + zipReader, err := zip.OpenReader(JoinPath( + GetAbsolutePath(PLUGIN_PATH), + pluginName+".zip", + )) + if err != nil { + return nil, err + } + for _, zipFile := range zipReader.File { + if zipFile.Name != path { + continue + } + f, err := zipFile.Open() + if err != nil { + zipReader.Close() + return nil, err + } + return zrc{f, zipReader}, nil + } + zipReader.Close() + return nil, ErrNotFound +} + +func InitModule(plgName string) (string, PluginImpl, error) { + var plgImpl = PluginImpl{} + r, err := zip.OpenReader(JoinPath(GetAbsolutePath(PLUGIN_PATH), plgName)) + plgName = strings.TrimSuffix(plgName, ".zip") + if err != nil { + return plgName, plgImpl, err + } + defer r.Close() + + var manifestFile io.ReadCloser + for _, f := range r.File { + if f.Name != "manifest.json" { + continue + } + rc, err := f.Open() + if err != nil { + return plgName, plgImpl, err + } + manifestFile = rc + break + } + if manifestFile == nil { + return plgName, plgImpl, ErrNotFound + } + defer manifestFile.Close() + if err = json.NewDecoder(manifestFile).Decode(&plgImpl); err != nil { + return plgName, plgImpl, err + } + return plgName, plgImpl, nil +} diff --git a/server/plugin/plg_application_3d/Makefile b/server/plugin/plg_application_3d/Makefile new file mode 100644 index 00000000..af524b76 --- /dev/null +++ b/server/plugin/plg_application_3d/Makefile @@ -0,0 +1,6 @@ +all: + make install + +install: + zip -r application_3d.zip . + mv application_3d.zip ../../../dist/data/state/plugins/application_3d.zip diff --git a/server/plugin/plg_application_3d/index_fbx.js b/server/plugin/plg_application_3d/index_fbx.js new file mode 100644 index 00000000..7024ac2c --- /dev/null +++ b/server/plugin/plg_application_3d/index_fbx.js @@ -0,0 +1,18 @@ +export default async function(I3D, { THREE }) { + const module = await import("./vendor/FBXLoader.js"); + + return class Impl extends I3D { + constructor() { + super(); + } + + load(url, onLoad, onProgress, onError) { + return (new module.FBXLoader()).load(url, onLoad, onProgress, onError); + } + + transform(obj) { + obj.name = "All"; + return obj; + } + } +} diff --git a/server/plugin/plg_application_3d/index_gltf.js b/server/plugin/plg_application_3d/index_gltf.js new file mode 100644 index 00000000..c48a0dc3 --- /dev/null +++ b/server/plugin/plg_application_3d/index_gltf.js @@ -0,0 +1,19 @@ +export default async function(I3D, { THREE }) { + const module = await import("./vendor/GLTFLoader.js"); + + return class Impl extends I3D { + constructor() { + super(); + } + + load(url, onLoad, onProgress, onError) { + return new module.GLTFLoader().load(url, onLoad, onProgress, onError); + } + + transform(gltf) { + const mesh = gltf.scene; + mesh.animations = gltf.animations; + return mesh; + } + } +} diff --git a/server/plugin/plg_application_3d/index_obj.js b/server/plugin/plg_application_3d/index_obj.js new file mode 100644 index 00000000..55de392f --- /dev/null +++ b/server/plugin/plg_application_3d/index_obj.js @@ -0,0 +1,33 @@ +import { toCreasedNormals } from "./vendor/utils/BufferGeometryUtils.js"; + +export default async function(I3D, { THREE }) { + const module = await import("./vendor/OBJLoader.js"); + + return class Impl extends I3D { + constructor() { + super(); + } + + load(url, onLoad, onProgress, onError) { + return (new module.OBJLoader()).load(url, onLoad, onProgress, onError); + } + + transform(obj) { + obj.name = "All"; + obj.traverse((child) => { + if (child.isMesh) { + child.material = new THREE.MeshPhongMaterial({ + color: 0x40464b, + emissive: 0x40464b, + specular: 0xf9f9fa, + shininess: 10, + transparent: true, + }); + // smooth the edges: https://discourse.threejs.org/t/how-to-smooth-an-obj-with-threejs/3950/16 + child.geometry = toCreasedNormals(child.geometry, (30 / 180) * Math.PI); + } + }); + return obj; + } + } +} diff --git a/server/plugin/plg_application_3d/index_stl.js b/server/plugin/plg_application_3d/index_stl.js new file mode 100644 index 00000000..e07cada2 --- /dev/null +++ b/server/plugin/plg_application_3d/index_stl.js @@ -0,0 +1,25 @@ +export default async function(I3D, { THREE }) { + const module = await import("./vendor/STLLoader.js"); + + return class Impl extends I3D { + constructor() { + super(); + } + + load(url, onLoad, onProgress, onError) { + return (new module.STLLoader()).load(url, onLoad, onProgress, onError); + } + + transform(geometry) { + const material = new THREE.MeshPhongMaterial({ + emissive: 0x40464b, + specular: 0xf9f9fa, + shininess: 15, + transparent: true, + }); + if (geometry.hasColors) material.vertexColors = true; + else material.color = material.emissive; + return new THREE.Mesh(geometry, material); + } + } +} diff --git a/server/plugin/plg_application_3d/index_svg.js b/server/plugin/plg_application_3d/index_svg.js new file mode 100644 index 00000000..b75e4ef2 --- /dev/null +++ b/server/plugin/plg_application_3d/index_svg.js @@ -0,0 +1,76 @@ +export default async function(I3D, { THREE }) { + const module = await import("./vendor/SVGLoader.js"); + + const threecolor = (color) => { + if (color && color.substr && color.substr(0, 4) === "RGB(") { + function componentToHex(c) { + const hex = c.toString(16); + return hex.length === 1 ? "0" + hex : hex; + } + const [r, g, b] = color.replace(/^RGB\(/, "").replace(/\)/, "").split(",").map((i) => parseInt(i)); + return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b); + } + return color; + }; + + const createMaterial = (color, opacity = 1) => new THREE.MeshBasicMaterial({ + color: new THREE.Color().setStyle(color), + opacity, + transparent: true, + side: THREE.DoubleSide, + depthWrite: false, + wireframe: false, + }); + + return class Impl extends I3D { + constructor() { + super(); + } + + load(url, onLoad, onProgress, onError) { + return (new module.SVGLoader()).load(url, onLoad, onProgress, onError); + } + + transform(data) { + const group = new THREE.Group(); + group.name = "All"; + group.scale.y *= -1; + let renderOrder = 0; + for (const path of data.paths) { + const fillColor = threecolor(path.userData.style.fill); + if (fillColor !== undefined && fillColor !== "none") { + const material = createMaterial( + fillColor, + path.userData.style.fillOpacity, + ); + const shapes = module.SVGLoader.createShapes(path); + for (const shape of shapes) { + const mesh = new THREE.Mesh( + new THREE.ShapeGeometry(shape), + material, + ); + mesh.renderOrder = renderOrder++; + group.add(mesh); + } + } + const strokeColor = threecolor(path.userData.style.stroke); + if (strokeColor !== undefined && strokeColor !== "none") { + const material = createMaterial(strokeColor); + for (const subPath of path.subPaths) { + const geometry = module.SVGLoader.pointsToStroke(subPath.getPoints(), path.userData.style); + if (geometry) { + const mesh = new THREE.Mesh(geometry, material); + mesh.renderOrder = renderOrder++; + group.add(mesh); + } + } + } + } + return group; + } + + is2D() { + return true; + } + } +} diff --git a/server/plugin/plg_application_3d/manifest.json b/server/plugin/plg_application_3d/manifest.json new file mode 100644 index 00000000..f2a785ef --- /dev/null +++ b/server/plugin/plg_application_3d/manifest.json @@ -0,0 +1,36 @@ +{ + "author": "Filestash Pty Ltd", + "version": "v0.0", + "modules": [ + { + "type": "xdg-open", + "mime": "application/fbx", + "entrypoint": "/index_fbx.js", + "application": "3d" + }, + { + "type": "xdg-open", + "mime": "model/gltf-binary", + "entrypoint": "/index_gltf.js", + "application": "3d" + }, + { + "type": "xdg-open", + "mime": "application/object", + "entrypoint": "/index_obj.js", + "application": "3d" + }, + { + "type": "xdg-open", + "mime": "model/stl", + "entrypoint": "/index_stl.js", + "application": "3d" + }, + { + "type": "xdg-open", + "mime": "image/svg+xml", + "entrypoint": "/index_svg.js", + "application": "3d" + } + ] +} diff --git a/public/assets/lib/vendor/three/FBXLoader.js b/server/plugin/plg_application_3d/vendor/FBXLoader.js similarity index 99% rename from public/assets/lib/vendor/three/FBXLoader.js rename to server/plugin/plg_application_3d/vendor/FBXLoader.js index 4436dac5..65777752 100644 --- a/public/assets/lib/vendor/three/FBXLoader.js +++ b/server/plugin/plg_application_3d/vendor/FBXLoader.js @@ -43,7 +43,7 @@ import { VectorKeyframeTrack, SRGBColorSpace, ShapeUtils -} from './three.module.js'; +} from '../../../assets/lib/vendor/three/three.module.js'; import * as fflate from './libs/fflate.module.js'; import { NURBSCurve } from './curves/NURBSCurve.js'; diff --git a/public/assets/lib/vendor/three/GLTFLoader.js b/server/plugin/plg_application_3d/vendor/GLTFLoader.js similarity index 99% rename from public/assets/lib/vendor/three/GLTFLoader.js rename to server/plugin/plg_application_3d/vendor/GLTFLoader.js index 68c38ccc..0af20869 100644 --- a/public/assets/lib/vendor/three/GLTFLoader.js +++ b/server/plugin/plg_application_3d/vendor/GLTFLoader.js @@ -65,7 +65,7 @@ import { VectorKeyframeTrack, SRGBColorSpace, InstancedBufferAttribute -} from './three.module.js'; +} from '../../../assets/lib/vendor/three/three.module.js'; import { toTrianglesDrawMode } from './utils/BufferGeometryUtils.js'; class GLTFLoader extends Loader { diff --git a/public/assets/lib/vendor/three/OBJLoader.js b/server/plugin/plg_application_3d/vendor/OBJLoader.js similarity index 99% rename from public/assets/lib/vendor/three/OBJLoader.js rename to server/plugin/plg_application_3d/vendor/OBJLoader.js index dd64ad94..67a3f5d9 100644 --- a/public/assets/lib/vendor/three/OBJLoader.js +++ b/server/plugin/plg_application_3d/vendor/OBJLoader.js @@ -14,7 +14,7 @@ import { PointsMaterial, Vector3, Color -} from './three.module.js'; +} from '../../../assets/lib/vendor/three/three.module.js'; // o object_name | g group_name const _object_pattern = /^[og]\s*(.+)?/; diff --git a/public/assets/lib/vendor/three/STLLoader.js b/server/plugin/plg_application_3d/vendor/STLLoader.js similarity index 99% rename from public/assets/lib/vendor/three/STLLoader.js rename to server/plugin/plg_application_3d/vendor/STLLoader.js index 21c57eea..58c24c83 100644 --- a/public/assets/lib/vendor/three/STLLoader.js +++ b/server/plugin/plg_application_3d/vendor/STLLoader.js @@ -7,7 +7,7 @@ import { Float32BufferAttribute, Loader, Vector3 -} from './three.module.js'; +} from '../../../assets/lib/vendor/three/three.module.js'; /** * Description: A THREE loader for STL ASCII files, as created by Solidworks and other CAD programs. diff --git a/public/assets/lib/vendor/three/SVGLoader.js b/server/plugin/plg_application_3d/vendor/SVGLoader.js similarity index 99% rename from public/assets/lib/vendor/three/SVGLoader.js rename to server/plugin/plg_application_3d/vendor/SVGLoader.js index dbe232a3..0b81b02f 100644 --- a/public/assets/lib/vendor/three/SVGLoader.js +++ b/server/plugin/plg_application_3d/vendor/SVGLoader.js @@ -13,7 +13,7 @@ import { SRGBColorSpace, Vector2, Vector3 -} from './three.module.js'; +} from '../../../assets/lib/vendor/three/three.module.js'; const COLOR_SPACE_SVG = SRGBColorSpace; diff --git a/public/assets/lib/vendor/three/curves/NURBSCurve.js b/server/plugin/plg_application_3d/vendor/curves/NURBSCurve.js similarity index 96% rename from public/assets/lib/vendor/three/curves/NURBSCurve.js rename to server/plugin/plg_application_3d/vendor/curves/NURBSCurve.js index 237a76cd..4d2a0894 100644 --- a/public/assets/lib/vendor/three/curves/NURBSCurve.js +++ b/server/plugin/plg_application_3d/vendor/curves/NURBSCurve.js @@ -3,7 +3,7 @@ import { Curve, Vector3, Vector4 -} from '../three.module.js'; +} from '../../../../assets/lib/vendor/three/three.module.js'; import * as NURBSUtils from './NURBSUtils.js'; /** diff --git a/public/assets/lib/vendor/three/curves/NURBSUtils.js b/server/plugin/plg_application_3d/vendor/curves/NURBSUtils.js similarity index 99% rename from public/assets/lib/vendor/three/curves/NURBSUtils.js rename to server/plugin/plg_application_3d/vendor/curves/NURBSUtils.js index 1696fda4..0b448cc2 100644 --- a/public/assets/lib/vendor/three/curves/NURBSUtils.js +++ b/server/plugin/plg_application_3d/vendor/curves/NURBSUtils.js @@ -2,7 +2,7 @@ import { Vector3, Vector4 -} from '../three.module.js'; +} from '../../../../assets/lib/vendor/three/three.module.js'; /** * NURBS utils diff --git a/public/assets/lib/vendor/three/libs/fflate.module.js b/server/plugin/plg_application_3d/vendor/libs/fflate.module.js similarity index 100% rename from public/assets/lib/vendor/three/libs/fflate.module.js rename to server/plugin/plg_application_3d/vendor/libs/fflate.module.js diff --git a/public/assets/lib/vendor/three/utils/BufferGeometryUtils.js b/server/plugin/plg_application_3d/vendor/utils/BufferGeometryUtils.js similarity index 99% rename from public/assets/lib/vendor/three/utils/BufferGeometryUtils.js rename to server/plugin/plg_application_3d/vendor/utils/BufferGeometryUtils.js index 8cf87421..5a508711 100644 --- a/public/assets/lib/vendor/three/utils/BufferGeometryUtils.js +++ b/server/plugin/plg_application_3d/vendor/utils/BufferGeometryUtils.js @@ -10,7 +10,7 @@ import { TriangleStripDrawMode, TrianglesDrawMode, Vector3, -} from '../three.module.js'; +} from '../../../../assets/lib/vendor/three/three.module.js'; function computeMikkTSpaceTangents( geometry, MikkTSpace, negateSign = true ) { diff --git a/server/plugin/plg_application_dev/Makefile b/server/plugin/plg_application_dev/Makefile new file mode 100644 index 00000000..beb85082 --- /dev/null +++ b/server/plugin/plg_application_dev/Makefile @@ -0,0 +1,15 @@ +all: + make build + make install + make clean + +build: + emcc -O2 -c loader_symbol.c + emcc --no-entry loader_symbol.o -o loader_symbol.wasm + +install: + zip -r application_dev.zip . + mv application_dev.zip ../../../dist/data/state/plugins/ + +clean: + rm *.o *.wasm diff --git a/public/assets/pages/viewerpage/application_table/loader_symbol.js b/server/plugin/plg_application_dev/index.js similarity index 91% rename from public/assets/pages/viewerpage/application_table/loader_symbol.js rename to server/plugin/plg_application_dev/index.js index 2c0c9d3e..4b6094f6 100644 --- a/public/assets/pages/viewerpage/application_table/loader_symbol.js +++ b/server/plugin/plg_application_dev/index.js @@ -1,5 +1,5 @@ -import assert from "../../../lib/assert.js"; -import loadWASM, { writeFS, readFS } from "../../../helpers/loader_wasm.js"; +import assert from "../../assets/lib/assert.js"; +import loadWASM, { writeFS, readFS } from "../../assets/helpers/loader_wasm.js"; export default async function(ITable) { const { instance } = await loadWASM(import.meta.url, "./loader_symbol.wasm"); diff --git a/public/assets/pages/viewerpage/application_table/loader_symbol.c b/server/plugin/plg_application_dev/loader_symbol.c similarity index 96% rename from public/assets/pages/viewerpage/application_table/loader_symbol.c rename to server/plugin/plg_application_dev/loader_symbol.c index c3e6dabc..dbb69843 100644 --- a/public/assets/pages/viewerpage/application_table/loader_symbol.c +++ b/server/plugin/plg_application_dev/loader_symbol.c @@ -48,7 +48,7 @@ EMSCRIPTEN_KEEPALIVE int execute(int fdinput, int fdoutput) { return 1; } if (strncmp(magic, ARMAG, SARMAG) != 0) { - fprintf(stderr, "ERROR file is not of the expected shape"); + fprintf(stderr, "ERROR bad magic value"); fclose(finput); fclose(foutput); return 1; @@ -81,6 +81,7 @@ EMSCRIPTEN_KEEPALIVE int execute(int fdinput, int fdoutput) { fseek(finput, (size + 1) & ~1, SEEK_CUR); } + fprintf(stdout, "hello world!\n"); fflush(foutput); fclose(foutput); fclose(finput); diff --git a/server/plugin/plg_application_dev/manifest.json b/server/plugin/plg_application_dev/manifest.json new file mode 100644 index 00000000..ff197f8d --- /dev/null +++ b/server/plugin/plg_application_dev/manifest.json @@ -0,0 +1,11 @@ +{ + "author": "Filestash Pty Ltd", + "version": "v0.0", + "modules": [ + { + "type": "xdg-open", + "mime": "application/x-archive", + "application": "table" + } + ] +} diff --git a/server/routes.go b/server/routes.go index 9a54a7d2..da39edd7 100644 --- a/server/routes.go +++ b/server/routes.go @@ -91,6 +91,7 @@ func Build(a App) *mux.Router { // Application Resources middlewares = []Middleware{ApiHeaders, SecureHeaders, PluginInjector} r.HandleFunc(WithBase("/api/backend"), NewMiddlewareChain(AdminBackend, middlewares, a)).Methods("GET") + r.HandleFunc(WithBase("/api/plugin"), NewMiddlewareChain(PluginExportHandler, middlewares, a)).Methods("GET") r.HandleFunc(WithBase("/api/config"), NewMiddlewareChain(PublicConfigHandler, append(middlewares, PublicCORS), a)).Methods("GET", "OPTIONS") middlewares = []Middleware{StaticHeaders, SecureHeaders, PublicCORS, PluginInjector} if os.Getenv("CANARY") == "" { // TODO: remove after migration is done @@ -100,6 +101,7 @@ func Build(a App) *mux.Router { } else { // TODO: remove this after migration is done r.PathPrefix(WithBase("/assets")).Handler(http.HandlerFunc(NewMiddlewareChain(ServeFile("/"), middlewares, a))).Methods("GET", "OPTIONS") r.HandleFunc(WithBase("/favicon.ico"), NewMiddlewareChain(ServeFavicon, middlewares, a)).Methods("GET") + r.HandleFunc(WithBase("/plugin/{name}/{path:.+}"), NewMiddlewareChain(PluginStaticHandler, middlewares, a)).Methods("GET") } // Other endpoints