')\n .append(link)\n .appendTo(errorpane)\n }\n }\n\n error(error: Error | string) {\n error ??= '???'\n let msg: string\n if (typeof error === 'string') {\n msg = error\n error = new Error(error)\n }\n else {\n msg = error.toString()\n }\n\n // Don't use jQuery, because this is called if jQuery isn't present\n const errorcontent = document.getElementById(this.dom.errorcontent_id)\n if (!errorcontent) {\n throw new Error(msg)\n }\n errorcontent.innerHTML = msg\n\n const errorpane = document.getElementById(this.dom.errorpane_id)!\n if (errorpane.className === 'WarningPane') {\n errorpane.className = ''\n }\n\n this.embellish_error()\n\n errorpane.style.display = ''\n this.showing_error = true\n this.hide_loading()\n console.error(error)\n }\n\n protected exit() {\n // Try to clean up and remove any event handlers\n this.metrics_calculator.destroy()\n this.windows.destroy()\n }\n\n getdomcontext(): HTMLElement | undefined {\n return this.dom.context_element\n }\n\n getdomid(name: string): string {\n switch (name) {\n case 'errorcontent': return this.dom.errorcontent_id\n case 'errorpane': return this.dom.errorpane_id\n case 'gameport': return this.dom.gameport_id\n case 'loadingpane': return this.dom.loadingpane_id\n case 'windowport': return this.dom.windowport_id\n default: return name\n }\n }\n\n private hide_loading() {\n if (!this.showing_loading) {\n return\n }\n this.showing_loading = false\n\n // Don't use jQuery because this could be called from error()\n const loadingpane = document.getElementById(this.dom.loadingpane_id)\n if (loadingpane) {\n loadingpane.style.display = 'none'\n }\n }\n\n save_allstate(): AutosaveState {\n const graphics_bg: Array<[number, string]> = []\n for (const win of this.windows.values()) {\n if (win.type === 'graphics') {\n graphics_bg.push([win.id, win.fillcolour])\n }\n }\n\n return {\n graphics_bg,\n history: this.windows.history,\n transcript_recorder_session: this.transcript_recorder?.session,\n }\n }\n\n // Send partial line input values\n send_event(ev: Partial
) {\n if (ev.type !== 'init' && ev.type !== 'refresh' && ev.type !== 'specialresponse') {\n for (const win of this.windows.values()) {\n if (win.inputs?.type) {\n const val = win.textinput.el.val() as string\n if (val) {\n if (!ev.partial) {\n ev.partial = {}\n }\n ev.partial[win.id] = val\n }\n }\n }\n }\n if (this.transcript_recorder?.enabled) {\n this.transcript_recorder.record_event(ev)\n }\n super.send_event(ev)\n }\n\n setdomcontext(val: HTMLElement) {\n this.dom.context_element = val\n }\n\n protected set_page_bg(colour: string | null) {\n $('body').css('background-color', colour || '')\n }\n\n update(data: protocol.Update) {\n if (this.showing_loading) {\n this.hide_loading()\n }\n super.update(data)\n if (this.transcript_recorder?.enabled && data.type === 'update' && !data.autorestore) {\n this.transcript_recorder.record_update(data)\n }\n }\n\n protected update_content(content: protocol.ContentUpdate[]) {\n this.windows.update_content(content)\n }\n\n protected update_inputs(windows: protocol.InputUpdate[]) {\n this.windows.update_inputs(windows)\n }\n\n protected update_schannels(schannels: protocol.SoundChannelUpdate[]) {\n this.schannels?.update(schannels)\n }\n\n protected update_windows(windows: protocol.WindowUpdate[]) {\n this.windows.update(windows)\n }\n\n warning(msg: any) {\n // Don't show warnings if an error is already being shown\n if (this.showing_error) {\n return\n }\n\n const errorpane = $(`#${this.dom.errorpane_id}`)\n\n // Hide a warning\n if (!msg) {\n errorpane.hide()\n return\n }\n\n const errorcontent = document.getElementById(this.dom.errorcontent_id)\n if (!errorcontent) {\n console.warn(msg)\n return\n }\n errorcontent.innerHTML = msg\n\n this.embellish_error()\n\n errorpane.addClass('WarningPane')\n errorpane.show()\n this.hide_loading()\n }\n}", "{\"bocfel-noz6.wasm\":{\"size\":1241241,\"gz\":425614},\"bocfel.wasm\":{\"size\":1304858,\"gz\":445293},\"git.wasm\":{\"size\":626723,\"gz\":252318},\"glulxe.wasm\":{\"size\":753209,\"gz\":280634},\"hugo.wasm\":{\"size\":510239,\"gz\":201897},\"scare.wasm\":{\"size\":1399140,\"gz\":444290},\"tads.wasm\":{\"size\":3586823,\"gz\":1066748},\"glkaudio_bg.wasm\":{\"size\":556140,\"gz\":295809}}", "/*\n\nFormat specifications\n=====================\n\nCopyright (c) 2024 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/parchment\n\n*/\n\nimport {Blorb} from '../upstream/asyncglk/src/index-common.js'\n\nimport type {EmglkenEngine, EmglkenEngineOptions, ParchmentOptions, StoryOptions} from './interface.js'\n\nexport interface Engine {\n id: string\n load: string[]\n start: (story: StoryOptions, options: ParchmentOptions, requires: any) => void\n}\n\nexport interface Format {\n blorbable?: boolean\n engines?: Engine[]\n extensions: RegExp\n id: string\n}\n\nasync function generic_emglken_vm(story: StoryOptions, options: ParchmentOptions, requires: [any, Uint8Array]) {\n const [engine, wasmBinary] = requires\n\n const vm_options: EmglkenEngineOptions = Object.assign({}, options, {\n arguments: [story.path!],\n })\n\n const vm: EmglkenEngine = await engine.default({wasmBinary})\n vm.start(vm_options)\n}\n\nexport const formats: Format[] = [\n {\n id: 'blorb',\n extensions: /\\.(blb|blorb)/i,\n },\n\n {\n id: 'adrift4',\n extensions: /\\.taf/i,\n engines: [\n {\n id: 'scare',\n load: ['scare.js', 'scare.wasm'],\n start: generic_emglken_vm,\n },\n ],\n },\n\n /*{\n id: 'adrift5',\n blorbable: true,\n extensions: /\\.(blb|blorb)/i,\n engines: [\n {\n id: 'frankendrift',\n load: ['frankendrift.js'],\n start: (options, requires) => {\n const [file_data, FrankenDrift] = requires\n\n const vm = new FrankenDrift.FrankenDrift()\n const vm_options = Object.assign({}, options, {\n vm,\n Glk,\n })\n\n vm.init(file_data, vm_options)\n Glk.init(vm_options)\n },\n },\n ],\n },*/\n\n {\n id: 'hugo',\n extensions: /\\.hex/i,\n engines: [\n {\n id: 'hugo',\n load: ['hugo.js', 'hugo.wasm'],\n start: generic_emglken_vm,\n },\n ],\n },\n\n {\n id: 'glulx',\n blorbable: true,\n extensions: /\\.(gblorb|glb|ulx)/i,\n engines: [\n /*{\n id: 'quixe',\n load: ['quixe.js'],\n start: (_story: StoryOptions, options, requires) =>\n {\n const [file_data, quixe] = requires\n const data_array = file_data\n\n const vm_options = Object.assign({}, options, {\n blorb_gamechunk_type: 'GLUL',\n GiDispa: new quixe.GiDispa(),\n GiLoad: quixe.GiLoad,\n image_info_map: 'StaticImageInfo',\n io: options.Glk,\n set_page_title: 0,\n spacing: 0,\n use_query_story: 0,\n vm: quixe.Quixe,\n })\n\n quixe.GiLoad.load_run(vm_options, data_array, 'array')\n },\n },*/\n\n {\n id: 'glulxe',\n load: ['glulxe.js', 'glulxe.wasm'],\n start: generic_emglken_vm,\n },\n\n {\n id: 'git',\n load: ['git.js', 'git.wasm'],\n start: generic_emglken_vm,\n },\n ],\n },\n\n {\n id: 'tads',\n extensions: /\\.(gam|t3)/i,\n engines: [\n {\n id: 'tads',\n load: ['tads.js', 'tads.wasm'],\n start: generic_emglken_vm,\n },\n ],\n },\n\n {\n id: 'zcode',\n blorbable: true,\n extensions: /\\.(zblorb|zlb|z3|z4|z5|z8)/i,\n engines: [\n /*{\n id: 'zvm',\n load: ['zvm.js'],\n start: (_story: StoryOptions, options, requires) =>\n {\n const [file_data, zvm] = requires\n\n const vm = new zvm.ZVM()\n const vm_options = Object.assign({}, options, {\n vm,\n GiDispa: new zvm.ZVMDispatch(),\n })\n\n vm.prepare(file_data, vm_options)\n vm_options.Glk.init(vm_options)\n },\n },*/\n\n {\n id: 'bocfel',\n load: ['bocfel.js', 'bocfel.wasm'],\n start: generic_emglken_vm,\n },\n ],\n },\n]\n\n/** Match a format by format ID or file extension */\nexport function find_format(format?: string | null, path?: string) {\n for (const formatspec of formats) {\n if (formatspec.id === format || (path && formatspec.extensions.test(path))) {\n return formatspec\n }\n }\n throw new Error('Unknown storyfile format')\n}\n\n/** Search within a Blorb to find what format is inside\n * Must be passed a Blorb instance */\nexport function identify_blorb_storyfile_format(blorb: Blorb) {\n const blorb_chunks: Record = {\n GLUL: 'glulx',\n ZCOD: 'zcode',\n }\n const chunktype = blorb.get_chunk('Exec', 0)?.chunktype\n if (chunktype && blorb_chunks[chunktype]) {\n return find_format(blorb_chunks[chunktype])\n }\n throw new Error('Unknown storyfile format in Blorb')\n}", "/*\n\nCommon Parchment Options\n========================\n\nCopyright (c) 2024 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/parchment\n\n*/\n\nimport {ProviderBasedBrowserDialog, WebGlkOte} from '../upstream/asyncglk/src/index-browser.js'\n//import GlkOte_GlkApi from '../upstream/glkote/glkapi.js'\n\nimport type {ParchmentOptions} from './interface.js'\n\nexport function get_default_options(): ParchmentOptions {\n return {\n auto_launch: 1,\n // Autoplay by default, unless we're loaded inside an iframe\n autoplay: window.self === window.top,\n Dialog: new ProviderBasedBrowserDialog(),\n direct_domains: [\n 'ifarchive.org',\n 'mirror.ifarchive.org',\n 'unbox.ifarchive.org',\n 'www.ifarchive.org',\n ],\n do_vm_autosave: 1,\n //Glk: GlkOte_GlkApi,\n GlkOte: new WebGlkOte(),\n // This only makes sense after the source files are built\n lib_path: import.meta.url,\n proxy_url: 'https://iplayif.com/proxy/',\n set_body_to_page_bg: 1,\n theme_cookie: 'parchment_theme',\n use_proxy: 1,\n }\n}\n\n/** Get options specified in the URL query */\nexport function get_query_options(possible_query_options: Array): Partial {\n const query = new URLSearchParams(document.location.search)\n const options: Partial = {}\n for (const option of possible_query_options) {\n if (query.has(option)) {\n // I couldn't work out how to apply proper types here, so tell TS to ignore it\n const value = query.get(option)\n try {\n options[option] = JSON.parse(value!)\n }\n catch {\n options[option] = value as any\n }\n }\n }\n return options\n}\n", "/** @returns {void} */\nexport function noop() {}\n\nexport const identity = (x) => x;\n\n/**\n * @template T\n * @template S\n * @param {T} tar\n * @param {S} src\n * @returns {T & S}\n */\nexport function assign(tar, src) {\n\t// @ts-ignore\n\tfor (const k in src) tar[k] = src[k];\n\treturn /** @type {T & S} */ (tar);\n}\n\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\n/**\n * @param {any} value\n * @returns {value is PromiseLike}\n */\nexport function is_promise(value) {\n\treturn (\n\t\t!!value &&\n\t\t(typeof value === 'object' || typeof value === 'function') &&\n\t\ttypeof (/** @type {any} */ (value).then) === 'function'\n\t);\n}\n\n/** @returns {void} */\nexport function add_location(element, file, line, column, char) {\n\telement.__svelte_meta = {\n\t\tloc: { file, line, column, char }\n\t};\n}\n\nexport function run(fn) {\n\treturn fn();\n}\n\nexport function blank_object() {\n\treturn Object.create(null);\n}\n\n/**\n * @param {Function[]} fns\n * @returns {void}\n */\nexport function run_all(fns) {\n\tfns.forEach(run);\n}\n\n/**\n * @param {any} thing\n * @returns {thing is Function}\n */\nexport function is_function(thing) {\n\treturn typeof thing === 'function';\n}\n\n/** @returns {boolean} */\nexport function safe_not_equal(a, b) {\n\treturn a != a ? b == b : a !== b || (a && typeof a === 'object') || typeof a === 'function';\n}\n\nlet src_url_equal_anchor;\n\n/**\n * @param {string} element_src\n * @param {string} url\n * @returns {boolean}\n */\nexport function src_url_equal(element_src, url) {\n\tif (element_src === url) return true;\n\tif (!src_url_equal_anchor) {\n\t\tsrc_url_equal_anchor = document.createElement('a');\n\t}\n\t// This is actually faster than doing URL(..).href\n\tsrc_url_equal_anchor.href = url;\n\treturn element_src === src_url_equal_anchor.href;\n}\n\n/** @param {string} srcset */\nfunction split_srcset(srcset) {\n\treturn srcset.split(',').map((src) => src.trim().split(' ').filter(Boolean));\n}\n\n/**\n * @param {HTMLSourceElement | HTMLImageElement} element_srcset\n * @param {string | undefined | null} srcset\n * @returns {boolean}\n */\nexport function srcset_url_equal(element_srcset, srcset) {\n\tconst element_urls = split_srcset(element_srcset.srcset);\n\tconst urls = split_srcset(srcset || '');\n\n\treturn (\n\t\turls.length === element_urls.length &&\n\t\turls.every(\n\t\t\t([url, width], i) =>\n\t\t\t\twidth === element_urls[i][1] &&\n\t\t\t\t// We need to test both ways because Vite will create an a full URL with\n\t\t\t\t// `new URL(asset, import.meta.url).href` for the client when `base: './'`, and the\n\t\t\t\t// relative URLs inside srcset are not automatically resolved to absolute URLs by\n\t\t\t\t// browsers (in contrast to img.src). This means both SSR and DOM code could\n\t\t\t\t// contain relative or absolute URLs.\n\t\t\t\t(src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0]))\n\t\t)\n\t);\n}\n\n/** @returns {boolean} */\nexport function not_equal(a, b) {\n\treturn a != a ? b == b : a !== b;\n}\n\n/** @returns {boolean} */\nexport function is_empty(obj) {\n\treturn Object.keys(obj).length === 0;\n}\n\n/** @returns {void} */\nexport function validate_store(store, name) {\n\tif (store != null && typeof store.subscribe !== 'function') {\n\t\tthrow new Error(`'${name}' is not a store with a 'subscribe' method`);\n\t}\n}\n\nexport function subscribe(store, ...callbacks) {\n\tif (store == null) {\n\t\tfor (const callback of callbacks) {\n\t\t\tcallback(undefined);\n\t\t}\n\t\treturn noop;\n\t}\n\tconst unsub = store.subscribe(...callbacks);\n\treturn unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\n\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n *\n * https://svelte.dev/docs/svelte-store#get\n * @template T\n * @param {import('../store/public.js').Readable} store\n * @returns {T}\n */\nexport function get_store_value(store) {\n\tlet value;\n\tsubscribe(store, (_) => (value = _))();\n\treturn value;\n}\n\n/** @returns {void} */\nexport function component_subscribe(component, store, callback) {\n\tcomponent.$$.on_destroy.push(subscribe(store, callback));\n}\n\nexport function create_slot(definition, ctx, $$scope, fn) {\n\tif (definition) {\n\t\tconst slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n\t\treturn definition[0](slot_ctx);\n\t}\n}\n\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n\treturn definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;\n}\n\nexport function get_slot_changes(definition, $$scope, dirty, fn) {\n\tif (definition[2] && fn) {\n\t\tconst lets = definition[2](fn(dirty));\n\t\tif ($$scope.dirty === undefined) {\n\t\t\treturn lets;\n\t\t}\n\t\tif (typeof lets === 'object') {\n\t\t\tconst merged = [];\n\t\t\tconst len = Math.max($$scope.dirty.length, lets.length);\n\t\t\tfor (let i = 0; i < len; i += 1) {\n\t\t\t\tmerged[i] = $$scope.dirty[i] | lets[i];\n\t\t\t}\n\t\t\treturn merged;\n\t\t}\n\t\treturn $$scope.dirty | lets;\n\t}\n\treturn $$scope.dirty;\n}\n\n/** @returns {void} */\nexport function update_slot_base(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tslot_changes,\n\tget_slot_context_fn\n) {\n\tif (slot_changes) {\n\t\tconst slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n\t\tslot.p(slot_context, slot_changes);\n\t}\n}\n\n/** @returns {void} */\nexport function update_slot(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tdirty,\n\tget_slot_changes_fn,\n\tget_slot_context_fn\n) {\n\tconst slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n\tupdate_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\n\n/** @returns {any[] | -1} */\nexport function get_all_dirty_from_scope($$scope) {\n\tif ($$scope.ctx.length > 32) {\n\t\tconst dirty = [];\n\t\tconst length = $$scope.ctx.length / 32;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tdirty[i] = -1;\n\t\t}\n\t\treturn dirty;\n\t}\n\treturn -1;\n}\n\n/** @returns {{}} */\nexport function exclude_internal_props(props) {\n\tconst result = {};\n\tfor (const k in props) if (k[0] !== '$') result[k] = props[k];\n\treturn result;\n}\n\n/** @returns {{}} */\nexport function compute_rest_props(props, keys) {\n\tconst rest = {};\n\tkeys = new Set(keys);\n\tfor (const k in props) if (!keys.has(k) && k[0] !== '$') rest[k] = props[k];\n\treturn rest;\n}\n\n/** @returns {{}} */\nexport function compute_slots(slots) {\n\tconst result = {};\n\tfor (const key in slots) {\n\t\tresult[key] = true;\n\t}\n\treturn result;\n}\n\n/** @returns {(this: any, ...args: any[]) => void} */\nexport function once(fn) {\n\tlet ran = false;\n\treturn function (...args) {\n\t\tif (ran) return;\n\t\tran = true;\n\t\tfn.call(this, ...args);\n\t};\n}\n\nexport function null_to_empty(value) {\n\treturn value == null ? '' : value;\n}\n\nexport function set_store_value(store, ret, value) {\n\tstore.set(value);\n\treturn ret;\n}\n\nexport const has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\n\nexport function action_destroyer(action_result) {\n\treturn action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\n/** @param {number | string} value\n * @returns {[number, string]}\n */\nexport function split_css_unit(value) {\n\tconst split = typeof value === 'string' && value.match(/^\\s*(-?[\\d.]+)([^\\s]*)\\s*$/);\n\treturn split ? [parseFloat(split[1]), split[2] || 'px'] : [/** @type {number} */ (value), 'px'];\n}\n\nexport const contenteditable_truthy_values = ['', true, 1, 'true', 'contenteditable'];\n", "/** @type {typeof globalThis} */\nexport const globals =\n\ttypeof window !== 'undefined'\n\t\t? window\n\t\t: typeof globalThis !== 'undefined'\n\t\t? globalThis\n\t\t: // @ts-ignore Node typings have this\n\t\t global;\n", "import { globals } from './globals.js';\n\n/**\n * Resize observer singleton.\n * One listener per element only!\n * https://groups.google.com/a/chromium.org/g/blink-dev/c/z6ienONUb5A/m/F5-VcUZtBAAJ\n */\nexport class ResizeObserverSingleton {\n\t/**\n\t * @private\n\t * @readonly\n\t * @type {WeakMap}\n\t */\n\t_listeners = 'WeakMap' in globals ? new WeakMap() : undefined;\n\n\t/**\n\t * @private\n\t * @type {ResizeObserver}\n\t */\n\t_observer = undefined;\n\n\t/** @type {ResizeObserverOptions} */\n\toptions;\n\n\t/** @param {ResizeObserverOptions} options */\n\tconstructor(options) {\n\t\tthis.options = options;\n\t}\n\n\t/**\n\t * @param {Element} element\n\t * @param {import('./private.js').Listener} listener\n\t * @returns {() => void}\n\t */\n\tobserve(element, listener) {\n\t\tthis._listeners.set(element, listener);\n\t\tthis._getObserver().observe(element, this.options);\n\t\treturn () => {\n\t\t\tthis._listeners.delete(element);\n\t\t\tthis._observer.unobserve(element); // this line can probably be removed\n\t\t};\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_getObserver() {\n\t\treturn (\n\t\t\tthis._observer ??\n\t\t\t(this._observer = new ResizeObserver((entries) => {\n\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\tResizeObserverSingleton.entries.set(entry.target, entry);\n\t\t\t\t\tthis._listeners.get(entry.target)?.(entry);\n\t\t\t\t}\n\t\t\t}))\n\t\t);\n\t}\n}\n\n// Needs to be written like this to pass the tree-shake-test\nResizeObserverSingleton.entries = 'WeakMap' in globals ? new WeakMap() : undefined;\n", "import { contenteditable_truthy_values, has_prop } from './utils.js';\n\nimport { ResizeObserverSingleton } from './ResizeObserverSingleton.js';\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\n\n/**\n * @returns {void}\n */\nexport function start_hydrating() {\n\tis_hydrating = true;\n}\n\n/**\n * @returns {void}\n */\nexport function end_hydrating() {\n\tis_hydrating = false;\n}\n\n/**\n * @param {number} low\n * @param {number} high\n * @param {(index: number) => number} key\n * @param {number} value\n * @returns {number}\n */\nfunction upper_bound(low, high, key, value) {\n\t// Return first index of value larger than input value in the range [low, high)\n\twhile (low < high) {\n\t\tconst mid = low + ((high - low) >> 1);\n\t\tif (key(mid) <= value) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\thigh = mid;\n\t\t}\n\t}\n\treturn low;\n}\n\n/**\n * @param {NodeEx} target\n * @returns {void}\n */\nfunction init_hydrate(target) {\n\tif (target.hydrate_init) return;\n\ttarget.hydrate_init = true;\n\t// We know that all children have claim_order values since the unclaimed have been detached if target is not \n\n\tlet children = /** @type {ArrayLike} */ (target.childNodes);\n\t// If target is , there may be children without claim_order\n\tif (target.nodeName === 'HEAD') {\n\t\tconst my_children = [];\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tconst node = children[i];\n\t\t\tif (node.claim_order !== undefined) {\n\t\t\t\tmy_children.push(node);\n\t\t\t}\n\t\t}\n\t\tchildren = my_children;\n\t}\n\t/*\n\t * Reorder claimed children optimally.\n\t * We can reorder claimed children optimally by finding the longest subsequence of\n\t * nodes that are already claimed in order and only moving the rest. The longest\n\t * subsequence of nodes that are claimed in order can be found by\n\t * computing the longest increasing subsequence of .claim_order values.\n\t *\n\t * This algorithm is optimal in generating the least amount of reorder operations\n\t * possible.\n\t *\n\t * Proof:\n\t * We know that, given a set of reordering operations, the nodes that do not move\n\t * always form an increasing subsequence, since they do not move among each other\n\t * meaning that they must be already ordered among each other. Thus, the maximal\n\t * set of nodes that do not move form a longest increasing subsequence.\n\t */\n\t// Compute longest increasing subsequence\n\t// m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n\tconst m = new Int32Array(children.length + 1);\n\t// Predecessor indices + 1\n\tconst p = new Int32Array(children.length);\n\tm[0] = -1;\n\tlet longest = 0;\n\tfor (let i = 0; i < children.length; i++) {\n\t\tconst current = children[i].claim_order;\n\t\t// Find the largest subsequence length such that it ends in a value less than our current value\n\t\t// upper_bound returns first greater value, so we subtract one\n\t\t// with fast path for when we are on the current longest subsequence\n\t\tconst seq_len =\n\t\t\t(longest > 0 && children[m[longest]].claim_order <= current\n\t\t\t\t? longest + 1\n\t\t\t\t: upper_bound(1, longest, (idx) => children[m[idx]].claim_order, current)) - 1;\n\t\tp[i] = m[seq_len] + 1;\n\t\tconst new_len = seq_len + 1;\n\t\t// We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n\t\tm[new_len] = i;\n\t\tlongest = Math.max(new_len, longest);\n\t}\n\t// The longest increasing subsequence of nodes (initially reversed)\n\n\t/**\n\t * @type {NodeEx2[]}\n\t */\n\tconst lis = [];\n\t// The rest of the nodes, nodes that will be moved\n\n\t/**\n\t * @type {NodeEx2[]}\n\t */\n\tconst to_move = [];\n\tlet last = children.length - 1;\n\tfor (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n\t\tlis.push(children[cur - 1]);\n\t\tfor (; last >= cur; last--) {\n\t\t\tto_move.push(children[last]);\n\t\t}\n\t\tlast--;\n\t}\n\tfor (; last >= 0; last--) {\n\t\tto_move.push(children[last]);\n\t}\n\tlis.reverse();\n\t// We sort the nodes being moved to guarantee that their insertion order matches the claim order\n\tto_move.sort((a, b) => a.claim_order - b.claim_order);\n\t// Finally, we move the nodes\n\tfor (let i = 0, j = 0; i < to_move.length; i++) {\n\t\twhile (j < lis.length && to_move[i].claim_order >= lis[j].claim_order) {\n\t\t\tj++;\n\t\t}\n\t\tconst anchor = j < lis.length ? lis[j] : null;\n\t\ttarget.insertBefore(to_move[i], anchor);\n\t}\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @returns {void}\n */\nexport function append(target, node) {\n\ttarget.appendChild(node);\n}\n\n/**\n * @param {Node} target\n * @param {string} style_sheet_id\n * @param {string} styles\n * @returns {void}\n */\nexport function append_styles(target, style_sheet_id, styles) {\n\tconst append_styles_to = get_root_for_style(target);\n\tif (!append_styles_to.getElementById(style_sheet_id)) {\n\t\tconst style = element('style');\n\t\tstyle.id = style_sheet_id;\n\t\tstyle.textContent = styles;\n\t\tappend_stylesheet(append_styles_to, style);\n\t}\n}\n\n/**\n * @param {Node} node\n * @returns {ShadowRoot | Document}\n */\nexport function get_root_for_style(node) {\n\tif (!node) return document;\n\tconst root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n\tif (root && /** @type {ShadowRoot} */ (root).host) {\n\t\treturn /** @type {ShadowRoot} */ (root);\n\t}\n\treturn node.ownerDocument;\n}\n\n/**\n * @param {Node} node\n * @returns {CSSStyleSheet}\n */\nexport function append_empty_stylesheet(node) {\n\tconst style_element = element('style');\n\t// For transitions to work without 'style-src: unsafe-inline' Content Security Policy,\n\t// these empty tags need to be allowed with a hash as a workaround until we move to the Web Animations API.\n\t// Using the hash for the empty string (for an empty tag) works in all browsers except Safari.\n\t// So as a workaround for the workaround, when we append empty style tags we set their content to /* empty */.\n\t// The hash 'sha256-9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc=' will then work even in Safari.\n\tstyle_element.textContent = '/* empty */';\n\tappend_stylesheet(get_root_for_style(node), style_element);\n\treturn style_element.sheet;\n}\n\n/**\n * @param {ShadowRoot | Document} node\n * @param {HTMLStyleElement} style\n * @returns {CSSStyleSheet}\n */\nfunction append_stylesheet(node, style) {\n\tappend(/** @type {Document} */ (node).head || node, style);\n\treturn style.sheet;\n}\n\n/**\n * @param {NodeEx} target\n * @param {NodeEx} node\n * @returns {void}\n */\nexport function append_hydration(target, node) {\n\tif (is_hydrating) {\n\t\tinit_hydrate(target);\n\t\tif (\n\t\t\ttarget.actual_end_child === undefined ||\n\t\t\t(target.actual_end_child !== null && target.actual_end_child.parentNode !== target)\n\t\t) {\n\t\t\ttarget.actual_end_child = target.firstChild;\n\t\t}\n\t\t// Skip nodes of undefined ordering\n\t\twhile (target.actual_end_child !== null && target.actual_end_child.claim_order === undefined) {\n\t\t\ttarget.actual_end_child = target.actual_end_child.nextSibling;\n\t\t}\n\t\tif (node !== target.actual_end_child) {\n\t\t\t// We only insert if the ordering of this node should be modified or the parent node is not target\n\t\t\tif (node.claim_order !== undefined || node.parentNode !== target) {\n\t\t\t\ttarget.insertBefore(node, target.actual_end_child);\n\t\t\t}\n\t\t} else {\n\t\t\ttarget.actual_end_child = node.nextSibling;\n\t\t}\n\t} else if (node.parentNode !== target || node.nextSibling !== null) {\n\t\ttarget.appendChild(node);\n\t}\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @param {Node} [anchor]\n * @returns {void}\n */\nexport function insert(target, node, anchor) {\n\ttarget.insertBefore(node, anchor || null);\n}\n\n/**\n * @param {NodeEx} target\n * @param {NodeEx} node\n * @param {NodeEx} [anchor]\n * @returns {void}\n */\nexport function insert_hydration(target, node, anchor) {\n\tif (is_hydrating && !anchor) {\n\t\tappend_hydration(target, node);\n\t} else if (node.parentNode !== target || node.nextSibling != anchor) {\n\t\ttarget.insertBefore(node, anchor || null);\n\t}\n}\n\n/**\n * @param {Node} node\n * @returns {void}\n */\nexport function detach(node) {\n\tif (node.parentNode) {\n\t\tnode.parentNode.removeChild(node);\n\t}\n}\n\n/**\n * @returns {void} */\nexport function destroy_each(iterations, detaching) {\n\tfor (let i = 0; i < iterations.length; i += 1) {\n\t\tif (iterations[i]) iterations[i].d(detaching);\n\t}\n}\n\n/**\n * @template {keyof HTMLElementTagNameMap} K\n * @param {K} name\n * @returns {HTMLElementTagNameMap[K]}\n */\nexport function element(name) {\n\treturn document.createElement(name);\n}\n\n/**\n * @template {keyof HTMLElementTagNameMap} K\n * @param {K} name\n * @param {string} is\n * @returns {HTMLElementTagNameMap[K]}\n */\nexport function element_is(name, is) {\n\treturn document.createElement(name, { is });\n}\n\n/**\n * @template T\n * @template {keyof T} K\n * @param {T} obj\n * @param {K[]} exclude\n * @returns {Pick>}\n */\nexport function object_without_properties(obj, exclude) {\n\tconst target = /** @type {Pick>} */ ({});\n\tfor (const k in obj) {\n\t\tif (\n\t\t\thas_prop(obj, k) &&\n\t\t\t// @ts-ignore\n\t\t\texclude.indexOf(k) === -1\n\t\t) {\n\t\t\t// @ts-ignore\n\t\t\ttarget[k] = obj[k];\n\t\t}\n\t}\n\treturn target;\n}\n\n/**\n * @template {keyof SVGElementTagNameMap} K\n * @param {K} name\n * @returns {SVGElement}\n */\nexport function svg_element(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n/**\n * @param {string} data\n * @returns {Text}\n */\nexport function text(data) {\n\treturn document.createTextNode(data);\n}\n\n/**\n * @returns {Text} */\nexport function space() {\n\treturn text(' ');\n}\n\n/**\n * @returns {Text} */\nexport function empty() {\n\treturn text('');\n}\n\n/**\n * @param {string} content\n * @returns {Comment}\n */\nexport function comment(content) {\n\treturn document.createComment(content);\n}\n\n/**\n * @param {EventTarget} node\n * @param {string} event\n * @param {EventListenerOrEventListenerObject} handler\n * @param {boolean | AddEventListenerOptions | EventListenerOptions} [options]\n * @returns {() => void}\n */\nexport function listen(node, event, handler, options) {\n\tnode.addEventListener(event, handler, options);\n\treturn () => node.removeEventListener(event, handler, options);\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function prevent_default(fn) {\n\treturn function (event) {\n\t\tevent.preventDefault();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function stop_propagation(fn) {\n\treturn function (event) {\n\t\tevent.stopPropagation();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function stop_immediate_propagation(fn) {\n\treturn function (event) {\n\t\tevent.stopImmediatePropagation();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => void} */\nexport function self(fn) {\n\treturn function (event) {\n\t\t// @ts-ignore\n\t\tif (event.target === this) fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => void} */\nexport function trusted(fn) {\n\treturn function (event) {\n\t\t// @ts-ignore\n\t\tif (event.isTrusted) fn.call(this, event);\n\t};\n}\n\n/**\n * @param {Element} node\n * @param {string} attribute\n * @param {string} [value]\n * @returns {void}\n */\nexport function attr(node, attribute, value) {\n\tif (value == null) node.removeAttribute(attribute);\n\telse if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value);\n}\n/**\n * List of attributes that should always be set through the attr method,\n * because updating them through the property setter doesn't work reliably.\n * In the example of `width`/`height`, the problem is that the setter only\n * accepts numeric values, but the attribute can also be set to a string like `50%`.\n * If this list becomes too big, rethink this approach.\n */\nconst always_set_through_set_attribute = ['width', 'height'];\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {{ [x: string]: string }} attributes\n * @returns {void}\n */\nexport function set_attributes(node, attributes) {\n\t// @ts-ignore\n\tconst descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n\tfor (const key in attributes) {\n\t\tif (attributes[key] == null) {\n\t\t\tnode.removeAttribute(key);\n\t\t} else if (key === 'style') {\n\t\t\tnode.style.cssText = attributes[key];\n\t\t} else if (key === '__value') {\n\t\t\t/** @type {any} */ (node).value = node[key] = attributes[key];\n\t\t} else if (\n\t\t\tdescriptors[key] &&\n\t\t\tdescriptors[key].set &&\n\t\t\talways_set_through_set_attribute.indexOf(key) === -1\n\t\t) {\n\t\t\tnode[key] = attributes[key];\n\t\t} else {\n\t\t\tattr(node, key, attributes[key]);\n\t\t}\n\t}\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {{ [x: string]: string }} attributes\n * @returns {void}\n */\nexport function set_svg_attributes(node, attributes) {\n\tfor (const key in attributes) {\n\t\tattr(node, key, attributes[key]);\n\t}\n}\n\n/**\n * @param {Record} data_map\n * @returns {void}\n */\nexport function set_custom_element_data_map(node, data_map) {\n\tObject.keys(data_map).forEach((key) => {\n\t\tset_custom_element_data(node, key, data_map[key]);\n\t});\n}\n\n/**\n * @returns {void} */\nexport function set_custom_element_data(node, prop, value) {\n\tconst lower = prop.toLowerCase(); // for backwards compatibility with existing behavior we do lowercase first\n\tif (lower in node) {\n\t\tnode[lower] = typeof node[lower] === 'boolean' && value === '' ? true : value;\n\t} else if (prop in node) {\n\t\tnode[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n\t} else {\n\t\tattr(node, prop, value);\n\t}\n}\n\n/**\n * @param {string} tag\n */\nexport function set_dynamic_element_data(tag) {\n\treturn /-/.test(tag) ? set_custom_element_data_map : set_attributes;\n}\n\n/**\n * @returns {void}\n */\nexport function xlink_attr(node, attribute, value) {\n\tnode.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\n\n/**\n * @param {HTMLElement} node\n * @returns {string}\n */\nexport function get_svelte_dataset(node) {\n\treturn node.dataset.svelteH;\n}\n\n/**\n * @returns {unknown[]} */\nexport function get_binding_group_value(group, __value, checked) {\n\tconst value = new Set();\n\tfor (let i = 0; i < group.length; i += 1) {\n\t\tif (group[i].checked) value.add(group[i].__value);\n\t}\n\tif (!checked) {\n\t\tvalue.delete(__value);\n\t}\n\treturn Array.from(value);\n}\n\n/**\n * @param {HTMLInputElement[]} group\n * @returns {{ p(...inputs: HTMLInputElement[]): void; r(): void; }}\n */\nexport function init_binding_group(group) {\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _inputs;\n\treturn {\n\t\t/* push */ p(...inputs) {\n\t\t\t_inputs = inputs;\n\t\t\t_inputs.forEach((input) => group.push(input));\n\t\t},\n\t\t/* remove */ r() {\n\t\t\t_inputs.forEach((input) => group.splice(group.indexOf(input), 1));\n\t\t}\n\t};\n}\n\n/**\n * @param {number[]} indexes\n * @returns {{ u(new_indexes: number[]): void; p(...inputs: HTMLInputElement[]): void; r: () => void; }}\n */\nexport function init_binding_group_dynamic(group, indexes) {\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _group = get_binding_group(group);\n\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _inputs;\n\n\tfunction get_binding_group(group) {\n\t\tfor (let i = 0; i < indexes.length; i++) {\n\t\t\tgroup = group[indexes[i]] = group[indexes[i]] || [];\n\t\t}\n\t\treturn group;\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction push() {\n\t\t_inputs.forEach((input) => _group.push(input));\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction remove() {\n\t\t_inputs.forEach((input) => _group.splice(_group.indexOf(input), 1));\n\t}\n\treturn {\n\t\t/* update */ u(new_indexes) {\n\t\t\tindexes = new_indexes;\n\t\t\tconst new_group = get_binding_group(group);\n\t\t\tif (new_group !== _group) {\n\t\t\t\tremove();\n\t\t\t\t_group = new_group;\n\t\t\t\tpush();\n\t\t\t}\n\t\t},\n\t\t/* push */ p(...inputs) {\n\t\t\t_inputs = inputs;\n\t\t\tpush();\n\t\t},\n\t\t/* remove */ r: remove\n\t};\n}\n\n/** @returns {number} */\nexport function to_number(value) {\n\treturn value === '' ? null : +value;\n}\n\n/** @returns {any[]} */\nexport function time_ranges_to_array(ranges) {\n\tconst array = [];\n\tfor (let i = 0; i < ranges.length; i += 1) {\n\t\tarray.push({ start: ranges.start(i), end: ranges.end(i) });\n\t}\n\treturn array;\n}\n\n/**\n * @param {Element} element\n * @returns {ChildNode[]}\n */\nexport function children(element) {\n\treturn Array.from(element.childNodes);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {void}\n */\nfunction init_claim_info(nodes) {\n\tif (nodes.claim_info === undefined) {\n\t\tnodes.claim_info = { last_index: 0, total_claimed: 0 };\n\t}\n}\n\n/**\n * @template {ChildNodeEx} R\n * @param {ChildNodeArray} nodes\n * @param {(node: ChildNodeEx) => node is R} predicate\n * @param {(node: ChildNodeEx) => ChildNodeEx | undefined} process_node\n * @param {() => R} create_node\n * @param {boolean} dont_update_last_index\n * @returns {R}\n */\nfunction claim_node(nodes, predicate, process_node, create_node, dont_update_last_index = false) {\n\t// Try to find nodes in an order such that we lengthen the longest increasing subsequence\n\tinit_claim_info(nodes);\n\tconst result_node = (() => {\n\t\t// We first try to find an element after the previous one\n\t\tfor (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n\t\t\tconst node = nodes[i];\n\t\t\tif (predicate(node)) {\n\t\t\t\tconst replacement = process_node(node);\n\t\t\t\tif (replacement === undefined) {\n\t\t\t\t\tnodes.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\tnodes[i] = replacement;\n\t\t\t\t}\n\t\t\t\tif (!dont_update_last_index) {\n\t\t\t\t\tnodes.claim_info.last_index = i;\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\t// Otherwise, we try to find one before\n\t\t// We iterate in reverse so that we don't go too far back\n\t\tfor (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n\t\t\tconst node = nodes[i];\n\t\t\tif (predicate(node)) {\n\t\t\t\tconst replacement = process_node(node);\n\t\t\t\tif (replacement === undefined) {\n\t\t\t\t\tnodes.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\tnodes[i] = replacement;\n\t\t\t\t}\n\t\t\t\tif (!dont_update_last_index) {\n\t\t\t\t\tnodes.claim_info.last_index = i;\n\t\t\t\t} else if (replacement === undefined) {\n\t\t\t\t\t// Since we spliced before the last_index, we decrease it\n\t\t\t\t\tnodes.claim_info.last_index--;\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\t// If we can't find any matching node, we create a new one\n\t\treturn create_node();\n\t})();\n\tresult_node.claim_order = nodes.claim_info.total_claimed;\n\tnodes.claim_info.total_claimed += 1;\n\treturn result_node;\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @param {(name: string) => Element | SVGElement} create_element\n * @returns {Element | SVGElement}\n */\nfunction claim_element_base(nodes, name, attributes, create_element) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Element | SVGElement} */\n\t\t(node) => node.nodeName === name,\n\t\t/** @param {Element} node */\n\t\t(node) => {\n\t\t\tconst remove = [];\n\t\t\tfor (let j = 0; j < node.attributes.length; j++) {\n\t\t\t\tconst attribute = node.attributes[j];\n\t\t\t\tif (!attributes[attribute.name]) {\n\t\t\t\t\tremove.push(attribute.name);\n\t\t\t\t}\n\t\t\t}\n\t\t\tremove.forEach((v) => node.removeAttribute(v));\n\t\t\treturn undefined;\n\t\t},\n\t\t() => create_element(name)\n\t);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @returns {Element | SVGElement}\n */\nexport function claim_element(nodes, name, attributes) {\n\treturn claim_element_base(nodes, name, attributes, element);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @returns {Element | SVGElement}\n */\nexport function claim_svg_element(nodes, name, attributes) {\n\treturn claim_element_base(nodes, name, attributes, svg_element);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {Text}\n */\nexport function claim_text(nodes, data) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Text} */\n\t\t(node) => node.nodeType === 3,\n\t\t/** @param {Text} node */\n\t\t(node) => {\n\t\t\tconst data_str = '' + data;\n\t\t\tif (node.data.startsWith(data_str)) {\n\t\t\t\tif (node.data.length !== data_str.length) {\n\t\t\t\t\treturn node.splitText(data_str.length);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnode.data = data_str;\n\t\t\t}\n\t\t},\n\t\t() => text(data),\n\t\ttrue // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n\t);\n}\n\n/**\n * @returns {Text} */\nexport function claim_space(nodes) {\n\treturn claim_text(nodes, ' ');\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {Comment}\n */\nexport function claim_comment(nodes, data) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Comment} */\n\t\t(node) => node.nodeType === 8,\n\t\t/** @param {Comment} node */\n\t\t(node) => {\n\t\t\tnode.data = '' + data;\n\t\t\treturn undefined;\n\t\t},\n\t\t() => comment(data),\n\t\ttrue\n\t);\n}\n\nfunction get_comment_idx(nodes, text, start) {\n\tfor (let i = start; i < nodes.length; i += 1) {\n\t\tconst node = nodes[i];\n\t\tif (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n * @param {boolean} is_svg\n * @returns {HtmlTagHydration}\n */\nexport function claim_html_tag(nodes, is_svg) {\n\t// find html opening tag\n\tconst start_index = get_comment_idx(nodes, 'HTML_TAG_START', 0);\n\tconst end_index = get_comment_idx(nodes, 'HTML_TAG_END', start_index + 1);\n\tif (start_index === -1 || end_index === -1) {\n\t\treturn new HtmlTagHydration(is_svg);\n\t}\n\n\tinit_claim_info(nodes);\n\tconst html_tag_nodes = nodes.splice(start_index, end_index - start_index + 1);\n\tdetach(html_tag_nodes[0]);\n\tdetach(html_tag_nodes[html_tag_nodes.length - 1]);\n\tconst claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n\tif (claimed_nodes.length === 0) {\n\t\treturn new HtmlTagHydration(is_svg);\n\t}\n\tfor (const n of claimed_nodes) {\n\t\tn.claim_order = nodes.claim_info.total_claimed;\n\t\tnodes.claim_info.total_claimed += 1;\n\t}\n\treturn new HtmlTagHydration(is_svg, claimed_nodes);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @returns {void}\n */\nexport function set_data(text, data) {\n\tdata = '' + data;\n\tif (text.data === data) return;\n\ttext.data = /** @type {string} */ (data);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @returns {void}\n */\nexport function set_data_contenteditable(text, data) {\n\tdata = '' + data;\n\tif (text.wholeText === data) return;\n\ttext.data = /** @type {string} */ (data);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @param {string} attr_value\n * @returns {void}\n */\nexport function set_data_maybe_contenteditable(text, data, attr_value) {\n\tif (~contenteditable_truthy_values.indexOf(attr_value)) {\n\t\tset_data_contenteditable(text, data);\n\t} else {\n\t\tset_data(text, data);\n\t}\n}\n\n/**\n * @returns {void} */\nexport function set_input_value(input, value) {\n\tinput.value = value == null ? '' : value;\n}\n\n/**\n * @returns {void} */\nexport function set_input_type(input, type) {\n\ttry {\n\t\tinput.type = type;\n\t} catch (e) {\n\t\t// do nothing\n\t}\n}\n\n/**\n * @returns {void} */\nexport function set_style(node, key, value, important) {\n\tif (value == null) {\n\t\tnode.style.removeProperty(key);\n\t} else {\n\t\tnode.style.setProperty(key, value, important ? 'important' : '');\n\t}\n}\n\n/**\n * @returns {void} */\nexport function select_option(select, value, mounting) {\n\tfor (let i = 0; i < select.options.length; i += 1) {\n\t\tconst option = select.options[i];\n\t\tif (option.__value === value) {\n\t\t\toption.selected = true;\n\t\t\treturn;\n\t\t}\n\t}\n\tif (!mounting || value !== undefined) {\n\t\tselect.selectedIndex = -1; // no option should be selected\n\t}\n}\n\n/**\n * @returns {void} */\nexport function select_options(select, value) {\n\tfor (let i = 0; i < select.options.length; i += 1) {\n\t\tconst option = select.options[i];\n\t\toption.selected = ~value.indexOf(option.__value);\n\t}\n}\n\nexport function select_value(select) {\n\tconst selected_option = select.querySelector(':checked');\n\treturn selected_option && selected_option.__value;\n}\n\nexport function select_multiple_value(select) {\n\treturn [].map.call(select.querySelectorAll(':checked'), (option) => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\n\n/**\n * @type {boolean} */\nlet crossorigin;\n\n/**\n * @returns {boolean} */\nexport function is_crossorigin() {\n\tif (crossorigin === undefined) {\n\t\tcrossorigin = false;\n\t\ttry {\n\t\t\tif (typeof window !== 'undefined' && window.parent) {\n\t\t\t\tvoid window.parent.document;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tcrossorigin = true;\n\t\t}\n\t}\n\treturn crossorigin;\n}\n\n/**\n * @param {HTMLElement} node\n * @param {() => void} fn\n * @returns {() => void}\n */\nexport function add_iframe_resize_listener(node, fn) {\n\tconst computed_style = getComputedStyle(node);\n\tif (computed_style.position === 'static') {\n\t\tnode.style.position = 'relative';\n\t}\n\tconst iframe = element('iframe');\n\tiframe.setAttribute(\n\t\t'style',\n\t\t'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n\t\t\t'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;'\n\t);\n\tiframe.setAttribute('aria-hidden', 'true');\n\tiframe.tabIndex = -1;\n\tconst crossorigin = is_crossorigin();\n\n\t/**\n\t * @type {() => void}\n\t */\n\tlet unsubscribe;\n\tif (crossorigin) {\n\t\tiframe.src = \"data:text/html,\";\n\t\tunsubscribe = listen(\n\t\t\twindow,\n\t\t\t'message',\n\t\t\t/** @param {MessageEvent} event */ (event) => {\n\t\t\t\tif (event.source === iframe.contentWindow) fn();\n\t\t\t}\n\t\t);\n\t} else {\n\t\tiframe.src = 'about:blank';\n\t\tiframe.onload = () => {\n\t\t\tunsubscribe = listen(iframe.contentWindow, 'resize', fn);\n\t\t\t// make sure an initial resize event is fired _after_ the iframe is loaded (which is asynchronous)\n\t\t\t// see https://github.com/sveltejs/svelte/issues/4233\n\t\t\tfn();\n\t\t};\n\t}\n\tappend(node, iframe);\n\treturn () => {\n\t\tif (crossorigin) {\n\t\t\tunsubscribe();\n\t\t} else if (unsubscribe && iframe.contentWindow) {\n\t\t\tunsubscribe();\n\t\t}\n\t\tdetach(iframe);\n\t};\n}\nexport const resize_observer_content_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'content-box'\n});\nexport const resize_observer_border_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'border-box'\n});\nexport const resize_observer_device_pixel_content_box = /* @__PURE__ */ new ResizeObserverSingleton(\n\t{ box: 'device-pixel-content-box' }\n);\nexport { ResizeObserverSingleton };\n\n/**\n * @returns {void} */\nexport function toggle_class(element, name, toggle) {\n\t// The `!!` is required because an `undefined` flag means flipping the current state.\n\telement.classList.toggle(name, !!toggle);\n}\n\n/**\n * @template T\n * @param {string} type\n * @param {T} [detail]\n * @param {{ bubbles?: boolean, cancelable?: boolean }} [options]\n * @returns {CustomEvent}\n */\nexport function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n\treturn new CustomEvent(type, { detail, bubbles, cancelable });\n}\n\n/**\n * @param {string} selector\n * @param {HTMLElement} parent\n * @returns {ChildNodeArray}\n */\nexport function query_selector_all(selector, parent = document.body) {\n\treturn Array.from(parent.querySelectorAll(selector));\n}\n\n/**\n * @param {string} nodeId\n * @param {HTMLElement} head\n * @returns {any[]}\n */\nexport function head_selector(nodeId, head) {\n\tconst result = [];\n\tlet started = 0;\n\tfor (const node of head.childNodes) {\n\t\tif (node.nodeType === 8 /* comment node */) {\n\t\t\tconst comment = node.textContent.trim();\n\t\t\tif (comment === `HEAD_${nodeId}_END`) {\n\t\t\t\tstarted -= 1;\n\t\t\t\tresult.push(node);\n\t\t\t} else if (comment === `HEAD_${nodeId}_START`) {\n\t\t\t\tstarted += 1;\n\t\t\t\tresult.push(node);\n\t\t\t}\n\t\t} else if (started > 0) {\n\t\t\tresult.push(node);\n\t\t}\n\t}\n\treturn result;\n}\n/** */\nexport class HtmlTag {\n\t/**\n\t * @private\n\t * @default false\n\t */\n\tis_svg = false;\n\t/** parent for creating node */\n\te = undefined;\n\t/** html tag nodes */\n\tn = undefined;\n\t/** target */\n\tt = undefined;\n\t/** anchor */\n\ta = undefined;\n\tconstructor(is_svg = false) {\n\t\tthis.is_svg = is_svg;\n\t\tthis.e = this.n = null;\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tc(html) {\n\t\tthis.h(html);\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @param {HTMLElement | SVGElement} target\n\t * @param {HTMLElement | SVGElement} anchor\n\t * @returns {void}\n\t */\n\tm(html, target, anchor = null) {\n\t\tif (!this.e) {\n\t\t\tif (this.is_svg)\n\t\t\t\tthis.e = svg_element(/** @type {keyof SVGElementTagNameMap} */ (target.nodeName));\n\t\t\t/** #7364 target for may be provided as #document-fragment(11) */ else\n\t\t\t\tthis.e = element(\n\t\t\t\t\t/** @type {keyof HTMLElementTagNameMap} */ (\n\t\t\t\t\t\ttarget.nodeType === 11 ? 'TEMPLATE' : target.nodeName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\tthis.t =\n\t\t\t\ttarget.tagName !== 'TEMPLATE'\n\t\t\t\t\t? target\n\t\t\t\t\t: /** @type {HTMLTemplateElement} */ (target).content;\n\t\t\tthis.c(html);\n\t\t}\n\t\tthis.i(anchor);\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\th(html) {\n\t\tthis.e.innerHTML = html;\n\t\tthis.n = Array.from(\n\t\t\tthis.e.nodeName === 'TEMPLATE' ? this.e.content.childNodes : this.e.childNodes\n\t\t);\n\t}\n\n\t/**\n\t * @returns {void} */\n\ti(anchor) {\n\t\tfor (let i = 0; i < this.n.length; i += 1) {\n\t\t\tinsert(this.t, this.n[i], anchor);\n\t\t}\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tp(html) {\n\t\tthis.d();\n\t\tthis.h(html);\n\t\tthis.i(this.a);\n\t}\n\n\t/**\n\t * @returns {void} */\n\td() {\n\t\tthis.n.forEach(detach);\n\t}\n}\n\nexport class HtmlTagHydration extends HtmlTag {\n\t/** @type {Element[]} hydration claimed nodes */\n\tl = undefined;\n\n\tconstructor(is_svg = false, claimed_nodes) {\n\t\tsuper(is_svg);\n\t\tthis.e = this.n = null;\n\t\tthis.l = claimed_nodes;\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tc(html) {\n\t\tif (this.l) {\n\t\t\tthis.n = this.l;\n\t\t} else {\n\t\t\tsuper.c(html);\n\t\t}\n\t}\n\n\t/**\n\t * @returns {void} */\n\ti(anchor) {\n\t\tfor (let i = 0; i < this.n.length; i += 1) {\n\t\t\tinsert_hydration(this.t, this.n[i], anchor);\n\t\t}\n\t}\n}\n\n/**\n * @param {NamedNodeMap} attributes\n * @returns {{}}\n */\nexport function attribute_to_object(attributes) {\n\tconst result = {};\n\tfor (const attribute of attributes) {\n\t\tresult[attribute.name] = attribute.value;\n\t}\n\treturn result;\n}\n\nconst escaped = {\n\t'\"': '"',\n\t'&': '&',\n\t'<': '<'\n};\n\nconst regex_attribute_characters_to_escape = /[\"&<]/g;\n\n/**\n * Note that the attribute itself should be surrounded in double quotes\n * @param {any} attribute\n */\nfunction escape_attribute(attribute) {\n\treturn String(attribute).replace(regex_attribute_characters_to_escape, (match) => escaped[match]);\n}\n\n/**\n * @param {Record} attributes\n */\nexport function stringify_spread(attributes) {\n\tlet str = ' ';\n\tfor (const key in attributes) {\n\t\tif (attributes[key] != null) {\n\t\t\tstr += `${key}=\"${escape_attribute(attributes[key])}\" `;\n\t\t}\n\t}\n\n\treturn str;\n}\n\n/**\n * @param {HTMLElement} element\n * @returns {{}}\n */\nexport function get_custom_elements_slots(element) {\n\tconst result = {};\n\telement.childNodes.forEach(\n\t\t/** @param {Element} node */ (node) => {\n\t\t\tresult[node.slot || 'default'] = true;\n\t\t}\n\t);\n\treturn result;\n}\n\nexport function construct_svelte_component(component, props) {\n\treturn new component(props);\n}\n\n/**\n * @typedef {Node & {\n * \tclaim_order?: number;\n * \thydrate_init?: true;\n * \tactual_end_child?: NodeEx;\n * \tchildNodes: NodeListOf;\n * }} NodeEx\n */\n\n/** @typedef {ChildNode & NodeEx} ChildNodeEx */\n\n/** @typedef {NodeEx & { claim_order: number }} NodeEx2 */\n\n/**\n * @typedef {ChildNodeEx[] & {\n * \tclaim_info?: {\n * \t\tlast_index: number;\n * \t\ttotal_claimed: number;\n * \t};\n * }} ChildNodeArray\n */\n", "import { custom_event } from './dom.js';\n\nexport let current_component;\n\n/** @returns {void} */\nexport function set_current_component(component) {\n\tcurrent_component = component;\n}\n\nexport function get_current_component() {\n\tif (!current_component) throw new Error('Function called outside component initialization');\n\treturn current_component;\n}\n\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`\n *\n * https://svelte.dev/docs/svelte#beforeupdate\n * @param {() => any} fn\n * @returns {void}\n */\nexport function beforeUpdate(fn) {\n\tget_current_component().$$.before_update.push(fn);\n}\n\n/**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * If a function is returned _synchronously_ from `onMount`, it will be called when the component is unmounted.\n *\n * `onMount` does not run inside a [server-side component](https://svelte.dev/docs#run-time-server-side-component-api).\n *\n * https://svelte.dev/docs/svelte#onmount\n * @template T\n * @param {() => import('./private.js').NotFunction | Promise> | (() => any)} fn\n * @returns {void}\n */\nexport function onMount(fn) {\n\tget_current_component().$$.on_mount.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`\n *\n * https://svelte.dev/docs/svelte#afterupdate\n * @param {() => any} fn\n * @returns {void}\n */\nexport function afterUpdate(fn) {\n\tget_current_component().$$.after_update.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * https://svelte.dev/docs/svelte#ondestroy\n * @param {() => any} fn\n * @returns {void}\n */\nexport function onDestroy(fn) {\n\tget_current_component().$$.on_destroy.push(fn);\n}\n\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs#template-syntax-component-directives-on-eventname).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:\n * ```ts\n * const dispatch = createEventDispatcher<{\n * loaded: never; // does not take a detail argument\n * change: string; // takes a detail argument of type string, which is required\n * optional: number | null; // takes an optional detail argument of type number\n * }>();\n * ```\n *\n * https://svelte.dev/docs/svelte#createeventdispatcher\n * @template {Record} [EventMap=any]\n * @returns {import('./public.js').EventDispatcher}\n */\nexport function createEventDispatcher() {\n\tconst component = get_current_component();\n\treturn (type, detail, { cancelable = false } = {}) => {\n\t\tconst callbacks = component.$$.callbacks[type];\n\t\tif (callbacks) {\n\t\t\t// TODO are there situations where events could be dispatched\n\t\t\t// in a server (non-DOM) environment?\n\t\t\tconst event = custom_event(/** @type {string} */ (type), detail, { cancelable });\n\t\t\tcallbacks.slice().forEach((fn) => {\n\t\t\t\tfn.call(component, event);\n\t\t\t});\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\t\treturn true;\n\t};\n}\n\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#setcontext\n * @template T\n * @param {any} key\n * @param {T} context\n * @returns {T}\n */\nexport function setContext(key, context) {\n\tget_current_component().$$.context.set(key, context);\n\treturn context;\n}\n\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#getcontext\n * @template T\n * @param {any} key\n * @returns {T}\n */\nexport function getContext(key) {\n\treturn get_current_component().$$.context.get(key);\n}\n\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * https://svelte.dev/docs/svelte#getallcontexts\n * @template {Map} [T=Map]\n * @returns {T}\n */\nexport function getAllContexts() {\n\treturn get_current_component().$$.context;\n}\n\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#hascontext\n * @param {any} key\n * @returns {boolean}\n */\nexport function hasContext(key) {\n\treturn get_current_component().$$.context.has(key);\n}\n\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\n/**\n * @param component\n * @param event\n * @returns {void}\n */\nexport function bubble(component, event) {\n\tconst callbacks = component.$$.callbacks[event.type];\n\tif (callbacks) {\n\t\t// @ts-ignore\n\t\tcallbacks.slice().forEach((fn) => fn.call(this, event));\n\t}\n}\n", "import { run_all } from './utils.js';\nimport { current_component, set_current_component } from './lifecycle.js';\n\nexport const dirty_components = [];\nexport const intros = { enabled: false };\nexport const binding_callbacks = [];\n\nlet render_callbacks = [];\n\nconst flush_callbacks = [];\n\nconst resolved_promise = /* @__PURE__ */ Promise.resolve();\n\nlet update_scheduled = false;\n\n/** @returns {void} */\nexport function schedule_update() {\n\tif (!update_scheduled) {\n\t\tupdate_scheduled = true;\n\t\tresolved_promise.then(flush);\n\t}\n}\n\n/** @returns {Promise} */\nexport function tick() {\n\tschedule_update();\n\treturn resolved_promise;\n}\n\n/** @returns {void} */\nexport function add_render_callback(fn) {\n\trender_callbacks.push(fn);\n}\n\n/** @returns {void} */\nexport function add_flush_callback(fn) {\n\tflush_callbacks.push(fn);\n}\n\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\n\nlet flushidx = 0; // Do *not* move this inside the flush() function\n\n/** @returns {void} */\nexport function flush() {\n\t// Do not reenter flush while dirty components are updated, as this can\n\t// result in an infinite loop. Instead, let the inner flush handle it.\n\t// Reentrancy is ok afterwards for bindings etc.\n\tif (flushidx !== 0) {\n\t\treturn;\n\t}\n\tconst saved_component = current_component;\n\tdo {\n\t\t// first, call beforeUpdate functions\n\t\t// and update components\n\t\ttry {\n\t\t\twhile (flushidx < dirty_components.length) {\n\t\t\t\tconst component = dirty_components[flushidx];\n\t\t\t\tflushidx++;\n\t\t\t\tset_current_component(component);\n\t\t\t\tupdate(component.$$);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// reset dirty state to not end up in a deadlocked state and then rethrow\n\t\t\tdirty_components.length = 0;\n\t\t\tflushidx = 0;\n\t\t\tthrow e;\n\t\t}\n\t\tset_current_component(null);\n\t\tdirty_components.length = 0;\n\t\tflushidx = 0;\n\t\twhile (binding_callbacks.length) binding_callbacks.pop()();\n\t\t// then, once components are updated, call\n\t\t// afterUpdate functions. This may cause\n\t\t// subsequent updates...\n\t\tfor (let i = 0; i < render_callbacks.length; i += 1) {\n\t\t\tconst callback = render_callbacks[i];\n\t\t\tif (!seen_callbacks.has(callback)) {\n\t\t\t\t// ...so guard against infinite loops\n\t\t\t\tseen_callbacks.add(callback);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t\trender_callbacks.length = 0;\n\t} while (dirty_components.length);\n\twhile (flush_callbacks.length) {\n\t\tflush_callbacks.pop()();\n\t}\n\tupdate_scheduled = false;\n\tseen_callbacks.clear();\n\tset_current_component(saved_component);\n}\n\n/** @returns {void} */\nfunction update($$) {\n\tif ($$.fragment !== null) {\n\t\t$$.update();\n\t\trun_all($$.before_update);\n\t\tconst dirty = $$.dirty;\n\t\t$$.dirty = [-1];\n\t\t$$.fragment && $$.fragment.p($$.ctx, dirty);\n\t\t$$.after_update.forEach(add_render_callback);\n\t}\n}\n\n/**\n * Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`.\n * @param {Function[]} fns\n * @returns {void}\n */\nexport function flush_render_callbacks(fns) {\n\tconst filtered = [];\n\tconst targets = [];\n\trender_callbacks.forEach((c) => (fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c)));\n\ttargets.forEach((c) => c());\n\trender_callbacks = filtered;\n}\n", "import { identity as linear, is_function, noop, run_all } from './utils.js';\nimport { now } from './environment.js';\nimport { loop } from './loop.js';\nimport { create_rule, delete_rule } from './style_manager.js';\nimport { custom_event } from './dom.js';\nimport { add_render_callback } from './scheduler.js';\n\n/**\n * @type {Promise | null}\n */\nlet promise;\n\n/**\n * @returns {Promise}\n */\nfunction wait() {\n\tif (!promise) {\n\t\tpromise = Promise.resolve();\n\t\tpromise.then(() => {\n\t\t\tpromise = null;\n\t\t});\n\t}\n\treturn promise;\n}\n\n/**\n * @param {Element} node\n * @param {INTRO | OUTRO | boolean} direction\n * @param {'start' | 'end'} kind\n * @returns {void}\n */\nfunction dispatch(node, direction, kind) {\n\tnode.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\n\nconst outroing = new Set();\n\n/**\n * @type {Outro}\n */\nlet outros;\n\n/**\n * @returns {void} */\nexport function group_outros() {\n\toutros = {\n\t\tr: 0,\n\t\tc: [],\n\t\tp: outros // parent group\n\t};\n}\n\n/**\n * @returns {void} */\nexport function check_outros() {\n\tif (!outros.r) {\n\t\trun_all(outros.c);\n\t}\n\toutros = outros.p;\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} [local]\n * @returns {void}\n */\nexport function transition_in(block, local) {\n\tif (block && block.i) {\n\t\toutroing.delete(block);\n\t\tblock.i(local);\n\t}\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} local\n * @param {0 | 1} [detach]\n * @param {() => void} [callback]\n * @returns {void}\n */\nexport function transition_out(block, local, detach, callback) {\n\tif (block && block.o) {\n\t\tif (outroing.has(block)) return;\n\t\toutroing.add(block);\n\t\toutros.c.push(() => {\n\t\t\toutroing.delete(block);\n\t\t\tif (callback) {\n\t\t\t\tif (detach) block.d(1);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t});\n\t\tblock.o(local);\n\t} else if (callback) {\n\t\tcallback();\n\t}\n}\n\n/**\n * @type {import('../transition/public.js').TransitionConfig}\n */\nconst null_transition = { duration: 0 };\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @returns {{ start(): void; invalidate(): void; end(): void; }}\n */\nexport function create_in_transition(node, fn, params) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'in' };\n\tlet config = fn(node, params, options);\n\tlet running = false;\n\tlet animation_name;\n\tlet task;\n\tlet uid = 0;\n\n\t/**\n\t * @returns {void} */\n\tfunction cleanup() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction go() {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\t\tif (css) animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n\t\ttick(0, 1);\n\t\tconst start_time = now() + delay;\n\t\tconst end_time = start_time + duration;\n\t\tif (task) task.abort();\n\t\trunning = true;\n\t\tadd_render_callback(() => dispatch(node, true, 'start'));\n\t\ttask = loop((now) => {\n\t\t\tif (running) {\n\t\t\t\tif (now >= end_time) {\n\t\t\t\t\ttick(1, 0);\n\t\t\t\t\tdispatch(node, true, 'end');\n\t\t\t\t\tcleanup();\n\t\t\t\t\treturn (running = false);\n\t\t\t\t}\n\t\t\t\tif (now >= start_time) {\n\t\t\t\t\tconst t = easing((now - start_time) / duration);\n\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn running;\n\t\t});\n\t}\n\tlet started = false;\n\treturn {\n\t\tstart() {\n\t\t\tif (started) return;\n\t\t\tstarted = true;\n\t\t\tdelete_rule(node);\n\t\t\tif (is_function(config)) {\n\t\t\t\tconfig = config(options);\n\t\t\t\twait().then(go);\n\t\t\t} else {\n\t\t\t\tgo();\n\t\t\t}\n\t\t},\n\t\tinvalidate() {\n\t\t\tstarted = false;\n\t\t},\n\t\tend() {\n\t\t\tif (running) {\n\t\t\t\tcleanup();\n\t\t\t\trunning = false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @returns {{ end(reset: any): void; }}\n */\nexport function create_out_transition(node, fn, params) {\n\t/** @type {TransitionOptions} */\n\tconst options = { direction: 'out' };\n\tlet config = fn(node, params, options);\n\tlet running = true;\n\tlet animation_name;\n\tconst group = outros;\n\tgroup.r += 1;\n\t/** @type {boolean} */\n\tlet original_inert_value;\n\n\t/**\n\t * @returns {void} */\n\tfunction go() {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\n\t\tif (css) animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n\n\t\tconst start_time = now() + delay;\n\t\tconst end_time = start_time + duration;\n\t\tadd_render_callback(() => dispatch(node, false, 'start'));\n\n\t\tif ('inert' in node) {\n\t\t\toriginal_inert_value = /** @type {HTMLElement} */ (node).inert;\n\t\t\tnode.inert = true;\n\t\t}\n\n\t\tloop((now) => {\n\t\t\tif (running) {\n\t\t\t\tif (now >= end_time) {\n\t\t\t\t\ttick(0, 1);\n\t\t\t\t\tdispatch(node, false, 'end');\n\t\t\t\t\tif (!--group.r) {\n\t\t\t\t\t\t// this will result in `end()` being called,\n\t\t\t\t\t\t// so we don't need to clean up here\n\t\t\t\t\t\trun_all(group.c);\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (now >= start_time) {\n\t\t\t\t\tconst t = easing((now - start_time) / duration);\n\t\t\t\t\ttick(1 - t, t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn running;\n\t\t});\n\t}\n\n\tif (is_function(config)) {\n\t\twait().then(() => {\n\t\t\t// @ts-ignore\n\t\t\tconfig = config(options);\n\t\t\tgo();\n\t\t});\n\t} else {\n\t\tgo();\n\t}\n\n\treturn {\n\t\tend(reset) {\n\t\t\tif (reset && 'inert' in node) {\n\t\t\t\tnode.inert = original_inert_value;\n\t\t\t}\n\t\t\tif (reset && config.tick) {\n\t\t\t\tconfig.tick(1, 0);\n\t\t\t}\n\t\t\tif (running) {\n\t\t\t\tif (animation_name) delete_rule(node, animation_name);\n\t\t\t\trunning = false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @param {boolean} intro\n * @returns {{ run(b: 0 | 1): void; end(): void; }}\n */\nexport function create_bidirectional_transition(node, fn, params, intro) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'both' };\n\tlet config = fn(node, params, options);\n\tlet t = intro ? 0 : 1;\n\n\t/**\n\t * @type {Program | null} */\n\tlet running_program = null;\n\n\t/**\n\t * @type {PendingProgram | null} */\n\tlet pending_program = null;\n\tlet animation_name = null;\n\n\t/** @type {boolean} */\n\tlet original_inert_value;\n\n\t/**\n\t * @returns {void} */\n\tfunction clear_animation() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @param {PendingProgram} program\n\t * @param {number} duration\n\t * @returns {Program}\n\t */\n\tfunction init(program, duration) {\n\t\tconst d = /** @type {Program['d']} */ (program.b - t);\n\t\tduration *= Math.abs(d);\n\t\treturn {\n\t\t\ta: t,\n\t\t\tb: program.b,\n\t\t\td,\n\t\t\tduration,\n\t\t\tstart: program.start,\n\t\t\tend: program.start + duration,\n\t\t\tgroup: program.group\n\t\t};\n\t}\n\n\t/**\n\t * @param {INTRO | OUTRO} b\n\t * @returns {void}\n\t */\n\tfunction go(b) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\n\t\t/**\n\t\t * @type {PendingProgram} */\n\t\tconst program = {\n\t\t\tstart: now() + delay,\n\t\t\tb\n\t\t};\n\n\t\tif (!b) {\n\t\t\t// @ts-ignore todo: improve typings\n\t\t\tprogram.group = outros;\n\t\t\toutros.r += 1;\n\t\t}\n\n\t\tif ('inert' in node) {\n\t\t\tif (b) {\n\t\t\t\tif (original_inert_value !== undefined) {\n\t\t\t\t\t// aborted/reversed outro \u2014 restore previous inert value\n\t\t\t\t\tnode.inert = original_inert_value;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toriginal_inert_value = /** @type {HTMLElement} */ (node).inert;\n\t\t\t\tnode.inert = true;\n\t\t\t}\n\t\t}\n\n\t\tif (running_program || pending_program) {\n\t\t\tpending_program = program;\n\t\t} else {\n\t\t\t// if this is an intro, and there's a delay, we need to do\n\t\t\t// an initial tick and/or apply CSS animation immediately\n\t\t\tif (css) {\n\t\t\t\tclear_animation();\n\t\t\t\tanimation_name = create_rule(node, t, b, duration, delay, easing, css);\n\t\t\t}\n\t\t\tif (b) tick(0, 1);\n\t\t\trunning_program = init(program, duration);\n\t\t\tadd_render_callback(() => dispatch(node, b, 'start'));\n\t\t\tloop((now) => {\n\t\t\t\tif (pending_program && now > pending_program.start) {\n\t\t\t\t\trunning_program = init(pending_program, duration);\n\t\t\t\t\tpending_program = null;\n\t\t\t\t\tdispatch(node, running_program.b, 'start');\n\t\t\t\t\tif (css) {\n\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\tanimation_name = create_rule(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tt,\n\t\t\t\t\t\t\trunning_program.b,\n\t\t\t\t\t\t\trunning_program.duration,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\teasing,\n\t\t\t\t\t\t\tconfig.css\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (running_program) {\n\t\t\t\t\tif (now >= running_program.end) {\n\t\t\t\t\t\ttick((t = running_program.b), 1 - t);\n\t\t\t\t\t\tdispatch(node, running_program.b, 'end');\n\t\t\t\t\t\tif (!pending_program) {\n\t\t\t\t\t\t\t// we're done\n\t\t\t\t\t\t\tif (running_program.b) {\n\t\t\t\t\t\t\t\t// intro \u2014 we can tidy up immediately\n\t\t\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// outro \u2014 needs to be coordinated\n\t\t\t\t\t\t\t\tif (!--running_program.group.r) run_all(running_program.group.c);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trunning_program = null;\n\t\t\t\t\t} else if (now >= running_program.start) {\n\t\t\t\t\t\tconst p = now - running_program.start;\n\t\t\t\t\t\tt = running_program.a + running_program.d * easing(p / running_program.duration);\n\t\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!(running_program || pending_program);\n\t\t\t});\n\t\t}\n\t}\n\treturn {\n\t\trun(b) {\n\t\t\tif (is_function(config)) {\n\t\t\t\twait().then(() => {\n\t\t\t\t\tconst opts = { direction: b ? 'in' : 'out' };\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tconfig = config(opts);\n\t\t\t\t\tgo(b);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tgo(b);\n\t\t\t}\n\t\t},\n\t\tend() {\n\t\t\tclear_animation();\n\t\t\trunning_program = pending_program = null;\n\t\t}\n\t};\n}\n\n/** @typedef {1} INTRO */\n/** @typedef {0} OUTRO */\n/** @typedef {{ direction: 'in' | 'out' | 'both' }} TransitionOptions */\n/** @typedef {(node: Element, params: any, options: TransitionOptions) => import('../transition/public.js').TransitionConfig} TransitionFn */\n\n/**\n * @typedef {Object} Outro\n * @property {number} r\n * @property {Function[]} c\n * @property {Object} p\n */\n\n/**\n * @typedef {Object} PendingProgram\n * @property {number} start\n * @property {INTRO|OUTRO} b\n * @property {Outro} [group]\n */\n\n/**\n * @typedef {Object} Program\n * @property {number} a\n * @property {INTRO|OUTRO} b\n * @property {1|-1} d\n * @property {number} duration\n * @property {number} start\n * @property {number} end\n * @property {Outro} [group]\n */\n", "const _boolean_attributes = /** @type {const} */ ([\n\t'allowfullscreen',\n\t'allowpaymentrequest',\n\t'async',\n\t'autofocus',\n\t'autoplay',\n\t'checked',\n\t'controls',\n\t'default',\n\t'defer',\n\t'disabled',\n\t'formnovalidate',\n\t'hidden',\n\t'inert',\n\t'ismap',\n\t'loop',\n\t'multiple',\n\t'muted',\n\t'nomodule',\n\t'novalidate',\n\t'open',\n\t'playsinline',\n\t'readonly',\n\t'required',\n\t'reversed',\n\t'selected'\n]);\n\n/**\n * List of HTML boolean attributes (e.g. ` `).\n * Source: https://html.spec.whatwg.org/multipage/indices.html\n *\n * @type {Set}\n */\nexport const boolean_attributes = new Set([..._boolean_attributes]);\n\n/** @typedef {typeof _boolean_attributes[number]} BooleanAttributes */\n", "import {\n\tadd_render_callback,\n\tflush,\n\tflush_render_callbacks,\n\tschedule_update,\n\tdirty_components\n} from './scheduler.js';\nimport { current_component, set_current_component } from './lifecycle.js';\nimport { blank_object, is_empty, is_function, run, run_all, noop } from './utils.js';\nimport {\n\tchildren,\n\tdetach,\n\tstart_hydrating,\n\tend_hydrating,\n\tget_custom_elements_slots,\n\tinsert,\n\telement,\n\tattr\n} from './dom.js';\nimport { transition_in } from './transitions.js';\n\n/** @returns {void} */\nexport function bind(component, name, callback) {\n\tconst index = component.$$.props[name];\n\tif (index !== undefined) {\n\t\tcomponent.$$.bound[index] = callback;\n\t\tcallback(component.$$.ctx[index]);\n\t}\n}\n\n/** @returns {void} */\nexport function create_component(block) {\n\tblock && block.c();\n}\n\n/** @returns {void} */\nexport function claim_component(block, parent_nodes) {\n\tblock && block.l(parent_nodes);\n}\n\n/** @returns {void} */\nexport function mount_component(component, target, anchor) {\n\tconst { fragment, after_update } = component.$$;\n\tfragment && fragment.m(target, anchor);\n\t// onMount happens before the initial afterUpdate\n\tadd_render_callback(() => {\n\t\tconst new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n\t\t// if the component was destroyed immediately\n\t\t// it will update the `$$.on_destroy` reference to `null`.\n\t\t// the destructured on_destroy may still reference to the old array\n\t\tif (component.$$.on_destroy) {\n\t\t\tcomponent.$$.on_destroy.push(...new_on_destroy);\n\t\t} else {\n\t\t\t// Edge case - component was destroyed immediately,\n\t\t\t// most likely as a result of a binding initialising\n\t\t\trun_all(new_on_destroy);\n\t\t}\n\t\tcomponent.$$.on_mount = [];\n\t});\n\tafter_update.forEach(add_render_callback);\n}\n\n/** @returns {void} */\nexport function destroy_component(component, detaching) {\n\tconst $$ = component.$$;\n\tif ($$.fragment !== null) {\n\t\tflush_render_callbacks($$.after_update);\n\t\trun_all($$.on_destroy);\n\t\t$$.fragment && $$.fragment.d(detaching);\n\t\t// TODO null out other refs, including component.$$ (but need to\n\t\t// preserve final state?)\n\t\t$$.on_destroy = $$.fragment = null;\n\t\t$$.ctx = [];\n\t}\n}\n\n/** @returns {void} */\nfunction make_dirty(component, i) {\n\tif (component.$$.dirty[0] === -1) {\n\t\tdirty_components.push(component);\n\t\tschedule_update();\n\t\tcomponent.$$.dirty.fill(0);\n\t}\n\tcomponent.$$.dirty[(i / 31) | 0] |= 1 << i % 31;\n}\n\n// TODO: Document the other params\n/**\n * @param {SvelteComponent} component\n * @param {import('./public.js').ComponentConstructorOptions} options\n *\n * @param {import('./utils.js')['not_equal']} not_equal Used to compare props and state values.\n * @param {(target: Element | ShadowRoot) => void} [append_styles] Function that appends styles to the DOM when the component is first initialised.\n * This will be the `add_css` function from the compiled component.\n *\n * @returns {void}\n */\nexport function init(\n\tcomponent,\n\toptions,\n\tinstance,\n\tcreate_fragment,\n\tnot_equal,\n\tprops,\n\tappend_styles = null,\n\tdirty = [-1]\n) {\n\tconst parent_component = current_component;\n\tset_current_component(component);\n\t/** @type {import('./private.js').T$$} */\n\tconst $$ = (component.$$ = {\n\t\tfragment: null,\n\t\tctx: [],\n\t\t// state\n\t\tprops,\n\t\tupdate: noop,\n\t\tnot_equal,\n\t\tbound: blank_object(),\n\t\t// lifecycle\n\t\ton_mount: [],\n\t\ton_destroy: [],\n\t\ton_disconnect: [],\n\t\tbefore_update: [],\n\t\tafter_update: [],\n\t\tcontext: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n\t\t// everything else\n\t\tcallbacks: blank_object(),\n\t\tdirty,\n\t\tskip_bound: false,\n\t\troot: options.target || parent_component.$$.root\n\t});\n\tappend_styles && append_styles($$.root);\n\tlet ready = false;\n\t$$.ctx = instance\n\t\t? instance(component, options.props || {}, (i, ret, ...rest) => {\n\t\t\t\tconst value = rest.length ? rest[0] : ret;\n\t\t\t\tif ($$.ctx && not_equal($$.ctx[i], ($$.ctx[i] = value))) {\n\t\t\t\t\tif (!$$.skip_bound && $$.bound[i]) $$.bound[i](value);\n\t\t\t\t\tif (ready) make_dirty(component, i);\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t })\n\t\t: [];\n\t$$.update();\n\tready = true;\n\trun_all($$.before_update);\n\t// `false` as a special case of no DOM component\n\t$$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n\tif (options.target) {\n\t\tif (options.hydrate) {\n\t\t\tstart_hydrating();\n\t\t\t// TODO: what is the correct type here?\n\t\t\t// @ts-expect-error\n\t\t\tconst nodes = children(options.target);\n\t\t\t$$.fragment && $$.fragment.l(nodes);\n\t\t\tnodes.forEach(detach);\n\t\t} else {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t$$.fragment && $$.fragment.c();\n\t\t}\n\t\tif (options.intro) transition_in(component.$$.fragment);\n\t\tmount_component(component, options.target, options.anchor);\n\t\tend_hydrating();\n\t\tflush();\n\t}\n\tset_current_component(parent_component);\n}\n\nexport let SvelteElement;\n\nif (typeof HTMLElement === 'function') {\n\tSvelteElement = class extends HTMLElement {\n\t\t/** The Svelte component constructor */\n\t\t$$ctor;\n\t\t/** Slots */\n\t\t$$s;\n\t\t/** The Svelte component instance */\n\t\t$$c;\n\t\t/** Whether or not the custom element is connected */\n\t\t$$cn = false;\n\t\t/** Component props data */\n\t\t$$d = {};\n\t\t/** `true` if currently in the process of reflecting component props back to attributes */\n\t\t$$r = false;\n\t\t/** @type {Record} Props definition (name, reflected, type etc) */\n\t\t$$p_d = {};\n\t\t/** @type {Record} Event listeners */\n\t\t$$l = {};\n\t\t/** @type {Map} Event listener unsubscribe functions */\n\t\t$$l_u = new Map();\n\n\t\tconstructor($$componentCtor, $$slots, use_shadow_dom) {\n\t\t\tsuper();\n\t\t\tthis.$$ctor = $$componentCtor;\n\t\t\tthis.$$s = $$slots;\n\t\t\tif (use_shadow_dom) {\n\t\t\t\tthis.attachShadow({ mode: 'open' });\n\t\t\t}\n\t\t}\n\n\t\taddEventListener(type, listener, options) {\n\t\t\t// We can't determine upfront if the event is a custom event or not, so we have to\n\t\t\t// listen to both. If someone uses a custom event with the same name as a regular\n\t\t\t// browser event, this fires twice - we can't avoid that.\n\t\t\tthis.$$l[type] = this.$$l[type] || [];\n\t\t\tthis.$$l[type].push(listener);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t}\n\t\t\tsuper.addEventListener(type, listener, options);\n\t\t}\n\n\t\tremoveEventListener(type, listener, options) {\n\t\t\tsuper.removeEventListener(type, listener, options);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$l_u.get(listener);\n\t\t\t\tif (unsub) {\n\t\t\t\t\tunsub();\n\t\t\t\t\tthis.$$l_u.delete(listener);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.$$l[type]) {\n\t\t\t\tconst idx = this.$$l[type].indexOf(listener);\n\t\t\t\tif (idx >= 0) {\n\t\t\t\t\tthis.$$l[type].splice(idx, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tasync connectedCallback() {\n\t\t\tthis.$$cn = true;\n\t\t\tif (!this.$$c) {\n\t\t\t\t// We wait one tick to let possible child slot elements be created/mounted\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tif (!this.$$cn || this.$$c) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfunction create_slot(name) {\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tlet node;\n\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\tc: function create() {\n\t\t\t\t\t\t\t\tnode = element('slot');\n\t\t\t\t\t\t\t\tif (name !== 'default') {\n\t\t\t\t\t\t\t\t\tattr(node, 'name', name);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * @param {HTMLElement} target\n\t\t\t\t\t\t\t * @param {HTMLElement} [anchor]\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tm: function mount(target, anchor) {\n\t\t\t\t\t\t\t\tinsert(target, node, anchor);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\td: function destroy(detaching) {\n\t\t\t\t\t\t\t\tif (detaching) {\n\t\t\t\t\t\t\t\t\tdetach(node);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst $$slots = {};\n\t\t\t\tconst existing_slots = get_custom_elements_slots(this);\n\t\t\t\tfor (const name of this.$$s) {\n\t\t\t\t\tif (name in existing_slots) {\n\t\t\t\t\t\t$$slots[name] = [create_slot(name)];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const attribute of this.attributes) {\n\t\t\t\t\t// this.$$data takes precedence over this.attributes\n\t\t\t\t\tconst name = this.$$g_p(attribute.name);\n\t\t\t\t\tif (!(name in this.$$d)) {\n\t\t\t\t\t\tthis.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, 'toProp');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Port over props that were set programmatically before ce was initialized\n\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\tif (!(key in this.$$d) && this[key] !== undefined) {\n\t\t\t\t\t\tthis.$$d[key] = this[key]; // don't transform, these were set through JavaScript\n\t\t\t\t\t\tdelete this[key]; // remove the property that shadows the getter/setter\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$c = new this.$$ctor({\n\t\t\t\t\ttarget: this.shadowRoot || this,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...this.$$d,\n\t\t\t\t\t\t$$slots,\n\t\t\t\t\t\t$$scope: {\n\t\t\t\t\t\t\tctx: []\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Reflect component props as attributes\n\t\t\t\tconst reflect_attributes = () => {\n\t\t\t\t\tthis.$$r = true;\n\t\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\t\tthis.$$d[key] = this.$$c.$$.ctx[this.$$c.$$.props[key]];\n\t\t\t\t\t\tif (this.$$p_d[key].reflect) {\n\t\t\t\t\t\t\tconst attribute_value = get_custom_element_value(\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tthis.$$d[key],\n\t\t\t\t\t\t\t\tthis.$$p_d,\n\t\t\t\t\t\t\t\t'toAttribute'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (attribute_value == null) {\n\t\t\t\t\t\t\t\tthis.removeAttribute(this.$$p_d[key].attribute || key);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setAttribute(this.$$p_d[key].attribute || key, attribute_value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.$$r = false;\n\t\t\t\t};\n\t\t\t\tthis.$$c.$$.after_update.push(reflect_attributes);\n\t\t\t\treflect_attributes(); // once initially because after_update is added too late for first render\n\n\t\t\t\tfor (const type in this.$$l) {\n\t\t\t\t\tfor (const listener of this.$$l[type]) {\n\t\t\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$l = {};\n\t\t\t}\n\t\t}\n\n\t\t// We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte\n\t\t// and setting attributes through setAttribute etc, this is helpful\n\t\tattributeChangedCallback(attr, _oldValue, newValue) {\n\t\t\tif (this.$$r) return;\n\t\t\tattr = this.$$g_p(attr);\n\t\t\tthis.$$d[attr] = get_custom_element_value(attr, newValue, this.$$p_d, 'toProp');\n\t\t\tthis.$$c?.$set({ [attr]: this.$$d[attr] });\n\t\t}\n\n\t\tdisconnectedCallback() {\n\t\t\tthis.$$cn = false;\n\t\t\t// In a microtask, because this could be a move within the DOM\n\t\t\tPromise.resolve().then(() => {\n\t\t\t\tif (!this.$$cn && this.$$c) {\n\t\t\t\t\tthis.$$c.$destroy();\n\t\t\t\t\tthis.$$c = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t$$g_p(attribute_name) {\n\t\t\treturn (\n\t\t\t\tObject.keys(this.$$p_d).find(\n\t\t\t\t\t(key) =>\n\t\t\t\t\t\tthis.$$p_d[key].attribute === attribute_name ||\n\t\t\t\t\t\t(!this.$$p_d[key].attribute && key.toLowerCase() === attribute_name)\n\t\t\t\t) || attribute_name\n\t\t\t);\n\t\t}\n\t};\n}\n\n/**\n * @param {string} prop\n * @param {any} value\n * @param {Record} props_definition\n * @param {'toAttribute' | 'toProp'} [transform]\n */\nfunction get_custom_element_value(prop, value, props_definition, transform) {\n\tconst type = props_definition[prop]?.type;\n\tvalue = type === 'Boolean' && typeof value !== 'boolean' ? value != null : value;\n\tif (!transform || !props_definition[prop]) {\n\t\treturn value;\n\t} else if (transform === 'toAttribute') {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value == null ? null : JSON.stringify(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value ? '' : null;\n\t\t\tcase 'Number':\n\t\t\t\treturn value == null ? null : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t} else {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value && JSON.parse(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value; // conversion already handled above\n\t\t\tcase 'Number':\n\t\t\t\treturn value != null ? +value : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t}\n}\n\n/**\n * @internal\n *\n * Turn a Svelte component into a custom element.\n * @param {import('./public.js').ComponentType} Component A Svelte component constructor\n * @param {Record} props_definition The props to observe\n * @param {string[]} slots The slots to create\n * @param {string[]} accessors Other accessors besides the ones for props the component has\n * @param {boolean} use_shadow_dom Whether to use shadow DOM\n * @param {(ce: new () => HTMLElement) => new () => HTMLElement} [extend]\n */\nexport function create_custom_element(\n\tComponent,\n\tprops_definition,\n\tslots,\n\taccessors,\n\tuse_shadow_dom,\n\textend\n) {\n\tlet Class = class extends SvelteElement {\n\t\tconstructor() {\n\t\t\tsuper(Component, slots, use_shadow_dom);\n\t\t\tthis.$$p_d = props_definition;\n\t\t}\n\t\tstatic get observedAttributes() {\n\t\t\treturn Object.keys(props_definition).map((key) =>\n\t\t\t\t(props_definition[key].attribute || key).toLowerCase()\n\t\t\t);\n\t\t}\n\t};\n\tObject.keys(props_definition).forEach((prop) => {\n\t\tObject.defineProperty(Class.prototype, prop, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c && prop in this.$$c ? this.$$c[prop] : this.$$d[prop];\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tvalue = get_custom_element_value(prop, value, props_definition);\n\t\t\t\tthis.$$d[prop] = value;\n\t\t\t\tthis.$$c?.$set({ [prop]: value });\n\t\t\t}\n\t\t});\n\t});\n\taccessors.forEach((accessor) => {\n\t\tObject.defineProperty(Class.prototype, accessor, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c?.[accessor];\n\t\t\t}\n\t\t});\n\t});\n\tif (extend) {\n\t\t// @ts-expect-error - assigning here is fine\n\t\tClass = extend(Class);\n\t}\n\tComponent.element = /** @type {any} */ (Class);\n\treturn Class;\n}\n\n/**\n * Base class for Svelte components. Used when dev=false.\n *\n * @template {Record} [Props=any]\n * @template {Record} [Events=any]\n */\nexport class SvelteComponent {\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$ = undefined;\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$set = undefined;\n\n\t/** @returns {void} */\n\t$destroy() {\n\t\tdestroy_component(this, 1);\n\t\tthis.$destroy = noop;\n\t}\n\n\t/**\n\t * @template {Extract} K\n\t * @param {K} type\n\t * @param {((e: Events[K]) => void) | null | undefined} callback\n\t * @returns {() => void}\n\t */\n\t$on(type, callback) {\n\t\tif (!is_function(callback)) {\n\t\t\treturn noop;\n\t\t}\n\t\tconst callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);\n\t\tcallbacks.push(callback);\n\t\treturn () => {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index !== -1) callbacks.splice(index, 1);\n\t\t};\n\t}\n\n\t/**\n\t * @param {Partial} props\n\t * @returns {void}\n\t */\n\t$set(props) {\n\t\tif (this.$$set && !is_empty(props)) {\n\t\t\tthis.$$.skip_bound = true;\n\t\t\tthis.$$set(props);\n\t\t\tthis.$$.skip_bound = false;\n\t\t}\n\t}\n}\n\n/**\n * @typedef {Object} CustomElementPropDefinition\n * @property {string} [attribute]\n * @property {boolean} [reflect]\n * @property {'String'|'Boolean'|'Number'|'Array'|'Object'} [type]\n */\n", "import { PUBLIC_VERSION } from '../../../shared/version.js';\n\nif (typeof window !== 'undefined')\n\t// @ts-ignore\n\t(window.__svelte || (window.__svelte = { v: new Set() })).v.add(PUBLIC_VERSION);\n", "const BYTE_UNITS = [\n\t'B',\n\t'kB',\n\t'MB',\n\t'GB',\n\t'TB',\n\t'PB',\n\t'EB',\n\t'ZB',\n\t'YB',\n];\n\nconst BIBYTE_UNITS = [\n\t'B',\n\t'KiB',\n\t'MiB',\n\t'GiB',\n\t'TiB',\n\t'PiB',\n\t'EiB',\n\t'ZiB',\n\t'YiB',\n];\n\nconst BIT_UNITS = [\n\t'b',\n\t'kbit',\n\t'Mbit',\n\t'Gbit',\n\t'Tbit',\n\t'Pbit',\n\t'Ebit',\n\t'Zbit',\n\t'Ybit',\n];\n\nconst BIBIT_UNITS = [\n\t'b',\n\t'kibit',\n\t'Mibit',\n\t'Gibit',\n\t'Tibit',\n\t'Pibit',\n\t'Eibit',\n\t'Zibit',\n\t'Yibit',\n];\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number, locale, options) => {\n\tlet result = number;\n\tif (typeof locale === 'string' || Array.isArray(locale)) {\n\t\tresult = number.toLocaleString(locale, options);\n\t} else if (locale === true || options !== undefined) {\n\t\tresult = number.toLocaleString(undefined, options);\n\t}\n\n\treturn result;\n};\n\nconst log10 = numberOrBigInt => {\n\tif (typeof numberOrBigInt === 'number') {\n\t\treturn Math.log10(numberOrBigInt);\n\t}\n\n\tconst string = numberOrBigInt.toString(10);\n\n\treturn string.length + Math.log10(`0.${string.slice(0, 15)}`);\n};\n\nconst log = numberOrBigInt => {\n\tif (typeof numberOrBigInt === 'number') {\n\t\treturn Math.log(numberOrBigInt);\n\t}\n\n\treturn log10(numberOrBigInt) * Math.log(10);\n};\n\nconst divide = (numberOrBigInt, divisor) => {\n\tif (typeof numberOrBigInt === 'number') {\n\t\treturn numberOrBigInt / divisor;\n\t}\n\n\tconst integerPart = numberOrBigInt / BigInt(divisor);\n\tconst remainder = numberOrBigInt % BigInt(divisor);\n\treturn Number(integerPart) + (Number(remainder) / divisor);\n};\n\nconst applyFixedWidth = (result, fixedWidth) => {\n\tif (fixedWidth === undefined) {\n\t\treturn result;\n\t}\n\n\tif (typeof fixedWidth !== 'number' || !Number.isSafeInteger(fixedWidth) || fixedWidth < 0) {\n\t\tthrow new TypeError(`Expected fixedWidth to be a non-negative integer, got ${typeof fixedWidth}: ${fixedWidth}`);\n\t}\n\n\tif (fixedWidth === 0) {\n\t\treturn result;\n\t}\n\n\treturn result.length < fixedWidth ? result.padStart(fixedWidth, ' ') : result;\n};\n\nconst buildLocaleOptions = options => {\n\tconst {minimumFractionDigits, maximumFractionDigits} = options;\n\n\tif (minimumFractionDigits === undefined && maximumFractionDigits === undefined) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\t...(minimumFractionDigits !== undefined && {minimumFractionDigits}),\n\t\t...(maximumFractionDigits !== undefined && {maximumFractionDigits}),\n\t\troundingMode: 'trunc',\n\t};\n};\n\nexport default function prettyBytes(number, options) {\n\tif (typeof number !== 'bigint' && !Number.isFinite(number)) {\n\t\tthrow new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n\t}\n\n\toptions = {\n\t\tbits: false,\n\t\tbinary: false,\n\t\tspace: true,\n\t\tnonBreakingSpace: false,\n\t\t...options,\n\t};\n\n\tconst UNITS = options.bits\n\t\t? (options.binary ? BIBIT_UNITS : BIT_UNITS)\n\t\t: (options.binary ? BIBYTE_UNITS : BYTE_UNITS);\n\n\tconst separator = options.space ? (options.nonBreakingSpace ? '\\u00A0' : ' ') : '';\n\n\t// Handle signed zero case\n\tconst isZero = typeof number === 'number' ? number === 0 : number === 0n;\n\tif (options.signed && isZero) {\n\t\tconst result = ` 0${separator}${UNITS[0]}`;\n\t\treturn applyFixedWidth(result, options.fixedWidth);\n\t}\n\n\tconst isNegative = number < 0;\n\tconst prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n\tif (isNegative) {\n\t\tnumber = -number;\n\t}\n\n\tconst localeOptions = buildLocaleOptions(options);\n\n\tlet exponent = 0;\n\tif (number >= 1) {\n\t\texponent = Math.min(Math.floor(options.binary ? log(number) / Math.log(1024) : log10(number) / 3), UNITS.length - 1);\n\t}\n\n\tnumber = divide(number, (options.binary ? 1024 : 1000) ** exponent);\n\n\tif (!localeOptions) {\n\t\tconst minPrecision = Math.max(3, Math.floor(number).toString().length);\n\t\tnumber = Number(number.toPrecision(minPrecision));\n\t}\n\n\tconst numberString = toLocaleString(number, options.locale, localeOptions);\n\tconst result = prefix + numberString + separator + UNITS[exponent];\n\treturn applyFixedWidth(result, options.fixedWidth);\n}\n", "\n\n\n\n\n
\n
{title} \n
\n {#if playing}\n {#if set_storyfile_size}\n
\n
{prettyBytes(totalsize_gz, {maximumFractionDigits: 1, minimumFractionDigits: 1})}
\n {:else}\n
\n {/if}\n {:else}\n
Play!
\n {/if}\n
\n
", "/*\n\nParchment Launcher\n==================\n\nCopyright (c) 2026 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/parchment\n\n*/\n\nimport '../web/web.css'\n\nimport Cookies from 'js-cookie'\n\nimport {/*AsyncGlk,*/ Blorb, fetch_resource, FileView, is_iOS, type ProgressCallback, read_uploaded_file} from '../upstream/asyncglk/src/index-browser.js'\nimport emglken_file_sizes from 'emglken/build/file-sizes.json' with {type: 'json'}\n\nimport {find_format, identify_blorb_storyfile_format} from './formats.js'\nimport type {ParchmentOptions, StoryOptions} from './interface.js'\nimport {get_default_options, get_query_options} from './options.js'\n\nimport LoadingPane from './ui/LoadingPane.svelte'\n\ninterface ParchmentWindow extends Window {\n parchment: ParchmentLauncher\n parchment_options?: ParchmentOptions\n}\ndeclare let window: ParchmentWindow\n\nconst is_in_iframe = window.self !== window.top\n\nclass ParchmentLauncher {\n loading_pane?: LoadingPane\n new_tab?: WindowProxy\n options: ParchmentOptions\n story?: StoryOptions\n\n constructor(parchment_options?: ParchmentOptions) {\n // Only get story from the URL if there is no story already in the parchment_options\n const query_options: Array = ['autoplay', 'do_vm_autosave', 'use_asyncglk']\n if (!parchment_options?.story) {\n query_options.push('story')\n }\n this.options = Object.assign({}, get_default_options(), parchment_options, get_query_options(query_options))\n // Use AsyncGlk if requested\n /*if (this.options.use_asyncglk) {\n this.options.Glk = new AsyncGlk()\n }*/\n }\n\n get_storyfile_path(): StoryOptions | null {\n if (this.options.story) {\n if (typeof this.options.story === 'string') {\n return {url: this.options.story}\n }\n return this.options.story\n }\n return null\n }\n\n async launch() {\n try {\n // Update the Dialog storage version\n await this.options.Dialog.init(this.options)\n\n // Apply the dark theme if set\n const theme = this.options.theme\n || Cookies.get(this.options.theme_cookie)\n // Or if the browser tells us to prefer dark\n || (matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : '')\n if (theme) {\n document.documentElement.setAttribute('data-theme', theme)\n }\n\n const storyfile = this.get_storyfile_path()\n if (!storyfile) {\n // Set up all the ways we can load a story\n $('#custom-file-upload').show().on('keydown', event => {\n if (event.keyCode === 32 /*Space*/ || event.keyCode === 13 /*Enter*/) {\n event.target.click()\n }\n })\n $('#file-upload').on('change', () => {\n const file = ($('#file-upload')[0] as HTMLInputElement)?.files?.[0]\n if (file) {\n this.load_uploaded_file(file)\n }\n })\n $('#play-url').show()\n $('#play-url-button').on('click', () => this.play_url())\n $('#play-url-input').on('keydown', event => {\n if (event.keyCode === 13 /*Enter*/) {\n this.play_url()\n }\n })\n return\n }\n\n this.story = storyfile\n this.preload()\n }\n catch (err) {\n this.options.GlkOte.error(err)\n throw err\n }\n }\n\n /** Prepare to load the game, but if autoplaying is disabled this will only show the loading pane */\n preload() {\n try {\n const story = this.story!\n // Check we were given a sufficient story object\n if (!story.path) {\n if (!story.url) {\n throw new Error('Needs story path or URL')\n }\n }\n\n // Hide the about page, and show the loading pane instead\n $('#about').remove()\n const cover_image_url = $('#loadingpane img').attr('src')!\n $('#loadingpane').remove()\n\n const gameport = document.getElementById('gameport')!\n this.loading_pane = new LoadingPane({\n target: gameport,\n props: {\n cover_image_url,\n play: this.load,\n playing: !!this.options.autoplay,\n // At this point in time we don't know the final (after following redirects) URL of the storyfile. For Unboxer URLs we could have an ugly query string, so try to account for that by just cutting off the URL after the last =\n title: story.title ?? /([/=])([^/=]+)$/.exec((story.path || story.url)!)![2],\n },\n })\n if (this.options.autoplay) {\n this.load()\n }\n }\n catch (err) {\n this.options.GlkOte.error(err)\n throw err\n }\n }\n\n /** Actually load and play the storyfile */\n load = async () => {\n try {\n // Break out of an iframe\n if (is_in_iframe && !this.options.play_in_iframe) {\n // If we've already opened a new tab, focus it (except in iOS where it doesn't work)\n if (this.new_tab && !this.new_tab.closed && !is_iOS) {\n this.new_tab.focus()\n }\n else {\n this.new_tab = window.open(document.URL)!\n }\n // It would be nice to exit Itch's maximised mode here, but I can't work out how to safely do so on both mobile and desktop\n return\n }\n this.loading_pane!.playing = true\n\n const story = this.story!\n // We'll display download progress only if we know the file size of the storyfile\n let progress_callback: ProgressCallback | undefined\n if (story.filesize) {\n this.loading_pane!.add_file(story.filesize, true)\n progress_callback = this.loading_pane!.update_progress\n }\n\n // Identify the format\n let format = find_format(story.format, story.path || story.url)\n\n // If a blorb file extension is generic, we must download it first to identify its format\n const options = Object.assign({}, this.options)\n if (format.id === 'blorb') {\n if (!story.path) {\n story.path = await this.options.Dialog.download(story.url!, progress_callback)\n }\n const data = (await this.options.Dialog.read(story.path))!\n options.Blorb = new Blorb(data)\n format = identify_blorb_storyfile_format(options.Blorb)\n }\n\n const engine = format.engines![0]\n\n const requires = await Promise.all([\n story.path || this.options.Dialog.download(story.url!, progress_callback),\n ...engine.load.map(path => {\n if (story.filesize && (path in emglken_file_sizes)) {\n this.loading_pane!.add_file(emglken_file_sizes[path as keyof typeof emglken_file_sizes])\n }\n return fetch_resource(this.options, path, progress_callback)\n }),\n ])\n story.path = requires.shift() as string\n\n // If the story is a Blorb then parse it\n if (format.blorbable && !options.Blorb) {\n const data = (await this.options.Dialog.read(story.path!))!\n const view = new FileView(data)\n if (view.getFourCC(0) === 'FORM' && view.getFourCC(8) === 'IFRS') {\n options.Blorb = new Blorb(data)\n }\n }\n\n await engine.start(story, options, requires)\n }\n catch (err) {\n this.options.GlkOte.error(err)\n throw err\n }\n }\n\n async load_uploaded_file(file: File) {\n try {\n this.options.autoplay = 1\n const data = await read_uploaded_file(file)\n this.story = {\n path: await this.options.Dialog.upload(file.name, data),\n title: file.name,\n }\n this.preload()\n }\n catch (err) {\n this.options.GlkOte.error(err)\n throw err\n }\n }\n\n play_url() {\n const url = $('#play-url-input').val() as string\n if (!url) {\n return\n }\n // Validate the URL\n try {\n new URL(url)\n }\n catch {\n $('#play-url-error').text('Please enter a valid URL')\n return\n }\n\n // Change the page URL\n const new_url = new URL(window.location + '')\n new_url.searchParams.set('story', url)\n window.location = new_url + ''\n\n // TODO: We could use the history API, but we need to then handle going back\n //history.pushState(null, '', new_url)\n //this.load(url)\n }\n}\n\n$(() => {\n const parchment = new ParchmentLauncher(window.parchment_options)\n window.parchment = parchment\n\n if (parchment.options.auto_launch) {\n parchment.launch()\n }\n})\n"],
+ "mappings": "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",
+ "names": ["b", "c", "d", "g", "e", "f", "a", "h", "i", "j", "k", "l", "m", "module", "assign", "target", "i", "source", "key", "defaultConverter", "value", "init", "converter", "defaultAttributes", "set", "name", "attributes", "stringifiedAttributes", "attributeName", "get", "cookies", "jar", "parts", "found", "api", "freeGlobal", "freeGlobal_default", "freeSelf", "root", "freeGlobal_default", "root_default", "Symbol", "root_default", "Symbol_default", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "Symbol_default", "getRawTag", "value", "isOwn", "tag", "unmasked", "result", "getRawTag_default", "objectProto", "nativeObjectToString", "objectToString", "value", "objectToString_default", "nullTag", "undefinedTag", "symToStringTag", "Symbol_default", "baseGetTag", "value", "getRawTag_default", "objectToString_default", "baseGetTag_default", "isObjectLike", "value", "isObjectLike_default", "symbolTag", "isSymbol", "value", "isObjectLike_default", "baseGetTag_default", "isSymbol_default", "arrayMap", "array", "iteratee", "index", "length", "result", "arrayMap_default", "isArray", "isArray_default", "INFINITY", "symbolProto", "Symbol_default", "symbolToString", "baseToString", "value", "isArray_default", "arrayMap_default", "isSymbol_default", "result", "baseToString_default", "reWhitespace", "trimmedEndIndex", "string", "index", "trimmedEndIndex_default", "reTrimStart", "baseTrim", "string", "trimmedEndIndex_default", "baseTrim_default", "isObject", "value", "type", "isObject_default", "NAN", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "toNumber", "value", "isSymbol_default", "isObject_default", "other", "baseTrim_default", "isBinary", "toNumber_default", "toString", "value", "baseToString_default", "toString_default", "basePropertyOf", "object", "key", "basePropertyOf_default", "now", "root_default", "now_default", "FUNC_ERROR_TEXT", "nativeMax", "nativeMin", "debounce", "func", "wait", "options", "lastArgs", "lastThis", "maxWait", "result", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "toNumber_default", "isObject_default", "invokeFunc", "time", "args", "thisArg", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "timeWaiting", "shouldInvoke", "now_default", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "debounce_default", "FUNC_ERROR_TEXT", "throttle", "func", "wait", "options", "leading", "trailing", "isObject_default", "debounce_default", "throttle_default", "htmlUnescapes", "unescapeHtmlChar", "basePropertyOf_default", "unescapeHtmlChar_default", "reEscapedHtml", "reHasEscapedHtml", "unescape", "string", "toString_default", "unescapeHtmlChar_default", "unescape_default", "FileView", "data", "byteOffset", "byteLength", "index", "length", "text", "utf8decoder", "utf8encoder", "IFF", "data", "view", "FileView", "i", "length", "chunk_length", "buffer_length", "chunk", "giblorb_ID_AIFF", "giblorb_ID_BINA", "giblorb_ID_Data", "giblorb_ID_FORM", "giblorb_ID_JPEG", "giblorb_ID_MP3_", "giblorb_ID_OGGV", "giblorb_ID_PNG_", "resource_to_chunktype", "resource_format_to_usage", "resource_format", "Blorb", "data", "iff", "IFF", "ridx_chunk", "resources_by_offset", "ridx_view", "FileView", "i", "usage", "resource_number", "resource_offset", "iff_chunk", "chunk", "view", "resource_key", "xml", "utf8decoder", "bibliographic", "entry_pattern", "linebreak_pattern", "whitespace_pattern", "result", "tag", "content", "unescape_default", "resource", "num", "gametype", "get_jpeg_dimensions", "get_png_dimensions", "img", "field", "get_jpeg_dimensions", "data", "view", "FileView", "i", "marker", "chunklength", "get_png_dimensions", "chunktype", "DEFAULT_METRICS", "KEY_CODES_TO_NAMES", "KEY_CODE_DOWN", "KEY_CODE_RETURN", "KEY_CODE_UP", "NBSP", "OFFSCREEN_OFFSET", "PACKAGE_VERSION", "filetype_to_extension", "filetype", "GlkOteBase", "PACKAGE_VERSION", "DEFAULT_METRICS", "options", "error", "value", "name", "msg", "val", "data", "err", "replyfunc", "ref", "filetype_to_extension", "filename", "ex", "ev", "colour", "windows", "is_input_focused", "activeElement_tagName", "is_iOS", "is_pinch_zoomed", "u8", "u16", "i32", "fleb", "fdeb", "clim", "freb", "eb", "start", "b", "i", "r", "j", "_a", "fl", "revfl", "_b", "fd", "revfd", "rev", "x", "hMap", "cd", "mb", "s", "l", "le", "co", "rvb", "sv", "r_1", "v", "m", "flt", "fdt", "flrm", "hMap", "flt", "fdrm", "hMap", "fdt", "max", "a", "m", "i", "bits", "d", "p", "o", "bits16", "shft", "slc", "v", "s", "e", "u8", "ec", "err", "ind", "msg", "nt", "e", "inflt", "dat", "st", "buf", "dict", "sl", "dl", "u8", "noBuf", "resize", "noSt", "cbuf", "l", "bl", "nbuf", "final", "pos", "bt", "lm", "dm", "lbt", "dbt", "tbts", "bits", "type", "flrm", "fdrm", "hLit", "hcLen", "tl", "ldt", "clt", "i", "clim", "clb", "max", "clbmsk", "clm", "hMap", "r", "s", "c", "n", "lt", "dt", "shft", "t", "lms", "dms", "lpos", "bits16", "sym", "add", "b", "fleb", "fl", "d", "dsym", "fd", "fdeb", "end", "shift", "dend", "slc", "et", "u8", "gzs", "d", "err", "flg", "st", "zs", "gzl", "l", "gunzipSync", "data", "opts", "st", "gzs", "err", "inflt", "u8", "gzl", "td", "tds", "et", "jsonp_queue", "resource_map", "fetch_resource", "options", "path", "progress_callback", "JSONPQueue", "cached", "response", "fetch_resource_inner", "resource", "node", "data", "node_types", "process_resource", "lib_path", "url", "read_response", "parse_base64", "chunk_length", "parse_base64_with_data_url", "chunks", "i", "blob", "gunzipSync", "length", "reader", "done", "value", "result", "offset", "chunk", "read_uploaded_file", "file", "resolve", "reject", "next", "script_elem", "import_file_saver", "assertPath", "path", "normalizeStringPosix", "allowAboveRoot", "res", "lastSegmentLength", "lastSlash", "dots", "code", "i", "lastSlashIndex", "_format", "sep", "pathObject", "dir", "base", "posix", "_cwd", "resolvedPath", "resolvedAbsolute", "cwd", "isAbsolute", "trailingSeparator", "joined", "arg", "from", "to", "from2", "to2", "fromStart", "fromEnd", "fromLen", "toStart", "toEnd", "toLen", "length", "lastCommonSep", "fromCode", "toCode", "out", "hasRoot", "end", "matchedSlash", "ext", "start", "extIdx", "firstNonSlashEnd", "startDot", "startPart", "preDotState", "ret", "noop", "assign", "tar", "src", "k", "run", "fn", "blank_object", "run_all", "fns", "is_function", "thing", "safe_not_equal", "a", "b", "is_empty", "obj", "create_slot", "definition", "ctx", "$$scope", "fn", "slot_ctx", "get_slot_context", "assign", "get_slot_changes", "dirty", "lets", "merged", "len", "i", "update_slot_base", "slot", "slot_definition", "slot_changes", "get_slot_context_fn", "slot_context", "get_all_dirty_from_scope", "$$scope", "dirty", "length", "i", "action_destroyer", "action_result", "is_function", "noop", "globals", "ResizeObserverSingleton", "_ResizeObserverSingleton", "globals", "options", "element", "listener", "entries", "entry", "is_hydrating", "start_hydrating", "end_hydrating", "append", "target", "node", "insert", "target", "node", "anchor", "detach", "node", "element", "name", "svg_element", "name", "text", "data", "space", "empty", "listen", "node", "event", "handler", "options", "prevent_default", "fn", "stop_propagation", "attr", "node", "attribute", "value", "children", "element", "set_data", "text", "data", "set_input_value", "input", "value", "select_option", "select", "value", "mounting", "i", "option", "select_value", "select", "selected_option", "toggle_class", "element", "name", "toggle", "custom_event", "type", "detail", "bubbles", "cancelable", "get_custom_elements_slots", "element", "result", "node", "current_component", "set_current_component", "component", "get_current_component", "createEventDispatcher", "component", "get_current_component", "type", "detail", "cancelable", "callbacks", "event", "custom_event", "fn", "bubble", "component", "event", "callbacks", "fn", "dirty_components", "binding_callbacks", "render_callbacks", "flush_callbacks", "resolved_promise", "update_scheduled", "schedule_update", "flush", "add_render_callback", "fn", "render_callbacks", "add_flush_callback", "flush_callbacks", "seen_callbacks", "flushidx", "flush", "saved_component", "current_component", "dirty_components", "component", "set_current_component", "update", "binding_callbacks", "i", "callback", "update_scheduled", "$$", "run_all", "dirty", "flush_render_callbacks", "fns", "filtered", "targets", "c", "outroing", "outros", "group_outros", "check_outros", "run_all", "transition_in", "block", "local", "transition_out", "detach", "callback", "ensure_array_like", "array_like_or_iterator", "destroy_block", "block", "lookup", "outro_and_destroy_block", "transition_out", "update_keyed_each", "old_blocks", "dirty", "get_key", "dynamic", "ctx", "list", "lookup", "node", "destroy", "create_each_block", "next", "get_context", "o", "n", "i", "old_indexes", "new_blocks", "new_lookup", "deltas", "updates", "child_ctx", "key", "block", "will_move", "did_move", "insert", "transition_in", "new_block", "old_block", "new_key", "old_key", "run_all", "_boolean_attributes", "boolean_attributes", "bind", "component", "name", "callback", "index", "create_component", "block", "mount_component", "component", "target", "anchor", "fragment", "after_update", "add_render_callback", "new_on_destroy", "run", "is_function", "run_all", "destroy_component", "detaching", "$$", "flush_render_callbacks", "make_dirty", "i", "dirty_components", "schedule_update", "init", "options", "instance", "create_fragment", "not_equal", "props", "append_styles", "dirty", "parent_component", "current_component", "set_current_component", "noop", "blank_object", "ready", "ret", "rest", "value", "start_hydrating", "nodes", "children", "detach", "transition_in", "end_hydrating", "flush", "SvelteElement", "$$componentCtor", "$$slots", "use_shadow_dom", "type", "listener", "unsub", "idx", "create_slot", "name", "node", "element", "attr", "insert", "existing_slots", "get_custom_elements_slots", "attribute", "get_custom_element_value", "key", "reflect_attributes", "attribute_value", "_oldValue", "newValue", "attribute_name", "prop", "props_definition", "transform", "SvelteComponent", "destroy_component", "noop", "type", "callback", "is_function", "callbacks", "index", "props", "is_empty", "ctx", "insert", "target", "dialog_1", "anchor", "append", "div2", "div1", "div0", "button", "dialog", "$$value", "insert", "target", "textarea", "anchor", "ctx", "button", "ALERT_MODE_PROMPT", "create_if_block_1", "ALERT_MODE_ALERT", "create_if_block", "p", "div0", "div2", "append", "div1", "base_dialog", "$$value", "ALERT_MODE_ALERT", "ALERT_MODE_CONFIRM", "ALERT_MODE_PROMPT", "NullProvider", "_path", "_files", "show_alert", "title", "message", "alert", "AlertDialog_default", "DownloadProvider", "NullProvider", "options", "url", "progress_callback", "final_url", "data", "fetch_storyfile", "path", "url_to_path", "filename", "files", "story_url", "story_domain", "same_protocol", "same_domain", "response", "node", "data_base64", "parse_base64", "gunzipSync", "direct_access", "direct_domains", "domain", "message", "read_response", "text", "utf8decoder", "matched", "pairStrings", "lookupE", "lookupD", "pairString", "r", "encodeRepertoire", "pair", "first", "last", "codePoint", "numZBits", "chr", "z", "encode", "uint8Array", "length", "str", "i", "uint8", "j", "bit", "decode", "numUint8s", "numUint8Bits", "METADATA_KEY", "STORAGE_VERSION_KEY", "WebStorageProvider", "NullProvider", "prefix", "store", "dirs", "browseable", "migrate_localStorage", "path", "METADATA_KEY", "res", "decode", "dir", "old_path", "new_path", "new_file_path", "data", "old_transaction", "op", "now", "files", "was_already_in_transaction", "wrote_files", "next_files", "encode", "show_alert", "DIALOG_V1_TYPES_TO_EXTS", "version", "STORAGE_VERSION_KEY", "metadata", "key", "key_data", "ch", "dirent_key", "dirent", "dirent_data", "insert", "target", "span", "anchor", "ctx", "set_data", "t", "t_value", "append", "button", "create_if_block_1", "create_if_block", "i", "div", "cur_dir", "$$props", "insert", "target", "path", "anchor", "ctx", "create_if_block_2", "create_if_block_1", "div", "append", "button0", "button1", "set_data", "t1", "t1_value", "button", "create_if_block_3", "create_if_block", "div2", "div0", "svg", "div1", "ctx", "i", "insert", "target", "div", "anchor", "file_list", "$$value", "insert", "target", "div", "anchor", "append", "label", "textarea", "ctx", "create_if_block_3", "add_render_callback", "select", "option", "set_data", "t0", "t0_value", "t", "t_value", "create_if_block_1", "create_if_block_4", "create_if_block_2", "create_if_block", "div1", "div0", "button0", "button1", "div4", "div2", "div3", "button2", "button3", "input", "file_list", "$$value", "cur_filter", "select_value", "upload_files", "base_dialog", "ProviderBasedBrowserDialog", "options", "DownloadProvider", "WebStorageProvider", "i", "provider", "next", "DialogController", "url", "progress_callback", "file_path", "extension", "save", "show_alert", "path", "filename", "data", "main_file", "files", "parsed_path", "posix", "FileDialog_default", "action", "filter", "extension_to_filter", "file", "dir_path", "filesave_saveAs", "now", "new_file_name", "new_path", "refresh", "read_files", "read_uploaded_file", "create", "tag", "className", "DOM", "options", "id", "props", "get_size", "el", "metrics_differ", "newmetrics", "oldmetrics", "Metrics", "glkote", "resolve", "is_iOS", "throttle_default", "dom", "gameport", "layout_test_pane", "line", "create", "bufwin", "bufinnerwin", "bufline1", "bufline2", "bufspan", "graphwin", "graphcanvas", "gridwin", "gridline1", "gridline2", "gridspan", "font_family", "bufwinsize", "bufspansize", "bufline1size", "bufline2size", "graphicswinsize", "canvassize", "gridwinsize", "gridspansize", "gridline1size", "gridline2size", "height", "is_input_focused", "is_pinch_zoomed", "EMPTY", "ALAW_TBL", "ULAW_TBL", "i", "ax", "seg", "val", "ux", "readF80", "b", "o", "sign", "exp", "hi", "lo", "f", "str4", "r32", "r16", "parseAiff", "buf", "form", "isAIFC", "nCh", "nFrames", "bps", "sr", "comp", "ssndOff", "ssndSize", "pos", "end", "ckId", "ckSize", "ckData", "dataOff", "byteDepth", "frameBytes", "actualFrames", "channelData", "p", "cUpper", "decodePCM_BE", "decodePCM_LE", "decodeFloat32_BE", "decodeFloat64_BE", "decodeLaw", "decodeIMA4", "decodeGSM", "channels", "frames", "c", "v", "dv", "tbl", "IMA_STEP", "IMA_IDX", "nBlocks", "blockBytes", "totalSamples", "sample", "blk", "bp", "preamble", "predictor", "stepIdx", "out", "byte", "nibbleIdx", "nibble", "step", "diff", "GSM_QLB", "GSM_FAC", "sadd", "a", "s", "ssub", "multr", "asr", "x", "n", "totalFrames", "dp0", "LARpp", "j", "nrp", "msr", "LARc", "sub", "gsmBits", "wt", "sf", "erp", "gsmRpeDecode", "Nr", "brp", "k", "drpp", "LARpp_j", "LARpp_j_1", "gsmDecodeLAR", "sr_out", "LARp", "gsmLARpToRp", "gsmSynthFilter", "off", "bc", "r", "B2", "MIC", "INVA", "t", "rrp", "wtOff", "srOff", "sri", "xmaxc", "Mc", "xMc", "mant", "fac", "shift", "round", "xMp", "decode", "src", "dec", "decoder", "result", "hdr", "left", "freed", "data", "chunk", "cat", "scanAiffHdr", "fb", "complete", "decodeAiffRaw", "commFound", "dataStart", "raw", "t", "t2", "n", "e2", "r", "o", "s", "i", "c", "e", "n2", "e3", "f", "g", "h", "u", "d", "t3", "m", "WASMAudioDecoderCommon", "uint8Array2", "float32Array", "Ref", "module", "wasmString", "data3", "buffers", "length2", "ret", "offset", "errors", "channelData", "samplesDecoded", "sampleRate2", "bitDepth2", "input", "channelsDecoded", "j", "channel2", "source", "resolve", "puffString", "wasm", "exports", "instanceExports", "puff", "memory", "dataArray", "heapView", "heapPos", "sourceLength", "sourceLengthPtr", "sourcePtr", "destLengthPtr", "outputData", "output", "len", "TypedArray", "setPointer", "ptr", "characters", "heap", "character", "message", "frameLength2", "frameNumber2", "inputBytes", "outputSamples", "_EmscriptenWASM", "_module", "empty_worker_default", "getWorker", "WASMAudioDecoderWorker", "options", "name", "Decoder2", "EmscriptenWASM2", "type", "isNode", "webworkerSourceCode", "_Decoder", "_WASMAudioDecoderCommon", "decoder2", "moduleResolve", "modulePromise", "id", "command", "messagePromise", "messagePayload", "transferList", "data4", "rest", "assignNames", "Class", "symbol", "mappingJoin", "channelMappings", "front", "side", "rear", "left", "center", "right", "x", "y", "z", "lfe", "monophonic", "stereo", "surround", "getChannelMapping", "channelCount", "mappings", "vorbisOpusChannelMapping", "rate192000", "rate176400", "rate96000", "rate88200", "rate64000", "rate48000", "rate44100", "rate32000", "rate24000", "rate22050", "rate16000", "rate12000", "rate11025", "rate8000", "rate7350", "absoluteGranulePosition", "bandwidth", "bitDepth", "bitrate", "bitrateMaximum", "bitrateMinimum", "bitrateNominal", "buffer", "bufferFullness", "codec", "codecFrames", "coupledStreamCount", "crc", "crc16", "crc32", "data", "description", "duration", "emphasis", "hasOpusPadding", "header", "isContinuedPacket", "isCopyrighted", "isFirstPage", "isHome", "isLastPage", "isOriginal", "isPrivate", "isVbr", "layer", "length", "mode", "modeExtension", "mpeg", "mpegVersion", "numberAACFrames", "outputGain", "preSkip", "profile", "profileBits", "protection", "rawData", "segments", "subarray", "version", "vorbis", "vorbisComments", "vorbisSetup", "block", "blockingStrategy", "blockingStrategyBits", "blockSize", "blocksize0", "blocksize1", "blockSizeBits", "channel", "channelMappingFamily", "channelMappingTable", "channelMode", "channelModeBits", "channels", "copyright", "copyrightId", "copyrightIdStart", "frame", "frameCount", "frameLength", "Number2", "frameNumber", "framePadding", "frameSize", "Rate", "inputSampleRate", "page", "pageChecksum", "pageSegmentBytes", "pageSegmentTable", "pageSequenceNumber", "sample", "sampleNumber", "sampleRate", "sampleRateBits", "samples", "stream", "streamCount", "streamInfo", "streamSerialNumber", "streamStructureVersion", "total", "totalBytesOut", "totalDuration", "totalSamples", "readRawData", "incrementRawData", "mapCodecFrameStats", "mapFrameStats", "logWarning", "logError2", "syncFrame", "fixedLengthFrameSync", "getHeader", "setHeader", "getFrame", "parseFrame", "parseOggPage", "checkCodecUpdate", "reset", "enable", "getHeaderFromUint8Array", "checkFrameFooterCrc16", "uint8Array", "dataView", "reserved", "bad", "free", "none", "sixteenBitCRC", "getCrcTable", "crcTable", "crcInitialValueFunction", "crcFunction", "byte", "crc2", "bit", "crc8Table", "b", "flacCrc16Table", "crc32Table", "crc8", "dataLength", "flacCrc16", "crcChunkSize", "crc32Function", "concatBuffers", "buffer2", "acc", "buf", "bytesToString", "bytes", "reverseTable", "reverse", "val", "BitReader", "position", "bits", "readInt64le", "view", "sign", "firstPart", "secondPart", "HeaderCache", "onCodecHeader", "onCodecUpdate", "bitrate2", "totalDuration2", "codecData", "key", "header3", "codecUpdateFields", "headerStore", "frameStore", "Parser", "codecParser", "headerCache", "frameData", "ignoreNextFrame", "Frame", "headerValue", "dataValue", "CodecFrame", "Header", "Frame2", "readOffset", "frameLengthValue", "samplesValue", "frame2", "unsynchronizationFlag", "extendedHeaderFlag", "experimentalFlag", "footerPresent", "ID3v2", "_ID3v2", "CodecHeader", "bitrateMatrix", "calcBitrate", "idx", "interval", "intervalOffset", "v1Layer1", "v1Layer2", "v1Layer3", "v2Layer1", "v2Layer23", "bands", "to31", "layer12ModeExtensions", "bitrateIndex", "v2", "v1", "intensityStereo", "msStereo", "on", "off", "layer3ModeExtensions", "layersValues", "mpegVersionDescription", "isoIec", "mpegVersions", "protectionValues", "emphasisValues", "channelModes", "MPEGHeader", "_MPEGHeader", "id3v2Header", "cachedHeader", "mpegVersionValues2", "layerBits", "layerValues2", "channelModeBits2", "samples2", "MPEGFrame", "_MPEGFrame", "MPEGParser", "onCodec", "mpegVersionValues", "layerValues", "protectionValues2", "profileValues", "sampleRates", "channelModeValues", "AACHeader", "_AACHeader", "protectionBit", "privateBit", "profileBits2", "sampleRateBits2", "numberAACFrames2", "bufferFullnessBits", "audioSpecificConfig", "AACFrame", "_AACFrame", "AACParser", "FLACFrame", "_FLACFrame", "expectedCrc16", "actualCrc16", "streamInfoValue", "getFromStreamInfo", "blockingStrategyValues", "blockSizeValues", "sampleRateValues", "channelAssignments", "bitDepthValues", "FLACHeader", "_FLACHeader", "zeroMask", "value", "shift", "codecParserStub", "channelAssignment", "decodedUtf8", "blockingStrategyBits2", "sampleNumber2", "blockSizeBits2", "MIN_FLAC_FRAME_SIZE", "MAX_FLAC_FRAME_SIZE", "FLACParser", "secondByte", "nextHeaderOffset", "oggPage", "segment", "OggPageHeader", "_OggPageHeader", "pageSegmentTableLength", "segmentLength", "segmentByte", "OggPage", "_OggPage", "headerLength", "totalLength", "rawDataValue", "OpusFrame", "channelMappingFamilies", "silkOnly", "celtOnly", "hybrid", "narrowBand", "mediumBand", "wideBand", "superWideBand", "fullBand", "configTable", "OpusHeader", "_OpusHeader", "packetData", "packetMode", "packetLength", "packetConfig", "headerData", "channelMappingFamily2", "OpusParser", "VorbisFrame", "blockSizes", "VorbisHeader", "_VorbisHeader", "vorbisCommentsData", "vorbisSetupData", "version2", "vorbisSetup3", "vorbisComments3", "VorbisParser", "oggPageSegment", "currentBlockSize", "setup", "bitReader", "mode2", "modeBits", "currentByte", "OggStream", "codec2", "Parser2", "idString", "oggPageStore", "OggParser", "oggStream", "noOp", "CodecParser", "mimeType2", "enableLogging", "enableFrameCRC32", "chunk", "fileData", "minSize", "rawData2", "increment", "absoluteGranulePositionSamples", "codecFrame", "untrimmedCodecSamples", "logger", "messages", "stats", "width", "codec_parser_default", "codecFrames2", "data2", "header2", "isLastPage2", "vorbisSetup2", "totalSamples2", "EmscriptenWASM", "WASMAudioDecoderCommon2", "Module", "ready", "abort", "what", "HEAP8", "HEAP16", "HEAP32", "HEAPU8", "HEAPU16", "HEAPU32", "HEAPF32", "HEAPF64", "HEAP64", "HEAPU64", "wasmMemory", "updateMemoryViews", "base64Decode", "b64", "b1", "b2", "i2", "bLength", "base64ReverseLookup", "__abort_js", "__emscripten_runtime_keepalive_clear", "timers", "callUserCallback", "func", "_emscripten_get_now", "__setitimer_js", "which", "timeout_ms", "__emscripten_timeout", "_emscripten_math_atan", "_emscripten_math_cos", "_emscripten_math_exp", "_emscripten_math_log", "_emscripten_math_pow", "_emscripten_math_sin", "_emscripten_resize_heap", "requestedSize", "oldSize", "_proc_exit", "code", "wasmImports", "assignWasmExports", "wasmExports", "_create_decoder", "_malloc", "_send_setup", "_init_dsp", "_decode_packets", "_destroy_decoder", "_free", "initRuntime", "imports", "instance", "Decoder", "common", "maxErrors", "packets", "outputBuffers", "packetIdx", "packet", "channels2", "outputBufferChannels", "errorDescription", "functionName", "setDecoderClass", "OggVorbisDecoder", "decoderClass", "oldDecoder", "oggPages", "oggPage2", "decoded", "samplesToTrim", "vorbisData", "DecoderWorker", "OggVorbisDecoderWebWorker", "EMPTY", "decode", "src", "dec", "decoder", "a", "merge", "ch", "bc", "priming_mp3", "SoundChannelManager", "glkote", "schannels", "wanted_schannels", "schannel", "id", "ops", "SoundChannel", "context", "source", "data", "parse_base64", "op", "chunk", "elem", "AudioElementPlayer", "buffer", "createBuffer", "i", "channel", "decoded", "decode", "AudioBufferPlayer", "ev", "gain", "paused", "send_event", "currentTime", "current_value", "notify", "vol", "steps", "vol_step", "_toConsumableArray", "arr", "i", "arr2", "hasPassiveEvents", "passiveTestOptions", "isIosDevice", "locks", "documentListenerAdded", "initialClientY", "previousBodyOverflowSetting", "previousBodyPosition", "previousBodyPaddingRight", "allowTouchMove", "el", "lock", "preventDefault", "rawEvent", "e", "setOverflowHidden", "options", "_reserveScrollBarGap", "scrollBarGap", "computedBodyPaddingRight", "restoreOverflowSetting", "setPositionFixed", "_window", "scrollY", "scrollX", "innerHeight", "bottomBarHeight", "restorePositionSetting", "y", "x", "isTargetElementTotallyScrolled", "targetElement", "handleScroll", "event", "clientY", "disableBodyScroll", "enableBodyScroll", "targetElement", "locks", "lock", "isIosDevice", "documentListenerAdded", "preventDefault", "hasPassiveEvents", "restorePositionSetting", "restoreOverflowSetting", "MAX_HISTORY_LENGTH", "TextInput", "win", "ev", "is_iOS", "is_input_focused", "is_pinch_zoomed", "char", "keycode", "KEY_CODE_DOWN", "KEY_CODE_UP", "history", "changed", "terminator", "KEY_CODES_TO_NAMES", "code", "KEY_CODE_RETURN", "OFFSCREEN_OFFSET", "inputparent", "debounce_default", "full_screen", "val", "update", "metrics", "css_styles", "reverse", "apply_text_run_styles", "no_text_selected", "WindowBase", "options", "window_types", "ev", "TextInput", "remove_frame", "apply_text_run_styles", "orig_styles", "reverse", "el", "styles", "bg", "fg", "split_after_spaces", "text", "res", "whitespace", "prev_whitespace", "c", "is_whitespace", "TextualWindow", "onlink", "target", "windowid", "selector", "original_styles", "full_selector", "css_styles", "reverse_styles", "normal_styles", "rule", "properties", "property", "name", "value", "run", "split_words", "run_style", "monospace_val", "monospace_class", "create", "els", "linkval", "styles_need_refreshing", "inline_alignment_classes", "BufferWindow", "is_iOS", "disableBodyScroll", "enableBodyScroll", "_", "rect", "frameel", "after_metrics_change", "data", "line_index", "line", "content", "divel", "line_has_style", "NBSP", "run_index", "instruction", "image_elem_props", "is_pinch_zoomed", "GraphicsWindow", "debounce_default", "key", "url", "image", "height", "width", "dPR", "buffercontext", "i", "frame", "loading_images", "op", "GridWindow", "lineel", "window_classes", "Windows", "glkote", "testRO", "entries", "win", "windows", "newinputs", "window", "entry", "box", "new_scrollTop", "update", "id", "type", "windowstoclose", "oldgen", "TranscriptRecorder", "state", "options", "windows", "ev", "event", "eventtype", "input", "output", "update", "win", "textdata", "data", "content", "run_index", "instruction", "response", "err", "WebGlkOte", "GlkOteBase", "DOM", "Metrics", "Windows", "options", "windowport", "viewport_meta_tag_content", "is_iOS", "query_feedback", "cookie_name", "TranscriptRecorder", "SoundChannelManager", "err", "data", "win", "winid", "colour", "windows", "capabilities", "disable", "errorpane", "link", "error", "msg", "errorcontent", "name", "loadingpane", "graphics_bg", "ev", "val", "content", "schannels", "file_sizes_default", "generic_emglken_vm", "story", "options", "requires", "engine", "wasmBinary", "vm_options", "formats", "find_format", "format", "path", "formatspec", "identify_blorb_storyfile_format", "blorb", "blorb_chunks", "chunktype", "get_default_options", "ProviderBasedBrowserDialog", "WebGlkOte", "get_query_options", "possible_query_options", "query", "options", "option", "value", "noop", "run", "fn", "blank_object", "run_all", "fns", "is_function", "thing", "safe_not_equal", "a", "b", "src_url_equal_anchor", "src_url_equal", "element_src", "url", "is_empty", "obj", "globals", "ResizeObserverSingleton", "_ResizeObserverSingleton", "globals", "options", "element", "listener", "entries", "entry", "is_hydrating", "start_hydrating", "end_hydrating", "append", "target", "node", "insert", "target", "node", "anchor", "detach", "node", "element", "name", "text", "data", "space", "empty", "listen", "node", "event", "handler", "options", "attr", "node", "attribute", "value", "children", "element", "set_data", "text", "data", "get_custom_elements_slots", "element", "result", "node", "current_component", "set_current_component", "component", "dirty_components", "binding_callbacks", "render_callbacks", "flush_callbacks", "resolved_promise", "update_scheduled", "schedule_update", "flush", "add_render_callback", "fn", "render_callbacks", "seen_callbacks", "flushidx", "flush", "saved_component", "current_component", "dirty_components", "component", "set_current_component", "update", "binding_callbacks", "i", "render_callbacks", "callback", "flush_callbacks", "update_scheduled", "$$", "run_all", "dirty", "add_render_callback", "flush_render_callbacks", "fns", "filtered", "targets", "c", "outroing", "transition_in", "block", "local", "outroing", "_boolean_attributes", "boolean_attributes", "mount_component", "component", "target", "anchor", "fragment", "after_update", "add_render_callback", "new_on_destroy", "run", "is_function", "run_all", "destroy_component", "detaching", "$$", "flush_render_callbacks", "make_dirty", "i", "dirty_components", "schedule_update", "init", "options", "instance", "create_fragment", "not_equal", "props", "append_styles", "dirty", "parent_component", "current_component", "set_current_component", "noop", "blank_object", "ready", "ret", "rest", "value", "start_hydrating", "nodes", "children", "detach", "transition_in", "end_hydrating", "flush", "SvelteElement", "$$componentCtor", "$$slots", "use_shadow_dom", "type", "listener", "unsub", "idx", "create_slot", "name", "node", "element", "attr", "insert", "existing_slots", "get_custom_elements_slots", "attribute", "get_custom_element_value", "key", "reflect_attributes", "attribute_value", "_oldValue", "newValue", "attribute_name", "prop", "props_definition", "transform", "SvelteComponent", "destroy_component", "noop", "type", "callback", "is_function", "callbacks", "index", "props", "is_empty", "BYTE_UNITS", "BIBYTE_UNITS", "BIT_UNITS", "BIBIT_UNITS", "toLocaleString", "number", "locale", "options", "result", "log10", "numberOrBigInt", "string", "log", "divide", "divisor", "integerPart", "remainder", "applyFixedWidth", "fixedWidth", "buildLocaleOptions", "minimumFractionDigits", "maximumFractionDigits", "prettyBytes", "UNITS", "separator", "isZero", "isNegative", "prefix", "localeOptions", "exponent", "minPrecision", "numberString", "insert", "target", "p", "anchor", "append", "button", "ctx", "create_if_block_1", "prettyBytes", "p0", "progress_1", "p1", "create_if_block", "attr", "img", "img_src_value", "div1", "div0", "h1", "cover_image_url", "$$props", "play", "playing", "title", "progress", "set_storyfile_size", "totalsize", "totalsize_gz", "add_file", "filesize", "is_storyfile", "update_progress", "chunk_length", "on_play", "is_in_iframe", "ParchmentLauncher", "parchment_options", "query_options", "get_default_options", "get_query_options", "theme", "api", "storyfile", "event", "file", "err", "story", "cover_image_url", "gameport", "LoadingPane_default", "is_iOS", "progress_callback", "format", "find_format", "options", "data", "Blorb", "identify_blorb_storyfile_format", "engine", "requires", "path", "file_sizes_default", "fetch_resource", "view", "FileView", "read_uploaded_file", "url", "new_url", "parchment"]
+}
diff --git a/IFComp/root/static/interpreter/zvm.js b/IFComp/root/static/interpreter/zvm.js
deleted file mode 100644
index eb323e5c..00000000
--- a/IFComp/root/static/interpreter/zvm.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var zt=Object.create;var J=Object.defineProperty;var Vt=Object.getOwnPropertyDescriptor;var It=Object.getOwnPropertyNames;var Rt=Object.getPrototypeOf,Lt=Object.prototype.hasOwnProperty;var w=(t,i)=>()=>(i||t((i={exports:{}}).exports,i),i.exports);var Pt=(t,i,e,s)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of It(i))!Lt.call(t,r)&&r!==e&&J(t,r,{get:()=>i[r],enumerable:!(s=Vt(i,r))||s.enumerable});return t};var H=(t,i,e)=>(e=t!=null?zt(Rt(t)):{},Pt(i||!t||!t.__esModule?J(e,"default",{value:t,enumerable:!0}):e,t));var b=w((_i,X)=>{"use strict";function O(){for(var t=arguments[0],i=1,e,s;i"u"&&(e=t.byteLength-i),i+=t.byteOffset,t=t.buffer),O(new DataView(t,i,e),{getUint8Array:function(s,r){return s+=this.byteOffset,new Uint8Array(this.buffer.slice(s,s+r))},getUint16Array:function(s,r){return s+=this.byteOffset,W(new Uint8Array(this.buffer,s,r*2))},setUint8Array:function(s,r){r instanceof ArrayBuffer&&(r=new Uint8Array(r)),new Uint8Array(this.buffer,this.byteOffset,this.byteLength).set(r,s)},getFourCC:function(s){return String.fromCharCode(this.getUint8(s),this.getUint8(s+1),this.getUint8(s+2),this.getUint8(s+3))},setFourCC:function(s,r){this.setUint8(s,r.charCodeAt(0)),this.setUint8(s+1,r.charCodeAt(1)),this.setUint8(s+2,r.charCodeAt(2)),this.setUint8(s+3,r.charCodeAt(3))}})}function Nt(t){return t<<16>>16}function Tt(t){return t&65535}function W(t){for(var i=0,e=t.length,s=new Uint16Array(e/2);i{"use strict";var Y=b(),k=Y.MemoryView,z=Y.Class.subClass({init:function(t){if(this.type="",this.chunks=[],t){var i=k(t),e=12,s,r;if(i.getFourCC(0)!=="FORM")throw new Error("Not an IFF file");for(this.type=i.getFourCC(8),s=i.getUint32(4)+8;es)throw new Error("IFF chunk out of range");this.chunks.push({type:i.getFourCC(e),offset:e,data:i.getUint8Array(e+8,r)}),e+=8+r,r%2&&e++}}},write:function(){for(var t=12,i=0,e=12,s,r;i0&&r<9&&(s="ZCOD")),s&&r)return{format:s,version:r,data:t}}tt.exports={IFF:z,Blorb:$,Quetzal:Qt,identify:Jt}});var L=w((gi,ft)=>{"use strict";var it=b(),S=it.Class,Ht=it.U2S16,et=S.subClass({init:function(t,i){this.e=t,this.v=i},toString:function(){return this.v},U2S:function(){return Ht(this.v)}}),Kt=et.subClass({toString:function(){var t=this.v;return this.indirect?"e.indirect("+t+")":t===0?"s[--e.sp]":--t<15?"l["+t+"]":"e.m.getUint16("+(this.e.globals+(t-15)*2)+")"},store:function(t){var i=this.v;return this.indirect?"e.indirect("+i+","+t+")":this.returnval?"e.variable("+i+","+t+")":i===0?"t="+t+";s[e.sp++]=t":--i<15?"l["+i+"]="+t:"e.ram.setUint16("+(this.e.globals+(i-15)*2)+","+t+")"},U2S:function(){return"e.U2S("+this+")"}}),A=S.subClass({init:function(t,i,e,s,r,n){this.e=t,this.context=i,this.code=e,this.pc=s,this.labels=[this.pc+"/"+this.code],this.next=r,this.operands=n,this.post&&this.post()},toString:function(){return this.label()+(this.func?this.func.apply(this,this.operands):"")},args:function(t){return this.operands.join(t)},label:function(){return"/* "+this.labels.join()+" */ "}}),I=A.subClass({stopper:1}),st=I.subClass({post:function(){this.origfunc=this.func,this.func=this.newfunc},newfunc:function(){return"e.stop=1;e.pc="+this.next+";"+this.origfunc.apply(this,arguments)}}),Wt=st.subClass({storer:1,post:function(){this.storer=this.operands.pop(),this.origfunc=this.func,this.func=this.newfunc}}),rt=S.subClass({init:function(t,i){this.ops=t||[],this.code=i||"||"},toString:function(){for(var t=0,i=[],e;t1&&(t=`
-`+t+`
-`,this.e.options.debug&&(t+=this.context.spacer))),this.label()+this.keyword+this.cond+" {"+t+"}"}}),ht=nt.subClass({storer:1,post:function(){ht.super.post.call(this),this.storer=this.operands.pop(),this.storer.returnval=1,this.origfunc=this.func,this.func=this.newfunc},newfunc:function(){return this.storer.store(this.origfunc.apply(this,arguments))}}),ot=A.subClass({storer:1,post:function(){this.storer=this.operands.pop()},toString:function(){var t=ot.super.toString.call(this);return this.storer?this.storer.store(t):t}}),at=I.subClass({result:{v:-1},toString:function(){return this.label()+"e.call("+this.operands.shift()+","+this.result.v+","+this.next+",["+this.args()+"])"}}),Xt=at.subClass({storer:1,post:function(){this.result=this.operands.pop()}}),R=S.subClass({init:function(t,i){this.e=t,this.pc=i,this.pre=[],this.ops=[],this.post=[],this.targets=[],t.options.debug&&(this.spacer="")},toString:function(){return this.e.options.debug?(this.context&&(this.spacer=this.context.spacer+" "),this.pre.join("")+(this.ops.length>1?this.spacer:"")+this.ops.join(`;
-`+this.spacer)+this.post.join("")):this.pre.join("")+this.ops.join(";")+this.post.join("")}}),ut=R.subClass({toString:function(){return this.pre.unshift(`var l=e.l,s=e.s,t=0;
-`),ut.super.toString.call(this)}});function Yt(t,i,e){return e=e||{},i&&(e.func=i),t.subClass(e)}ft.exports={Operand:et,Variable:Kt,Opcode:A,Stopper:I,Pauser:st,PauserStorer:Wt,BrancherLogic:rt,Brancher:nt,BrancherStorer:ht,Storer:ot,Caller:at,CallerStorer:Xt,Context:R,RoutineContext:ut,opcode_builder:Yt}});var xt=w((wt,Ut)=>{"use strict";var d=L(),j=d.Variable,l=d.Opcode,g=d.Stopper,P=d.Pauser,D=d.PauserStorer,m=d.Brancher,Z=d.BrancherStorer,_=d.Storer,G=d.Caller,E=d.CallerStorer,a=d.opcode_builder,dt=function(t){return""+t},T=new j(wt.e,0),lt=a(m,function(){return 1}),ct=a(_,function(t){return"e.S2U(~"+t+")"}),N=_.subClass({storer:0,post:function(){var t=this.operands,i=t[0],e=i instanceof j;t[0]=new j(this.e,e?i:i.v),(e||i.v===0)&&(t[0].indirect=1),this.storer=this.code===142?t.pop():t.shift(),t.length===0&&t.push(T)},func:dt}),_t=l.subClass({func:function(t){var i=t.v-1,e=this.code%2?1:-1;return t instanceof j||i>14?"e.incdec("+t+","+e+")":(i<0?"e.s[e.sp-1]":"e.l["+i+"]")+(e===1?"++":"--")}}),pt=g.subClass({brancher:1,toString:function(){return"e.stop=1;e."+(this.code===181?"save":"restore")+"("+(this.pc+1)+")"}}),gt=a(D,function(){return"e.restore("+(this.next-1)+")"}),mt=a(D,function(){return"e.save("+(this.next-1)+")"});Ut.exports=function(t){return{1:a(m,function(){return arguments.length===2?this.args("==="):"e.jeq("+this.args()+")"}),2:a(m,function(i,e){return i.U2S()+"<"+e.U2S()}),3:a(m,function(i,e){return i.U2S()+">"+e.U2S()}),4:a(m,function(i,e){return"e.U2S(e.incdec("+i+",-1))<"+e.U2S()}),5:a(m,function(i,e){return"e.U2S(e.incdec("+i+",1))>"+e.U2S()}),6:a(m,function(){return"e.jin("+this.args()+")"}),7:a(m,function(){return"e.test("+this.args()+")"}),8:a(_,function(){return this.args("|")}),9:a(_,function(){return this.args("&")}),10:a(m,function(){return"e.test_attr("+this.args()+")"}),11:a(l,function(){return"e.set_attr("+this.args()+")"}),12:a(l,function(){return"e.clear_attr("+this.args()+")"}),13:N,14:a(l,function(){return"e.insert_obj("+this.args()+")"}),15:a(_,function(i,e){return"e.m.getUint16(e.S2U("+i+"+2*"+e.U2S()+"))"}),16:a(_,function(i,e){return"e.m.getUint8(e.S2U("+i+"+"+e.U2S()+"))"}),17:a(_,function(){return"e.get_prop("+this.args()+")"}),18:a(_,function(){return"e.find_prop("+this.args()+")"}),19:a(_,function(){return"e.find_prop("+this.args(",0,")+")"}),20:a(_,function(){return"e.S2U("+this.args("+")+")"}),21:a(_,function(){return"e.S2U("+this.args("-")+")"}),22:a(_,function(){return"e.S2U("+this.args("*")+")"}),23:a(_,function(i,e){return"e.S2U(parseInt("+i.U2S()+"/"+e.U2S()+"))"}),24:a(_,function(i,e){return"e.S2U("+i.U2S()+"%"+e.U2S()+")"}),25:E,26:G,27:a(l,function(){return"e.set_colour("+this.args()+")"}),28:a(g,function(i,e){return"while(e.frames.length+1>"+e+"){e.frameptr=e.frames.pop()}return "+i}),128:a(m,function(i){return i+"===0"}),129:a(Z,function(i){return"e.get_sibling("+i+")"}),130:a(Z,function(i){return"e.get_child("+i+")"}),131:a(_,function(i){return"e.get_parent("+i+")"}),132:a(_,function(i){return"e.get_prop_len("+i+")"}),133:_t,134:_t,135:a(l,function(i){return"e.print(2,"+i+")"}),136:E,137:a(l,function(i){return"e.remove_obj("+i+")"}),138:a(l,function(i){return"e.print(3,"+i+")"}),139:a(g,function(i){return"return "+i}),140:a(g,function(i){return"e.pc="+i.U2S()+"+"+(this.next-2)}),141:a(l,function(i){return"e.print(2,"+i+"*"+this.e.addr_multipler+")"}),142:N.subClass({storer:1}),143:t<5?ct:G,176:a(g,function(){return"return 1"}),177:a(g,function(){return"return 0"}),178:a(l,function(i){return"e.print(2,"+i+")"},{printer:1}),179:a(g,function(i){return"e.print(2,"+i+");e.print(1,13);return 1"},{printer:1}),180:l,181:t<4?pt:mt,182:t<4?pt:gt,183:a(g,function(){return"e.restart()"}),184:a(g,function(i){return"return "+i},{post:function(){this.operands.push(T)}}),185:t<5?a(l,function(){return"s[--e.sp]"}):a(_,function(){return"e.frames.length+1"}),186:a(P,function(){return"e.quit=1;e.Glk.glk_exit()"}),187:a(l,function(){return"e.print(1,13)"}),188:t<4?a(g,function(){return"e.pc="+this.next+";e.v3_status()"}):l,189:lt,191:lt,224:E,225:a(l,function(i,e,s){return"e.ram.setUint16(e.S2U("+i+"+2*"+e.U2S()+"),"+s+")"}),226:a(l,function(i,e,s){return"e.ram.setUint8(e.S2U("+i+"+"+e.U2S()+"),"+s+")"}),227:a(l,function(){return"e.put_prop("+this.args()+")"}),228:t<5?a(P,function(){return"e.read(0,"+this.args()+")"}):a(D,function(){return"e.read("+this.storer.v+","+this.args()+")"}),229:a(l,function(i){return"e.print(4,"+i+")"}),230:a(l,function(i){return"e.print(0,"+i.U2S()+")"}),231:a(_,function(i){return"e.random("+i.U2S()+")"}),232:a(_,dt,{post:function(){this.storer=T},storer:0}),233:N,234:a(l,function(i){return"e.split_window("+i+")"}),235:a(l,function(i){return"e.set_window("+i+")"}),236:E,237:a(l,function(i){return"e.erase_window("+i.U2S()+")"}),238:a(l,function(i){return"e.erase_line("+i+")"}),239:a(l,function(i,e){return"e.set_cursor("+i+"-1,"+e+"-1)"}),240:a(l,function(i){return"e.get_cursor("+i+")"}),241:a(l,function(i){return"e.set_style("+i+")"}),242:l,243:a(g,function(){return"e.pc="+this.next+";e.output_stream("+this.args()+")"}),244:a(P,function(){return"e.input_stream("+this.args()+")"}),245:l,246:a(D,function(){return"e.read_char("+this.storer.v+","+(this.args()||"1")+")"}),247:a(Z,function(){return"e.scan_table("+this.args()+")"}),248:ct,249:G,250:G,251:a(l,function(){return"e.tokenise("+this.args()+")"}),252:a(l,function(){return"e.encode_text("+this.args()+")"}),253:a(l,function(){return"e.copy_table("+this.args()+")"}),254:a(l,function(){return"e.print_table("+this.args()+")"}),255:a(m,function(i){return"e.stack.getUint8(e.frameptr+5)&(1<<("+i+"-1))"}),1e3:mt,1001:gt,1002:a(_,function(i,e){return"e.S2U(e.log_shift("+i+","+e.U2S()+"))"}),1003:a(_,function(i,e){return"e.S2U(e.art_shift("+i.U2S()+","+e.U2S()+"))"}),1004:a(_,function(i){return"e.set_font("+i+")"}),1009:a(_,function(){return"e.save_undo("+this.next+","+this.storer.v+")"}),1010:a(l,function(){return"if(e.restore_undo())return"},{storer:1}),1011:a(l,function(i){return"e.print(1,"+i+")"}),1012:a(_,function(){return 3}),1013:a(l,function(){return"e.set_true_colour("+this.args()+")"}),1014:l.subClass({brancher:1}),1030:a(_,function(){return"e.gestalt("+this.args()+")"})}}});var Ct=w((mi,yt)=>{"use strict";var kt=V(),y=b(),$t=y.extend,vt=y.U2S16,ti=y.S2U16;function Q(t){let i=s=>typeof s=="object"?Q(s):s,e={};if(Array.isArray(t))return t.map(i);for(let s in t)s!=="buffer"&&s!=="str"&&(e[s]=i(t[s]));return e}var bt=function(){var t=new Uint8Array(2),i=new Uint16Array(t.buffer);return i[0]=1,t[0]===1}();function B(t,i,e,s){if(bt&&!s)for(;i0?t<>-i},call:function(t,i,e,s){if(t===0)return i>=0&&this.variable(i,0),this.pc=e;this.pc=t*this.addr_multipler;var r=this.m.getUint8(this.pc++),n=this.stack,h=0,o=this.frameptr;for(n.setUint16(o+6,this.sp),this.frames.push(o),o=this.frameptr=this.s.byteOffset+this.sp*2,n.setUint32(o,e<<8),n.setUint8(o+3,(i>=0?0:16)|r),n.setUint8(o+4,i>=0?i:0),n.setUint8(o+5,(1<>i%8))},copy_table:function(t,i,e){e=vt(e);var s=this.ram,r=0,n=e<0;if(e=Math.abs(e),i===0){for(;r=0){let e=this.save_file(this.pc,1);i={glk:this.Glk.save_allstate(),io:Q(this.io),ram:this.options.Dialog.streaming?e:Array.from(new Uint8Array(e)),read_data:Q(this.read_data),xorshift_seed:this.xorshift_seed}}this.options.Dialog.autosave_write(this.signature,i)},encode_text:function(t,i,e,s){this.ram.setUint8Array(s,this.encode(this.m.getUint8Array(t+e,i)))},extension_table:function(t,i){var e=this.extension;if(!e||t>this.extension_count)return 0;if(e+=2*t,i===void 0)return this.m.getUint16(e);this.ram.setUint16(e,i)},find_prop:function(t,i,e){var s=this.m,r=this.version3,n,h,o=0,u=s.getUint16(this.objects+(r?9:14)*t+(r?7:12));for(u+=s.getUint8(u)*2+1;;){if(n=s.getUint8(u),h=n&(r?31:63),o===e)return h;if(h===i)return u+(!r&&n&128?2:1);if(h>5)+2:n&128?(h=s.getUint8(u+1)&63,u+=h?h+2:66):u+=n&64?3:2}},gestalt:function(t){switch(t){case 1:return 258}return 0},get_child:function(t){return this.version3?this.m.getUint8(this.objects+9*t+6):this.m.getUint16(this.objects+14*t+10)},get_sibling:function(t){return this.version3?this.m.getUint8(this.objects+9*t+5):this.m.getUint16(this.objects+14*t+8)},get_parent:function(t){return this.version3?this.m.getUint8(this.objects+9*t+4):this.m.getUint16(this.objects+14*t+6)},get_prop:function(t,i){var e=this.m,s=this.find_prop(t,i),r;return s?(r=e.getUint8(s-1),e[(this.version3?r>>5:r&64)?"getUint16":"getUint8"](s)):e.getUint16(this.properties+2*(i-1))},get_prop_len:function(t){if(t===0)return 0;var i=this.m.getUint8(t-1);return this.version3?(i>>5)+1:i&128?(i&=63,i===0?64:i):i&64?2:1},incdec:function(t,i){if(t===0)return this.s[this.sp-1]+=i,this.s[this.sp-1];if(--t<15)return this.l[t]+=i,this.l[t];var e=this.globals+(t-15)*2;return this.ram.setUint16(e,this.m.getUint16(e)+i),this.ram.getUint16(e)},indirect:function(t,i){return t===0?arguments.length>1?this.s[this.sp-1]=i:this.s[this.sp-1]:this.variable(t,i)},insert_obj:function(t,i){this.remove_obj(t),this.set_family(t,i,i,t,t,this.get_child(i))},jeq:function(){for(var t=1;t0?t<>>-i},make_stacks:function(){var t=this.stack.getUint8(this.frameptr+3)&15;this.l=new Uint16Array(this.stack.buffer,this.frameptr+8,t),this.s=new Uint16Array(this.stack.buffer,this.frameptr+8+t*2)},put_prop:function(t,i,e){var s=this.find_prop(t,i),r;s&&(r=this.m.getUint8(s-1),this.ram[(this.version3?r>>5:r&64)?"setUint16":"setUint8"](s,e))},random:function(t){var i=this.xorshift_seed;return t<1?(this.xorshift_seed=t,0):i===0?1+Math.random()*t|0:(i^=i<<13,i^=i>>17,this.xorshift_seed=i^=i<<5,1+(i&32767)%t)},remove_obj:function(t){var i=this.get_parent(t),e,s,r;if(i!==0)if(e=this.get_child(i),s=this.get_sibling(t),e===t)this.set_family(t,0,i,s);else{for(;r=this.get_sibling(e),r!==t;)e=r;this.set_family(t,0,0,0,e,s)}},restart:function(t){var i=this.ram,e=i.getUint8(0),s=e===3,r=s?2:e===8?8:4,n=i.getUint8(17),h=i.getUint16(10),o=e>4?i.getUint16(54):0,u=y.MemoryView(this.options.stack_len);i.setUint8Array(0,this.origram),i.setUint8(17,n),$t(this,{stack:u,frameptr:0,frames:[],s:new Uint16Array(u.buffer,8),sp:0,l:[],undo:[],undo_len:0,glk_blocking_call:null,version:e,version3:s,pc:i.getUint16(6),properties:h,objects:h+(s?53:112),globals:i.getUint16(12),eof:(i.getUint16(26)||65536)*r,extension:o,extension_count:o?i.getUint16(o):0,addr_multipler:r,opcodes:xt()(e)}),this.init_text(),t||this.init_io(),this.update_header()},restore:function(t){this.pc=t,this.fileref_create_by_prompt({func:"restore",mode:2,usage:1})},restore_file:function(t,i){var e=this.ram,s=new kt.Quetzal(t),r=s.memory,n=this.stack,h=e.getUint8(17),o,u=0,f=0;if(e.getUint16(2)!==s.release||e.getUint16(28)!==s.checksum)return 0;for(;u<6;)if(e.getUint8(18+u)!==s.serial[u++])return 0;if(u=0,e.setUint8Array(0,this.origram),s.compressed)for(;u>8,e=this.frameptr=this.frames.pop(),this.make_stacks(),this.sp=i.getUint16(e+6),s>=0&&this.variable(s,t||0)},save:function(t){this.pc=t,this.fileref_create_by_prompt({func:"save",mode:1,usage:1})},save_file:function(t,i){var e=this.m,s=new kt.Quetzal,r=y.MemoryView(this.stack.buffer.slice()),n=0,h,o,u=this.frameptr,f;if(s.release=e.getUint16(2),s.serial=e.getUint8Array(18,6),s.checksum=e.getUint16(28),s.pc=t,i)s.memory=this.m.getUint8Array(0,this.staticmem);else{let c=[];for(s.compressed=1,h=0;h>18,!s==!h&&(o===0||o===1?this.ret(o):this.pc+=o-2)):this.variable(i.getUint8(this.pc++),s)},save_undo:function(t,i){var e;return this.undo_len>this.options.undo_len&&(e=this.undo.shift(),this.undo_len-=e.ram.byteLength+e.stack.byteLength),e={frameptr:this.frameptr,frames:this.frames.slice(),pc:t,ram:this.m.getUint8Array(0,this.staticmem),sp:this.sp,stack:this.stack.getUint8Array(0,this.s.byteOffset+this.sp*2),var:i},this.undo_len+=e.ram.byteLength+e.stack.byteLength,this.undo.push(e),1},scan_table:function(t,i,e,s){s=s||130;var r=s&128?"getUint16":"getUint8";for(s&=127,e=i+e*s;i>i%8)},set_family:function(t,i,e,s,r,n){var h=this.ram,o=this.objects;this.version3?(h.setUint8(o+9*t+4,i),e&&h.setUint8(o+9*e+6,s),r&&h.setUint8(o+9*r+5,n)):(h.setUint16(o+14*t+6,i),e&&h.setUint16(o+14*e+10,s),r&&h.setUint16(o+14*r+8,n))},test:function(t,i){return(t&i)===i},test_attr:function(t,i){return this.m.getUint8(this.objects+(this.version3?9:14)*t+i/8|0)<{"use strict";Ft.exports={init_text:function(){var t=this,i=this.m,e=this.version>4&&i.getUint16(52),s=this.extension_table(3),r=s&&i.getUint8(s++);this.abbr_addr=i.getUint16(24);function n(o){for(var u=[[],[],[]],f=0;f<78;)u[f/26|0][f%26]=o[f++];u[2][1]=13,t.alphabets=u}function h(o){for(var u={13:"\r"},f={13:13},c=0;c>10&31,r>>5&31,r&31),!(r&32768)););for(;h=this.staticmem&&(this.jit[s]=f),f},encode:function(t){for(var i=this.alphabets,e=[],s=this.version3?6:9,r=0,n,h,o=[];e.length=0?e.push(h+6):(h=i[1].indexOf(n))>=0?e.push(4,h+6):(h=i[2].indexOf(n))>=0?e.push(5,h+6):n===void 0?e.push(5):e.push(5,6,n>>5,n&31);for(e.length=s,r=0;r>3,(e[r++]&7)<<5|e[r++]);return o[o.length-2]|=128,o},zscii_to_text:function(t,i){for(var e=0,s=t.length,r,n=0,h="";e4&&(h=r.getUint8(t+o++)+2);o=0?(u!==32&&p.push([[u],o]),c=null):(c||(p.push([[],o]),c=p[p.length-1][0]),c.push(u)),o++;for(x=Math.min(p.length,r.getUint8(i));U{"use strict";var ii=b(),ei=ii.U2S16,si=function(){for(var t={4294967289:8,4294967290:13,4294967288:27,4294967292:129,4294967291:130,4294967294:131,4294967293:132,4294967283:146,4294967285:148,4294967284:152,4294967286:154},i=0;i<12;)t[4294967279-i]=133+i++;return t}(),ri=[0,2,1,10,4,9,5,6];function At(t){let i=[0,8,16,25,33,41,49,58,66,74,82,90,99,107,115,123,132,140,148,156,165,173,181,189,197,206,214,222,230,239,247,255];return i[t&31]<<16|i[(t&992)>>5]<<8|i[(t&31744)>>10]}var Gt=[65534,65535,0,29,832,957,22944,31775,30624,32767,23254,17969,11627];Et.exports={init_io:function(){this.io={reverse:0,bold:0,italic:0,bg:-1,fg:-1,mono:this.m.getUint8(17)&2,transcript:this.m.getUint8(17)&1,streams:[0,1,{},[],{}],currentwin:0,height:0,glkheight:0,maxheight:0,seenheight:0,width:0,row:0,col:0},this.open_windows()},erase_line:function(t){if(t===1){var i=this.io,e=i.row,s=i.col;this._print(Array(i.width-i.col+1).join(" ")),this.set_cursor(e,s)}},erase_window:function(t){t<1&&(this.Glk.glk_window_clear(this.mainwin),this.io.bg>=0?this.Glk.glk_stylehint_set(3,0,8,this.io.bg):this.io.bg===-1&&this.Glk.glk_stylehint_clear(3,0,8)),t!==0&&(t===-1&&this.split_window(0),this.upperwin&&(this.Glk.glk_window_clear(this.upperwin),this.set_cursor(0,0)))},fileref_create_by_prompt:function(t){typeof t.run>"u"&&(t.run=1),this.fileref_data=t,this.glk_blocking_call="fileref_create_by_prompt",this.Glk.glk_fileref_create_by_prompt(t.usage,t.mode,t.rock||0)},fix_upper_window:function(){var t=this.Glk,i=this.io;i.seenheight>=i.maxheight&&(i.maxheight=i.height),this.upperwin&&(i.maxheight===0?(t.glk_window_close(this.upperwin),this.upperwin=null):i.maxheight!==i.glkheight&&t.glk_window_set_arrangement(t.glk_window_get_parent(this.upperwin),18,i.maxheight,null),i.glkheight=i.maxheight),i.seenheight=i.maxheight,i.maxheight=i.height},format:function(){this.Glk.glk_set_style(ri[!!this.io.mono|this.io.italic|this.io.bold]),this.Glk.glk_gestalt(4352,0)&&this.Glk.garglk_set_reversevideo(this.io.reverse)},get_cursor:function(t){this.ram.setUint16(t,this.io.row+1),this.ram.setUint16(t+2,this.io.col+1)},handle_char_input:function(t){var i=this.io.streams[4],e=si[t]||this.reverse_unicode_table[t]||63;this.variable(this.read_data.storer,e),i.mode===1&&(i.cache+=e),i.mode===2&&this.Glk.glk_put_char_stream_uni(i.str,e)},handle_create_fileref:function(t){var i=this.Glk,e=this.fileref_data,s;return t&&(e.unicode?s=i.glk_stream_open_file_uni(t,e.mode,e.rock||0):s=i.glk_stream_open_file(t,e.mode,e.rock||0),i.glk_fileref_destroy(t)),(e.func==="restore"||e.func==="save")&&this.save_restore_handler(s),e.func==="input_stream"&&(this.io.streams[0]=s),e.func==="output_stream"&&this.output_stream_handler(s),e.run},handle_line_input:function(t,i){var e=this.ram,s=this.read_data,r=this.io.streams,n=String.fromCharCode.apply(null,s.buffer.slice(0,t))+`
-`,h=this.text_to_zscii(n.slice(0,-1).toLowerCase());r[2].mode===1&&(r[2].cache+=n),r[2].mode===2&&this.Glk.glk_put_jstring_stream(r[2].str,n),r[4].mode===1&&(r[4].cache+=n),r[4].mode===2&&this.Glk.glk_put_jstring_stream(r[4].str,n),this.version<5?(h.push(0),e.setUint8Array(s.bufaddr+1,h)):(e.setUint8(s.bufaddr+1,t),e.setUint8Array(s.bufaddr+2,h),this.variable(s.storer,isNaN(i)?13:i)),s.parseaddr&&this.tokenise(s.bufaddr,s.parseaddr)},input_stream:function(t){var i=this.io;t&&!i.streams[0]&&this.fileref_create_by_prompt({func:"input_stream",mode:2,rock:212,unicode:1,usage:259}),!t&&i.streams[0]&&(this.Glk.glk_stream_close(i.streams[0]),i.streams[0]=0)},open_windows:function(){let t=this.Glk;if(this.mainwin)t.glk_stylehint_clear(0,0,8),this.Glk.glk_gestalt(4352,0)&&t.garglk_set_zcolors_stream(this.mainwin.str,this.io.fg,this.io.bg),t.glk_window_clear(this.mainwin),this.upperwin&&(t.glk_window_close(this.upperwin),this.upperwin=null);else{let i=[1,2,4,5,6,9,10];for(let e=0;e<7;e++)t.glk_stylehint_set(0,i[e],3,0),t.glk_stylehint_set(0,i[e],4,0),t.glk_stylehint_set(0,i[e],5,0),t.glk_stylehint_set(0,i[e],6,1);t.glk_stylehint_set(0,4,4,1),t.glk_stylehint_set(0,1,5,1),t.glk_stylehint_set(0,5,4,1),t.glk_stylehint_set(0,5,5,1),t.glk_stylehint_set(0,2,6,0),t.glk_stylehint_set(0,9,4,1),t.glk_stylehint_set(0,9,6,0),t.glk_stylehint_set(0,10,5,1),t.glk_stylehint_set(0,10,6,0),t.glk_stylehint_set(0,6,4,1),t.glk_stylehint_set(0,6,5,1),t.glk_stylehint_set(0,6,6,0),this.mainwin=t.glk_window_open(0,0,0,3,201),t.glk_set_window(this.mainwin),this.version3&&(this.statuswin=t.glk_window_open(this.mainwin,18,1,4,202),this.statuswin&&this.Glk.glk_gestalt(4352,0)&&t.garglk_set_reversevideo_stream(t.glk_window_get_stream(this.statuswin),1))}},output_stream:function(t,i,e){var s=this.ram,r=this.io.streams,n,h;t=ei(t),t===1&&(r[1]=1),t===-1&&(r[1]=0),t===2&&!r[2].mode&&(this.fileref_create_by_prompt({func:"output_stream",mode:5,rock:210,run:!e,str:2,unicode:1,usage:258}),r[2].cache="",r[2].mode=1,e||(this.stop=1)),t===-2&&(s.setUint8(17,s.getUint8(17)&254),r[2].mode===2&&this.Glk.glk_stream_close(r[2].str),r[2].mode=this.io.transcript=0),t===3&&r[3].unshift([i,""]),t===-3&&(n=r[3].shift(),h=this.text_to_zscii(n[1]),s.setUint16(n[0],h.length),s.setUint8Array(n[0]+2,h)),t===4&&!r[4].mode&&(this.fileref_create_by_prompt({func:"output_stream",mode:5,rock:211,str:4,unicode:1,usage:259}),r[4].cache="",r[4].mode=1,this.stop=1),t===-4&&(r[4].mode===2&&this.Glk.glk_stream_close(r[4].str),r[4].mode=0)},output_stream_handler:function(t){var i=this.ram,e=this.io.streams,s=this.fileref_data;s.str===2&&(i.setUint8(17,i.getUint8(17)&254|(t?1:0)),t?(e[2].mode=2,e[2].str=t,this.io.transcript=1,e[2].cache&&this.Glk.glk_put_jstring_stream(e[2].str,e[2].cache)):e[2].mode=this.io.transcript=0),s.str===4&&(t?(e[4].mode=2,e[4].str=t,e[4].cache&&this.Glk.glk_put_jstring_stream(e[4].str,e[4].cache)):e[4].mode=0)},_print:function(t){var i=this.Glk,e=this.io,s=0;if(e.streams[3].length)e.streams[3][0][1]+=t;else if(t=t.replace(/\r/g,`
-`),(this.m.getUint8(17)&1)!==e.transcript&&this.output_stream(e.transcript?-2:2,0,1),(this.m.getUint8(17)&2)!==(e.mono&2)&&(e.mono^=2,this.format()),e.currentwin&&this.upperwin)for(;s=e.height&&this.split_window(t+1),this.upperwin&&t>=0&&i>=0&&in){for(h=i.glk_window_get_stream(this.upperwin);ne.maxheight&&(e.maxheight=t,this.upperwin?i.glk_window_set_arrangement(i.glk_window_get_parent(this.upperwin),18,e.maxheight,null):(this.io.bg>=0&&i.glk_stylehint_set(4,0,8,this.io.bg),this.upperwin=i.glk_window_open(this.mainwin,18,e.maxheight,4,203),this.Glk.glk_gestalt(4352,0)&&i.garglk_set_zcolors_stream(this.upperwin.str,this.io.fg,this.io.bg),i.glk_stylehint_clear(4,0,8)),e.glkheight=e.maxheight),t&&(e.row>=t&&this.set_cursor(0,0),this.version3&&i.glk_window_clear(this.upperwin))},update_header:function(){var t=this.ram;if(this.xorshift_seed=0,this.update_screen_size(),this.version3)return t.setUint8(1,t.getUint8(1)&143|(this.statuswin?32:16)|64);t.setUint8(1,(this.Glk.glk_gestalt(4352,0)?1:0)|t.getUint8(1)&2|28|0),t.setUint8(17,t.getUint8(17)&87),this.version>4&&t.setUint16(38,257),t.setUint16(50,258),this.extension_table(4,0)},update_screen_size:function(){let t=this.Glk,i=new t.RefBox,e=new t.RefBox,s=t.glk_window_open(this.mainwin,18,0,4,0),r=0,n=0;t.glk_window_get_size(this.mainwin,e,i),r=i.get_value(),this.upperwin&&(t.glk_window_get_size(this.upperwin,e,i),r+=i.get_value()),this.statuswin&&(t.glk_window_get_size(this.statuswin,e,i),r+=i.get_value()),s&&(t.glk_window_get_size(s,e,0),t.glk_window_close(s)),n=e.get_value(),r=Math.min(r,254),n=this.io.width=Math.min(n,255),this.version>3&&(this.ram.setUint8(32,r),this.ram.setUint8(33,n)),this.version>4&&(this.ram.setUint16(34,n),this.ram.setUint16(36,r)),this.io.col>=n&&(this.io.col=n-1)},v3_status:function(){if(this.statuswin){var t=this.Glk,i=t.glk_window_get_stream(this.statuswin),e=this.m,s=this.io.width,r=e.getUint16(this.globals+2),n=e.getUint16(this.globals+4),h=e.getUint16(this.objects+9*e.getUint16(this.globals)+7),o=""+this.decode(h+1,e.getUint8(h)*2),u;e.getUint8(1)&2?u="Time: "+(r%12===0?12:r%12)+":"+(n<10?"0":"")+n+" "+(r>11?"PM":"AM"):u="Score: "+r+" Turns: "+n,t.glk_window_move_cursor(this.statuswin,0,0),t.glk_put_jstring_stream(i,Array(s+1).join(" ")),t.glk_window_move_cursor(this.statuswin,0,0),t.glk_put_jstring_stream(i," "+o.slice(0,s-u.length-4)),t.glk_window_move_cursor(this.statuswin,s-u.length-1,0),t.glk_put_jstring_stream(i,u)}}}});var Bt=w((Ui,Dt)=>{"use strict";var C=L();Dt.exports.disassemble=function(){var t,i,e=this.m,s=this.opcodes,r,n,h,o,u,f=new C.RoutineContext(this,this.pc);function c(p,x){for(var v=0;v<4;v++)x.push((p&192)>>6),p<<=2}for(;;){if(i=t=this.pc,n=e.getUint8(t++),n===190?(o=-1,n=e.getUint8(t++)+1e3):n&128?n&64?(o=-1,n&32||(n&=31)):(o=[(n&48)>>4],o[0]<3&&(n&=207)):(o=[n&64?2:1,n&32?2:1],n&=31),!s[n])throw this.log(""+f),this.stop=1,new Error("Unknown opcode #"+n+" at pc="+i);for(h=s[n].prototype,o===-1&&(o=[],c(e.getUint8(t++),o),(n===236||n===250)&&c(e.getUint8(t++),o)),u=[],r=0;r>18])),h.printer)for(u.push(t);t{"use strict";var F=b(),ni=V(),hi={stack_len:100*1e3,undo_len:1e3*1e3},oi={init:function(){this.jit={},this.init=this.start},prepare:function(t,i){if(!i.Glk)throw new Error("A reference to Glk is required");this.Glk=i.Glk,this.data=t,this.options=F.extend({},hi,i)},start:function(){var t=this.Glk,i;try{if(i=ni.identify(this.data),delete this.data,!i||i.format!=="ZCOD")throw new Error("This is not a Z-Code file");if([3,4,5,8].indexOf(i.version)<0)throw new Error("Unsupported Z-Machine version: "+i.version);this.m=F.MemoryView(i.data),this.staticmem=this.m.getUint16(14),this.ram=F.MemoryView(this.m,0,this.staticmem),this.origram=this.m.getUint8Array(0,this.staticmem);let e="",s=0;for(;s<30;)e+=(this.origram[s]<16?"0":"")+this.origram[s++].toString(16);this.signature=e;let r,n=this.options.Dialog;if(n){if(this.options.clear_vm_autosave)n.autosave_write(e,null);else if(this.options.do_vm_autosave)try{let h=n.autosave_read(e);h&&(this.do_autorestore(h),r=1)}catch(h){this.log("Autorestore failed, deleting it: "+h),n.autosave_write(e,null)}}r||(this.restart(),this.run()),this.quit||(this.glk_event=new t.RefStruct,this.glk_blocking_call?this.glk_event.push_field(this.glk_blocking_call):t.glk_select(this.glk_event)),t.update()}catch(e){t.fatal_error(e),console.log(e)}},resume:function(t){var i=this.Glk,e=this.glk_event,s,r;try{s=e.get_field(0),s===2&&(this.handle_char_input(e.get_field(2)),r=1),s===3&&(this.handle_line_input(e.get_field(2),e.get_field(3)),r=1),s===5&&this.update_screen_size(),s==="fileref_create_by_prompt"&&(r=this.handle_create_fileref(t)),this.glk_blocking_call=null,r&&this.run(),this.quit||(this.glk_event=new i.RefStruct,this.glk_blocking_call?this.glk_event.push_field(this.glk_blocking_call):i.glk_select(this.glk_event)),i.update()}catch(n){i.fatal_error(n),console.log(n)}},get_signature:function(){return this.signature},run:function(){var t,i;for(this.stop=0;!this.stop;)t=this.pc,this.jit[t]||this.compile(),i=this.jit[t](this),isNaN(i)||this.ret(i)},compile:function(){var t=this.disassemble();this.jit[t.pc]=new Function("e",""+t),t.pc{"use strict";var ui={serialize:()=>({})},q=class{constructor(){this.class_map={fileref:{},stream:{},window:{}},this.last_used_id=101}init(i){this.vm=i.vm}check_autosave(){return!this.vm.glk_blocking_call}class_obj_from_id(i,e){return this.class_map[i][e]}class_register(i,e,s){if(s){if(e.disprock!==s)throw new Error("class_register: object is not already registered");this.last_used_id<=s&&(this.last_used_id=s+1)}else{if(e.disprock)throw new Error("class_register: object is already registered");e.disprock=this.last_used_id++}this.class_map[i][e.disprock]=e}class_unregister(i,e){if(!e.disprock||this.class_map[i][e.disprock]==null)throw new Error("class_unregister: object is not registered");delete this.class_map[i][e.disprock],e.disprock=null}get_retained_array(i){return{arg:ui,arr:i.slice(),len:i.length}}prepare_resume(){}retain_array(){}set_vm(i){this.vm=i}unretain_array(){}};typeof M=="object"&&M.exports&&(M.exports=q);typeof window<"u"&&(window.GiDispa=new q)});var fi=H(qt(),1),li=H(Ot(),1);var export_ZVM=fi.default;var export_ZVMDispatch=li.default;export{export_ZVM as ZVM,export_ZVMDispatch as ZVMDispatch};
-//# sourceMappingURL=zvm.js.map
diff --git a/IFComp/root/static/interpreter/zvm.js.map b/IFComp/root/static/interpreter/zvm.js.map
deleted file mode 100644
index e295f5b3..00000000
--- a/IFComp/root/static/interpreter/zvm.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "version": 3,
- "sources": ["../../src/upstream/ifvms.js/src/common/utils.js", "../../src/upstream/ifvms.js/src/common/file.js", "../../src/upstream/ifvms.js/src/common/ast.js", "../../src/upstream/ifvms.js/src/zvm/opcodes.js", "../../src/upstream/ifvms.js/src/zvm/runtime.js", "../../src/upstream/ifvms.js/src/zvm/text.js", "../../src/upstream/ifvms.js/src/zvm/io.js", "../../src/upstream/ifvms.js/src/zvm/disassembler.js", "../../src/upstream/ifvms.js/src/zvm.js", "../../src/upstream/ifvms.js/src/zvm/dispatch.js", "../../src/common/zvm.js"],
- "sourcesContent": ["/*\n\nCommon untility functions\n=========================\n\nCopyright (c) 2016 The ifvms.js team\nBSD licenced\nhttp://github.com/curiousdannii/ifvms.js\n\n*/\n\n'use strict';\n\n// Utility to extend objects\nfunction extend()\n{\n\tvar old = arguments[0], i = 1, add, name;\n\twhile ( i < arguments.length )\n\t{\n\t\tadd = arguments[i++];\n\t\tfor ( name in add )\n\t\t{\n\t\t\told[name] = add[name];\n\t\t}\n\t}\n\treturn old;\n}\n\n// Simple classes\n// Inspired by John Resig's class implementation\n// http://ejohn.org/blog/simple-javascript-inheritance/\n\nfunction Class()\n{}\n\nClass.subClass = function( props )\n{\n\tfunction newClass()\n\t{\n\t\tif ( this.init )\n\t\t{\n\t\t\tthis.init.apply( this, arguments );\n\t\t}\n\t}\n\tnewClass.prototype = extend( Object.create( this.prototype ), props );\n\tnewClass.subClass = this.subClass;\n\tnewClass.super = newClass.prototype.super = this.prototype;\n\treturn newClass;\n};\n\n// An enhanced DataView\n// Accepts an ArrayBuffer, another view (MemoryView / DataView / TypedArray), or a length number\nfunction MemoryView( buffer, byteOffset, byteLength )\n{\n\t// Length number\n\tif ( typeof buffer === 'number' )\n\t{\n\t\tbuffer = new ArrayBuffer( buffer );\n\t}\n\n\t// MemoryView / DataView / TypedArray\n\telse if ( buffer.buffer )\n\t{\n\t\t// If unspecified, byteOffset defaults at the beginning of the given view. Note\n\t\t// that We will adjust 'byteOffset' after using the initial value to calculate\n\t\t// the default byteLength below.\n\t\tbyteOffset |= 0;\n\n\t\t// A view may be a subset of a potentially larger array buffer. Before extracting\n\t\t// the underlying buffer, map the given 'byteLength' and byteOffset' to the underlying\n\t\t// array buffer from which we will construct the DataView.\n\n\t\t// A specified 'byteLength' does not need to be adjusted, but if no byteLength was\n\t\t// given, we need to ensure that the resulting MemoryView does not extend past the\n\t\t// end of the typed array (see above).\n\t\tif ( typeof byteLength === 'undefined' )\n\t\t{\n\t\t\tbyteLength = buffer.byteLength - byteOffset;\n\t\t}\n\n\t\t// Map the 'byteOffset', which is currently relative to the typed array, to the same\n\t\t// location in the underlying array buffer.\n\t\tbyteOffset += buffer.byteOffset;\n\n\t\t// Finally, extract the underlying array buffer.\n\t\tbuffer = buffer.buffer;\n\t}\n\t// Else already an ArrayBuffer. No adjustments to 'byteOffset'/'byteLength' necessary.\n\t\n\treturn extend( new DataView( buffer, byteOffset, byteLength ), {\n\t\tgetUint8Array: function( start, length )\n\t\t{\n\t\t\t// Note that start/length are non-optional, so we only need to adjust the start to\n\t\t\t// the byteOffset of the view. (See MemoryView ctor comments.)\n\t\t\tstart += this.byteOffset;\n\n\t\t\treturn new Uint8Array( this.buffer.slice( start, start + length ) );\n\t\t},\n\t\tgetUint16Array: function( start, length )\n\t\t{\n\t\t\t// Note that start/length are non-optional, so we only need to adjust the start to\n\t\t\t// the byteOffset of the view. (See MemoryView ctor comments.)\n\t\t\tstart += this.byteOffset;\n\n\t\t\t// We cannot simply return a Uint16Array as most systems are little-endian\n\t\t\treturn Uint8toUint16Array( new Uint8Array( this.buffer, start, length * 2 ) );\n\t\t},\n\t\tsetUint8Array: function( start, data )\n\t\t{\n\t\t\tif ( data instanceof ArrayBuffer )\n\t\t\t{\n\t\t\t\tdata = new Uint8Array( data );\n\t\t\t}\n\t\t\t( new Uint8Array( this.buffer, this.byteOffset, this.byteLength ) ).set( data, start );\n\t\t},\n\t\t//setBuffer16 NOTE: if we implement this we cannot simply set a Uint16Array as most systems are little-endian\n\t\t\n\t\t// For use with IFF files\n\t\tgetFourCC: function( index )\n\t\t{\n\t\t\treturn String.fromCharCode( this.getUint8( index ), this.getUint8( index + 1 ), this.getUint8( index + 2 ), this.getUint8( index + 3 ) );\n\t\t},\n\t\tsetFourCC: function( index, text )\n\t\t{\n\t\t\tthis.setUint8( index, text.charCodeAt( 0 ) );\n\t\t\tthis.setUint8( index + 1, text.charCodeAt( 1 ) );\n\t\t\tthis.setUint8( index + 2, text.charCodeAt( 2 ) );\n\t\t\tthis.setUint8( index + 3, text.charCodeAt( 3 ) );\n\t\t},\n\t} );\n}\n\n// Utilities for 16-bit signed arithmetic\nfunction U2S16( value )\n{\n\treturn value << 16 >> 16;\n}\nfunction S2U16 ( value )\n{\n\treturn value & 0xFFFF;\n}\n\n// Utility to convert from byte arrays to word arrays\nfunction Uint8toUint16Array( array )\n{\n\tvar i = 0, l = array.length,\n\tresult = new Uint16Array( l / 2 );\n\twhile ( i < l )\n\t{\n\t\tresult[i / 2] = array[i++] << 8 | array[i++];\n\t}\n\treturn result;\n}\n\nmodule.exports = {\n\textend: extend,\n\tClass: Class,\n\tMemoryView: MemoryView,\n\tU2S16: U2S16,\n\tS2U16: S2U16,\n\tUint8toUint16Array: Uint8toUint16Array,\n};", "/*\n\nFile classes\n============\n\nCopyright (c) 2016 The ifvms.js team\nBSD licenced\nhttp://github.com/curiousdannii/ifvms.js\n\n*/\n\n'use strict';\n\nvar utils = require( './utils.js' ),\nMemoryView = utils.MemoryView,\n\n// A basic IFF file, to be extended later\n// Currently supports buffer data\nIFF = utils.Class.subClass({\n\tinit: function( data )\n\t{\n\t\tthis.type = '';\n\t\tthis.chunks = [];\n\t\t\n\t\tif ( data )\n\t\t{\n\t\t\tvar view = MemoryView( data ),\n\t\t\ti = 12, length, chunk_length;\n\t\t\t\n\t\t\t// Check that it is actually an IFF file\n\t\t\tif ( view.getFourCC( 0 ) !== 'FORM' )\n\t\t\t{\n\t\t\t\tthrow new Error( 'Not an IFF file' );\n\t\t\t}\n\n\t\t\t// Parse the file\n\t\t\tthis.type = view.getFourCC( 8 );\n\t\t\tlength = view.getUint32( 4 ) + 8;\n\n\t\t\twhile ( i < length )\n\t\t\t{\n\t\t\t\tchunk_length = view.getUint32( i + 4 );\n\n\t\t\t\tif ( chunk_length < 0 || ( chunk_length + i ) > length )\n\t\t\t\t{\n\t\t\t\t\tthrow new Error( 'IFF chunk out of range' );\n\t\t\t\t}\n\n\t\t\t\tthis.chunks.push({\n\t\t\t\t\ttype: view.getFourCC( i ),\n\t\t\t\t\toffset: i,\n\t\t\t\t\tdata: view.getUint8Array( i + 8, chunk_length ),\n\t\t\t\t});\n\n\t\t\t\ti += 8 + chunk_length;\n\t\t\t\tif ( chunk_length % 2 )\n\t\t\t\t{\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\twrite: function()\n\t{\n\t\t// Start with the IFF type\n\t\tvar buffer_len = 12, i = 0, index = 12,\n\t\tout, chunk;\n\n\t\t// First calculate the required buffer length\n\t\twhile ( i < this.chunks.length )\n\t\t{\n\t\t\t// Replace typed arrays or dataviews with their buffers\n\t\t\tif ( this.chunks[i].data.buffer )\n\t\t\t{\n\t\t\t\tthis.chunks[i].data = this.chunks[i].data.buffer;\n\t\t\t}\n\t\t\tthis.chunks[i].length = this.chunks[i].data.byteLength || this.chunks[i].data.length;\n\t\t\tbuffer_len += 8 + this.chunks[i++].length;\n\t\t\tif ( buffer_len % 2 )\n\t\t\t{\n\t\t\t\tbuffer_len++;\n\t\t\t}\n\t\t}\n\t\t\n\t\tout = MemoryView( buffer_len );\n\t\tout.setFourCC( 0, 'FORM' );\n\t\tout.setUint32( 4, buffer_len - 8 );\n\t\tout.setFourCC( 8, this.type );\n\t\t\n\t\t// Go through the chunks and write them out\n\t\ti = 0;\n\t\twhile ( i < this.chunks.length )\n\t\t{\n\t\t\tchunk = this.chunks[i++];\n\t\t\tout.setFourCC( index, chunk.type );\n\t\t\tout.setUint32( index + 4, chunk.length );\n\t\t\tout.setUint8Array( index + 8, chunk.data );\n\t\t\tindex += 8 + chunk.length;\n\t\t\tif ( index % 2 )\n\t\t\t{\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\n\t\treturn out.buffer;\n\t},\n}),\n\nBlorb = IFF.subClass({\n\tinit: function( data )\n\t{\n\t\tthis.super.init.call( this, data );\n\t\tif ( data )\n\t\t{\n\t\t\tif ( this.type !== 'IFRS' )\n\t\t\t{\n\t\t\t\tthrow new Error( 'Not a Blorb file' );\n\t\t\t}\n\t\t\t\n\t\t\t// Process the RIdx chunk to find the main exec chunk\n\t\t\tif ( this.chunks[0].type !== 'RIdx' )\n\t\t\t{\n\t\t\t\tthrow new Error( 'Malformed Blorb: chunk 1 is not RIdx' );\n\t\t\t}\n\t\t\tvar view = MemoryView( this.chunks[0].data ),\n\t\t\ti = 4;\n\t\t\twhile ( i < this.chunks[0].data.length )\n\t\t\t{\n\t\t\t\tif ( view.getFourCC( i ) === 'Exec' && view.getUint32( i + 4 ) === 0 )\n\t\t\t\t{\n\t\t\t\t\tthis.exec = this.chunks.filter( function( chunk )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn chunk.offset === view.getUint32( i + 8 );\n\t\t\t\t\t})[0];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ti += 12;\n\t\t\t}\n\t\t}\n\t},\n}),\n\nQuetzal = IFF.subClass({\n\t// Parse a Quetzal savefile, or make a blank one\n\tinit: function( data )\n\t{\n\t\tthis.super.init.call( this, data );\n\t\tif ( data )\n\t\t{\n\t\t\t// Check this is a Quetzal savefile\n\t\t\tif ( this.type !== 'IFZS' )\n\t\t\t{\n\t\t\t\tthrow new Error( 'Not a Quetzal savefile' );\n\t\t\t}\n\n\t\t\t// Go through the chunks and extract the useful ones\n\t\t\tvar i = 0,\n\t\t\ttype, chunk_data, view;\n\t\t\t\n\t\t\twhile ( i < this.chunks.length )\n\t\t\t{\n\t\t\t\ttype = this.chunks[i].type;\n\t\t\t\tchunk_data = this.chunks[i++].data;\n\n\t\t\t\t// Memory and stack chunks\n\t\t\t\tif ( type === 'CMem' || type === 'UMem' )\n\t\t\t\t{\n\t\t\t\t\tthis.memory = chunk_data;\n\t\t\t\t\tthis.compressed = ( type === 'CMem' );\n\t\t\t\t}\n\t\t\t\telse if ( type === 'Stks' )\n\t\t\t\t{\n\t\t\t\t\tthis.stacks = chunk_data;\n\t\t\t\t}\n\n\t\t\t\t// Story file data\n\t\t\t\telse if ( type === 'IFhd' )\n\t\t\t\t{\n\t\t\t\t\tview = MemoryView( chunk_data.buffer );\n\t\t\t\t\tthis.release = view.getUint16( 0 );\n\t\t\t\t\tthis.serial = view.getUint8Array( 2, 6 );\n\t\t\t\t\t// The checksum isn't used, but if we throw it away we can't round-trip\n\t\t\t\t\tthis.checksum = view.getUint16( 8 );\n\t\t\t\t\t// The pc is only a Uint24, but there's no function for that, so grab an extra byte and then discard it\n\t\t\t\t\tthis.pc = view.getUint32( 9 ) & 0xFFFFFF;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Write out a savefile\n\twrite: function()\n\t{\n\t\t// Reset the IFF type\n\t\tthis.type = 'IFZS';\n\n\t\t// Format the IFhd chunk correctly\n\t\tvar ifhd = MemoryView( 13 );\n\t\tifhd.setUint16( 0, this.release );\n\t\tifhd.setUint8Array( 2, this.serial );\n\t\tifhd.setUint32( 9, this.pc );\n\t\tifhd.setUint16( 8, this.checksum );\n\n\t\t// Add the chunks\n\t\tthis.chunks = [\n\t\t\t{ type: 'IFhd', data: ifhd },\n\t\t\t{ type: ( this.compressed ? 'CMem' : 'UMem' ), data: this.memory },\n\t\t\t{ type: 'Stks', data: this.stacks },\n\t\t];\n\n\t\t// Return the byte array\n\t\treturn this.super.write.call( this );\n\t},\n});\n\n// Inspect a file and identify its format and version number\nfunction identify( buffer )\n{\n\tvar view = MemoryView( buffer ),\n\tblorb,\n\tformat,\n\tversion;\n\t\n\t// Blorb\n\tif ( view.getFourCC( 0 ) === 'FORM' && view.getFourCC( 8 ) === 'IFRS' )\n\t{\n\t\tblorb = new Blorb( buffer );\n\t\tif ( blorb.exec )\n\t\t{\n\t\t\tformat = blorb.exec.type;\n\t\t\tbuffer = blorb.exec.data;\n\t\t\tif ( format === 'GLUL' )\n\t\t\t{\n\t\t\t\tview = MemoryView( buffer );\n\t\t\t\tversion = view.getUint32( 4 );\n\t\t\t}\n\t\t\tif ( format === 'ZCOD' )\n\t\t\t{\n\t\t\t\tversion = buffer[0];\n\t\t\t}\n\t\t}\n\t}\n\t// Glulx\n\telse if ( view.getFourCC( 0 ) === 'Glul' )\n\t{\n\t\tformat = 'GLUL';\n\t\tversion = view.getUint32( 4 );\n\t}\n\t// Z-Code\n\telse\n\t{\n\t\tversion = view.getUint8( 0 );\n\t\tif ( version > 0 && version < 9 )\n\t\t{\n\t\t\tformat = 'ZCOD';\n\t\t}\n\t}\n\t\n\tif ( format && version )\n\t{\n\t\treturn {\n\t\t\tformat: format,\n\t\t\tversion: version,\n\t\t\tdata: buffer,\n\t\t};\n\t}\n}\n\nmodule.exports = {\n\tIFF: IFF,\n\tBlorb: Blorb,\n\tQuetzal: Quetzal,\n\tidentify: identify,\n};\n", "/*\n\nAbstract syntax trees for IF VMs\n================================\n\nCopyright (c) 2017 The ifvms.js team\nBSD licenced\nhttp://github.com/curiousdannii/ifvms.js\n\n*/\n\n'use strict';\n\n/*\n\nAll AST nodes must use these functions, even constants\n(An exception is made for branch addresses and text literals which remain as primitives)\ntoString() functions are used to generate JIT code\n\nAside from Variable is currently generic and could be used for Glulx too\n\nTODO:\n\tUse strict mode for new Function()?\n\tWhen we can run through a whole game, test whether using common_func is faster (if its slower then not worth the file size saving)\n\tCan we eliminate the Operand class?\n\tSubclass Operand/Variable from Number?\n\tReplace calls to args() with arguments.join()?\n\n*/\n\nvar utils = require( '../common/utils.js' ),\nClass = utils.Class,\nU2S = utils.U2S16,\n//S2U = utils.S2U16;\n\n// Generic/constant operand\n// Value is a constant\nOperand = Class.subClass({\n\tinit: function( engine, value )\n\t{\n\t\tthis.e = engine;\n\t\tthis.v = value;\n\t},\n\ttoString: function()\n\t{\n\t\treturn this.v;\n\t},\n\n\t// Convert an Operand into a signed operand\n\tU2S: function()\n\t{\n\t\treturn U2S( this.v );\n\t},\n}),\n\n// Variable operand\n// Value is the variable number\n// TODO: unrolling is needed -> retain immediate returns if optimisations are disabled\nVariable = Operand.subClass({\n\t// Get a value\n\ttoString: function()\n\t{\n\t\tvar variable = this.v;\n\n\t\t// Indirect\n\t\tif ( this.indirect )\n\t\t{\n\t\t\treturn 'e.indirect(' + variable + ')';\n\t\t}\n\n\t\t// Stack\n\t\tif ( variable === 0 )\n\t\t{\n\t\t\t// If we've been passed a value we're setting a variable\n\t\t\treturn 's[--e.sp]';\n\t\t}\n\t\t// Locals\n\t\tif ( --variable < 15 )\n\t\t{\n\t\t\treturn 'l[' + variable + ']';\n\t\t}\n\t\t// Globals\n\t\treturn 'e.m.getUint16(' + ( this.e.globals + ( variable - 15 ) * 2 ) + ')';\n\t},\n\n\t// Store a value\n\tstore: function( value )\n\t{\n\t\tvar variable = this.v;\n\n\t\t// Indirect variable\n\t\tif ( this.indirect )\n\t\t{\n\t\t\treturn 'e.indirect(' + variable + ',' + value + ')';\n\t\t}\n\n\t\t// BrancherStorers need the value\n\t\tif ( this.returnval )\n\t\t{\n\t\t\treturn 'e.variable(' + variable + ',' + value + ')';\n\t\t}\n\n\t\t// Stack\n\t\tif ( variable === 0 )\n\t\t{\n\t\t\t// If we've been passed a value we're setting a variable\n\t\t\treturn 't=' + value + ';s[e.sp++]=t';\n\t\t}\n\t\t// Locals\n\t\tif ( --variable < 15 )\n\t\t{\n\t\t\treturn 'l[' + variable + ']=' + value;\n\t\t}\n\t\t// Globals\n\t\treturn 'e.ram.setUint16(' + ( this.e.globals + ( variable - 15 ) * 2 ) + ',' + value + ')';\n\t},\n\n\t// Convert an Operand into a signed operand\n\tU2S: function()\n\t{\n\t\treturn 'e.U2S(' + this + ')';\n\t},\n}),\n\n// Generic opcode\n// .func() must be set, which returns what .write() will actually return; it is passed the operands as its arguments\nOpcode = Class.subClass({\n\tinit: function( engine, context, code, pc, next, operands )\n\t{\n\t\tthis.e = engine;\n\t\tthis.context = context;\n\t\tthis.code = code;\n\t\tthis.pc = pc;\n\t\tthis.labels = [ this.pc + '/' + this.code ];\n\t\tthis.next = next;\n\t\tthis.operands = operands;\n\n\t\t// Post-init function (so that they don't all have to call _super)\n\t\tif ( this.post )\n\t\t{\n\t\t\tthis.post();\n\t\t}\n\t},\n\n\t// Write out the opcode, passing .operands to .func(), with a JS comment of the pc/opcode\n\ttoString: function()\n\t{\n\t\treturn this.label() + ( this.func ? this.func.apply( this, this.operands ) : '' );\n\t},\n\n\t// Return a string of the operands separated by commas\n\targs: function( joiner )\n\t{\n\t\treturn this.operands.join( joiner );\n\t},\n\n\t// Generate a comment of the pc and code, possibly for more than one opcode\n\tlabel: function()\n\t{\n\t\treturn '/* ' + this.labels.join() + ' */ ';\n\t},\n}),\n\n// Stopping opcodes\nStopper = Opcode.subClass({\n\tstopper: 1,\n}),\n\n// Pausing opcodes (ie, set the pc at the end of the context)\nPauser = Stopper.subClass({\n\tpost: function()\n\t{\n\t\tthis.origfunc = this.func;\n\t\tthis.func = this.newfunc;\n\t},\n\n\tnewfunc: function()\n\t{\n\t\treturn 'e.stop=1;e.pc=' + this.next + ';' + this.origfunc.apply( this, arguments );\n\t},\n}),\n\nPauserStorer = Pauser.subClass({\n\tstorer: 1,\n\n\tpost: function()\n\t{\n\t\tthis.storer = this.operands.pop();\n\t\tthis.origfunc = this.func;\n\t\tthis.func = this.newfunc;\n\t},\n}),\n\n// Join multiple branchers together with varying logic conditions\nBrancherLogic = Class.subClass({\n\tinit: function( ops, code )\n\t{\n\t\tthis.ops = ops || [];\n\t\tthis.code = code || '||';\n\t},\n\n\ttoString: function()\n\t{\n\t\tvar i = 0,\n\t\tops = [],\n\t\top;\n\t\twhile ( i < this.ops.length )\n\t\t{\n\t\t\top = this.ops[i++];\n\t\t\t// Accept either Opcodes or further BrancherLogics\n\t\t\tops.push(\n\t\t\t\top.func ?\n\t\t\t\t\t( op.iftrue ? '' : '!(' ) + op.func.apply( op, op.operands ) + ( op.iftrue ? '' : ')' ) :\n\t\t\t\t\top\n\t\t\t);\n\t\t}\n\t\treturn ( this.invert ? '(!(' : '(' ) + ops.join( this.code ) + ( this.invert ? '))' : ')' );\n\t},\n}),\n\n// Branching opcodes\nBrancher = Opcode.subClass({\n\t// Flag for the disassembler\n\tbrancher: 1,\n\n\tkeyword: 'if',\n\n\t// Process the branch result now\n\tpost: function()\n\t{\n\t\tvar result,\n\t\tprev,\n\n\t\t// Calculate the offset\n\t\tbrancher = this.operands.pop(),\n\t\toffset = brancher[1];\n\t\tthis.iftrue = brancher[0];\n\n\t\t// Process the offset\n\t\tif ( offset === 0 || offset === 1 )\n\t\t{\n\t\t\tresult = 'e.ret(' + offset + ')';\n\t\t}\n\t\telse\n\t\t{\n\t\t\toffset += this.next - 2;\n\n\t\t\t// Add this target to this context's list\n\t\t\tthis.context.targets.push( offset );\n\t\t\tresult = 'e.pc=' + offset;\n\t\t}\n\n\t\tthis.result = result + ';return';\n\t\tthis.offset = offset;\n\t\tthis.cond = new BrancherLogic( [this] );\n\n\t\t// TODO: re-enable\n\t\t/*if ( this.e.options.debug )\n\t\t{\n\t\t\t// Stop if we must\n\t\t\tif ( debugflags.noidioms )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t}*/\n\n\t\t// Compare with previous statement\n\t\tif ( this.context.ops.length )\n\t\t{\n\t\t\tprev = this.context.ops.pop();\n\t\t\t// As long as no other opcodes have an offset property we can skip the instanceof check\n\t\t\tif ( /* prev instanceof Brancher && */ prev.offset === offset )\n\t\t\t{\n\t\t\t\t// Goes to same offset so reuse the Brancher arrays\n\t\t\t\tthis.cond.ops.unshift( prev.cond );\n\t\t\t\tthis.labels = prev.labels;\n\t\t\t\tthis.labels.push( this.pc + '/' + this.code );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.context.ops.push( prev );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Write out the brancher\n\ttoString: function()\n\t{\n\t\tvar result = this.result;\n\n\t\t// Account for Contexts\n\t\tif ( result instanceof Context )\n\t\t{\n\t\t\t// Update the context to be a child of this context\n\t\t\tif ( this.e.options.debug )\n\t\t\t{\n\t\t\t\tresult.context = this.context;\n\t\t\t}\n\n\t\t\tresult = result + ( result.stopper ? '; return' : '' );\n\n\t\t\t// Extra line breaks for multi-op results\n\t\t\tif ( this.result.ops.length > 1 )\n\t\t\t{\n\t\t\t\tresult = '\\n' + result + '\\n';\n\t\t\t\tif ( this.e.options.debug )\n\t\t\t\t{\n\t\t\t\t\tresult += this.context.spacer;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Print out a label for all included branches and the branch itself\n\t\treturn this.label() + this.keyword + this.cond + ' {' + result + '}';\n\t},\n}),\n\n// Brancher + Storer\nBrancherStorer = Brancher.subClass({\n\tstorer: 1,\n\n\t// Set aside the storer operand\n\tpost: function()\n\t{\n\t\tBrancherStorer.super.post.call( this );\n\t\tthis.storer = this.operands.pop();\n\t\tthis.storer.returnval = 1;\n\n\t\t// Replace the func\n\t\tthis.origfunc = this.func;\n\t\tthis.func = this.newfunc;\n\t},\n\n\tnewfunc: function()\n\t{\n\t\treturn this.storer.store( this.origfunc.apply( this, arguments ) );\n\t},\n}),\n\n// Storing opcodes\nStorer = Opcode.subClass({\n\t// Flag for the disassembler\n\tstorer: 1,\n\n\t// Set aside the storer operand\n\tpost: function()\n\t{\n\t\tthis.storer = this.operands.pop();\n\t},\n\n\t// Write out the opcode, passing it to the storer (if there still is one)\n\ttoString: function()\n\t{\n\t\tvar data = Storer.super.toString.call( this );\n\n\t\t// If we still have a storer operand, use it\n\t\t// Otherwise (if it's been removed due to optimisations) just return func()\n\t\treturn this.storer ? this.storer.store( data ) : data;\n\t},\n}),\n\n// Routine calling opcodes\nCaller = Stopper.subClass({\n\t// Fake a result variable\n\tresult: { v: -1 },\n\n\t// Write out the opcode\n\ttoString: function()\n\t{\n\t\t// TODO: Debug: include label if possible\n\t\treturn this.label() + 'e.call(' + this.operands.shift() + ',' + this.result.v + ',' + this.next + ',[' + this.args() + '])';\n\t},\n}),\n\n// Routine calling opcodes, storing the result\nCallerStorer = Caller.subClass({\n\t// Flag for the disassembler\n\tstorer: 1,\n\n\tpost: function()\n\t{\n\t\t// We can't let the storer be optimised away here\n\t\tthis.result = this.operands.pop();\n\t},\n}),\n\n// A generic context (a routine, loop body etc)\nContext = Class.subClass({\n\tinit: function( engine, pc )\n\t{\n\t\tthis.e = engine;\n\t\tthis.pc = pc;\n\t\tthis.pre = [];\n\t\tthis.ops = [];\n\t\tthis.post = [];\n\t\tthis.targets = []; // Branch targets\n\t\tif ( engine.options.debug )\n\t\t{\n\t\t\tthis.spacer = '';\n\t\t}\n\t},\n\n\ttoString: function()\n\t{\n\t\tif ( this.e.options.debug )\n\t\t{\n\t\t\t// Indent the spacer further if needed\n\t\t\tif ( this.context )\n\t\t\t{\n\t\t\t\tthis.spacer = this.context.spacer + ' ';\n\t\t\t}\n\t\t\t// DEBUG: Pretty print!\n\t\t\treturn this.pre.join( '' ) + ( this.ops.length > 1 ? this.spacer : '' ) + this.ops.join( ';\\n' + this.spacer ) + this.post.join( '' );\n\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Return the code\n\t\t\treturn this.pre.join( '' ) + this.ops.join( ';' ) + this.post.join( '' );\n\t\t}\n\t},\n}),\n\n// A routine body\nRoutineContext = Context.subClass({\n\ttoString: function()\n\t{\n\t\t// TODO: Debug: If we have routine names, find this one's name\n\n\t\t// Add in some extra vars and return\n\t\tthis.pre.unshift( 'var l=e.l,s=e.s,t=0;\\n' );\n\t\treturn RoutineContext.super.toString.call( this );\n\t},\n});\n\n// Opcode builder\n// Easily build a new opcode from a class\nfunction opcode_builder( Class, func, flags )\n{\n\tflags = flags || {};\n\tif ( func )\n\t{\n\t\t/*if ( func.pop )\n\t\t{\n\t\t\tflags.str = func;\n\t\t\tflags.func = common_func;\n\t\t}\n\t\telse\n\t\t{*/\n\t\tflags.func = func;\n\t\t//}\n\t}\n\treturn Class.subClass( flags );\n}\n\nmodule.exports = {\n\tOperand: Operand,\n\tVariable: Variable,\n\tOpcode: Opcode,\n\tStopper: Stopper,\n\tPauser: Pauser,\n\tPauserStorer: PauserStorer,\n\tBrancherLogic: BrancherLogic,\n\tBrancher: Brancher,\n\tBrancherStorer: BrancherStorer,\n\tStorer: Storer,\n\tCaller: Caller,\n\tCallerStorer: CallerStorer,\n\tContext: Context,\n\tRoutineContext: RoutineContext,\n\topcode_builder: opcode_builder,\n};\n", "/*\n\nZ-Machine opcodes\n=================\n\nCopyright (c) 2017 The ifvms.js team\nMIT licenced\nhttps://github.com/curiousdannii/ifvms.js\n\n*/\n\n'use strict';\n\n/*\n\nTODO:\n\tAbstract out the signed conversions such that they can be eliminated if possible\n\tdon't access memory directly\n\n*/\n\nvar AST = require( '../common/ast.js' ),\nVariable = AST.Variable,\nOpcode = AST.Opcode,\nStopper = AST.Stopper,\nPauser = AST.Pauser,\nPauserStorer = AST.PauserStorer,\nBrancher = AST.Brancher,\nBrancherStorer = AST.BrancherStorer,\nStorer = AST.Storer,\nCaller = AST.Caller,\nCallerStorer = AST.CallerStorer,\nopcode_builder = AST.opcode_builder,\n\n// Common functions, variables and opcodes\nsimple_func = function( a ) { return '' + a; },\nstack_var = new Variable( this.e, 0 ),\nalwaysbranch = opcode_builder( Brancher, function() { return 1; } ),\nnot = opcode_builder( Storer, function( a ) { return 'e.S2U(~' + a + ')'; } ),\n\n// Indirect storer opcodes - rather non-generic I'm afraid\n// Not used for inc/dec\n// @load (variable) -> (result)\n// @pull (variable)\n// @store (variable) value\nIndirect = Storer.subClass({\n\tstorer: 0,\n\n\tpost: function()\n\t{\n\t\tvar operands = this.operands,\n\t\top0 = operands[0],\n\t\top0isVar = op0 instanceof Variable;\n\n\t\t// Replace the indirect operand with a Variable, and set .indirect if needed\n\t\toperands[0] = new Variable( this.e, op0isVar ? op0 : op0.v );\n\t\tif ( op0isVar || op0.v === 0 )\n\t\t{\n\t\t\toperands[0].indirect = 1;\n\t\t}\n\n\t\t// Get the storer\n\t\tthis.storer = this.code === 142 ? operands.pop() : operands.shift();\n\n\t\t// @pull needs an added stack. If for some reason it was compiled with two operands this will break!\n\t\tif ( operands.length === 0 )\n\t\t{\n\t\t\toperands.push( stack_var );\n\t\t}\n\t},\n\n\tfunc: simple_func,\n}),\n\nIncdec = Opcode.subClass({\n\tfunc: function( variable )\n\t{\n\t\tvar varnum = variable.v - 1,\n\t\toperator = this.code % 2 ? 1 : -1;\n\n\t\t// Fallback to the runtime function if our variable is a variable operand itself\n\t\t// Or, if it's a global\n\t\tif ( variable instanceof Variable || varnum > 14 )\n\t\t{\n\t\t\treturn 'e.incdec(' + variable + ',' + operator + ')';\n\t\t}\n\n\t\treturn ( varnum < 0 ? 'e.s[e.sp-1]' : 'e.l[' + varnum + ']' ) + ( operator === 1 ? '++' : '--' );\n\t},\n}),\n\n// Version 3 @save/restore branch instead of store\nV3SaveRestore = Stopper.subClass({\n\tbrancher: 1,\n\n\ttoString: function()\n\t{\n\t\treturn 'e.stop=1;e.' + ( this.code === 181 ? 'save' : 'restore' ) + '(' + ( this.pc + 1 ) + ')';\n\t},\n}),\n\nV45Restore = opcode_builder( PauserStorer, function() { return 'e.restore(' + ( this.next - 1 ) + ')'; } ),\nV45Save = opcode_builder( PauserStorer, function() { return 'e.save(' + ( this.next - 1 ) + ')'; } );\n\n/*eslint brace-style: \"off\" */\n/*eslint indent: \"off\" */\n\nmodule.exports = function( version )\n{\n\nreturn {\n\n/* je */ 1: opcode_builder( Brancher, function() { return arguments.length === 2 ? this.args( '===' ) : 'e.jeq(' + this.args() + ')'; } ),\n/* jl */ 2: opcode_builder( Brancher, function( a, b ) { return a.U2S() + '<' + b.U2S(); } ),\n/* jg */ 3: opcode_builder( Brancher, function( a, b ) { return a.U2S() + '>' + b.U2S(); } ),\n// Too many U2S/S2U for these...\n/* dec_chk */ 4: opcode_builder( Brancher, function( variable, value ) { return 'e.U2S(e.incdec(' + variable + ',-1))<' + value.U2S(); } ),\n/* inc_chk */ 5: opcode_builder( Brancher, function( variable, value ) { return 'e.U2S(e.incdec(' + variable + ',1))>' + value.U2S(); } ),\n/* jin */ 6: opcode_builder( Brancher, function() { return 'e.jin(' + this.args() + ')'; } ),\n/* test */ 7: opcode_builder( Brancher, function() { return 'e.test(' + this.args() + ')'; } ),\n/* or */ 8: opcode_builder( Storer, function() { return this.args( '|' ); } ),\n/* and */ 9: opcode_builder( Storer, function() { return this.args( '&' ); } ),\n/* test_attr */ 10: opcode_builder( Brancher, function() { return 'e.test_attr(' + this.args() + ')'; } ),\n/* set_attr */ 11: opcode_builder( Opcode, function() { return 'e.set_attr(' + this.args() + ')'; } ),\n/* clear_attr */ 12: opcode_builder( Opcode, function() { return 'e.clear_attr(' + this.args() + ')'; } ),\n/* store */ 13: Indirect,\n/* insert_obj */ 14: opcode_builder( Opcode, function() { return 'e.insert_obj(' + this.args() + ')'; } ),\n/* loadw */ 15: opcode_builder( Storer, function( array, index ) { return 'e.m.getUint16(e.S2U(' + array + '+2*' + index.U2S() + '))'; } ),\n/* loadb */ 16: opcode_builder( Storer, function( array, index ) { return 'e.m.getUint8(e.S2U(' + array + '+' + index.U2S() + '))'; } ),\n/* get_prop */ 17: opcode_builder( Storer, function() { return 'e.get_prop(' + this.args() + ')'; } ),\n/* get_prop_addr */ 18: opcode_builder( Storer, function() { return 'e.find_prop(' + this.args() + ')'; } ),\n/* get_next_prop */ 19: opcode_builder( Storer, function() { return 'e.find_prop(' + this.args( ',0,' ) + ')'; } ),\n/* add */ 20: opcode_builder( Storer, function() { return 'e.S2U(' + this.args( '+' ) + ')'; } ),\n/* sub */ 21: opcode_builder( Storer, function() { return 'e.S2U(' + this.args( '-' ) + ')'; } ),\n/* mul */ 22: opcode_builder( Storer, function() { return 'e.S2U(' + this.args( '*' ) + ')'; } ),\n/* div */ 23: opcode_builder( Storer, function( a, b ) { return 'e.S2U(parseInt(' + a.U2S() + '/' + b.U2S() + '))'; } ),\n/* mod */ 24: opcode_builder( Storer, function( a, b ) { return 'e.S2U(' + a.U2S() + '%' + b.U2S() + ')'; } ),\n/* call_2s */ 25: CallerStorer,\n/* call_2n */ 26: Caller,\n/* set_colour */ 27: opcode_builder( Opcode, function() { return 'e.set_colour(' + this.args() + ')'; } ),\n/* throw */ 28: opcode_builder( Stopper, function( value, cookie ) { return 'while(e.frames.length+1>' + cookie + '){e.frameptr=e.frames.pop()}return ' + value; } ),\n/* jz */ 128: opcode_builder( Brancher, function( a ) { return a + '===0'; } ),\n/* get_sibling */ 129: opcode_builder( BrancherStorer, function( obj ) { return 'e.get_sibling(' + obj + ')'; } ),\n/* get_child */ 130: opcode_builder( BrancherStorer, function( obj ) { return 'e.get_child(' + obj + ')'; } ),\n/* get_parent */ 131: opcode_builder( Storer, function( obj ) { return 'e.get_parent(' + obj + ')'; } ),\n/* get_prop_length */ 132: opcode_builder( Storer, function( a ) { return 'e.get_prop_len(' + a + ')'; } ),\n/* inc */ 133: Incdec,\n/* dec */ 134: Incdec,\n/* print_addr */ 135: opcode_builder( Opcode, function( addr ) { return 'e.print(2,' + addr + ')'; } ),\n/* call_1s */ 136: CallerStorer,\n/* remove_obj */ 137: opcode_builder( Opcode, function( obj ) { return 'e.remove_obj(' + obj + ')'; } ),\n/* print_obj */ 138: opcode_builder( Opcode, function( obj ) { return 'e.print(3,' + obj + ')'; } ),\n/* ret */ 139: opcode_builder( Stopper, function( a ) { return 'return ' + a; } ),\n/* jump */ 140: opcode_builder( Stopper, function( a ) { return 'e.pc=' + a.U2S() + '+' + ( this.next - 2 ); } ),\n/* print_paddr */ 141: opcode_builder( Opcode, function( addr ) { return 'e.print(2,' + addr + '*' + this.e.addr_multipler + ')'; } ),\n/* load */ 142: Indirect.subClass( { storer: 1 } ),\n143: version < 5 ?\n\t/* not (v3/4) */ not :\n\t/* call_1n (v5/8) */ Caller,\n/* rtrue */ 176: opcode_builder( Stopper, function() { return 'return 1'; } ),\n/* rfalse */ 177: opcode_builder( Stopper, function() { return 'return 0'; } ),\n// Reconsider a generalised class for @print/@print_ret?\n/* print */ 178: opcode_builder( Opcode, function( text ) { return 'e.print(2,' + text + ')'; }, { printer: 1 } ),\n/* print_ret */ 179: opcode_builder( Stopper, function( text ) { return 'e.print(2,' + text + ');e.print(1,13);return 1'; }, { printer: 1 } ),\n/* nop */ 180: Opcode,\n/* save (v3/4) */ 181: version < 4 ?\n\tV3SaveRestore :\n\tV45Save,\n/* restore(v3/4) */ 182: version < 4 ?\n\tV3SaveRestore :\n\tV45Restore,\n/* restart */ 183: opcode_builder( Stopper, function() { return 'e.restart()'; } ),\n/* ret_popped */ 184: opcode_builder( Stopper, function( a ) { return 'return ' + a; }, { post: function() { this.operands.push( stack_var ); } } ),\n185: version < 5 ?\n\t/* pop (v3/4) */ opcode_builder( Opcode, function() { return 's[--e.sp]'; } ) :\n\t/* catch (v5/8) */ opcode_builder( Storer, function() { return 'e.frames.length+1'; } ),\n/* quit */ 186: opcode_builder( Pauser, function() { return 'e.quit=1;e.Glk.glk_exit()'; } ),\n/* new_line */ 187: opcode_builder( Opcode, function() { return 'e.print(1,13)'; } ),\n188: version < 4 ?\n\t/* show_status (v3) */ opcode_builder( Stopper, function() { return 'e.pc=' + this.next + ';e.v3_status()'; } ) :\n\t/* act as a nop in later versions */ Opcode,\n/* verify */ 189: alwaysbranch, // Actually check??\n/* piracy */ 191: alwaysbranch,\n/* call_vs */ 224: CallerStorer,\n/* storew */ 225: opcode_builder( Opcode, function( array, index, value ) { return 'e.ram.setUint16(e.S2U(' + array + '+2*' + index.U2S() + '),' + value + ')'; } ),\n/* storeb */ 226: opcode_builder( Opcode, function( array, index, value ) { return 'e.ram.setUint8(e.S2U(' + array + '+' + index.U2S() + '),' + value + ')'; } ),\n/* put_prop */ 227: opcode_builder( Opcode, function() { return 'e.put_prop(' + this.args() + ')'; } ),\n/* read */ 228: version < 5 ?\n\topcode_builder( Pauser, function() { return 'e.read(0,' + this.args() + ')'; } ) :\n\topcode_builder( PauserStorer, function() { return 'e.read(' + this.storer.v + ',' + this.args() + ')'; } ),\n/* print_char */ 229: opcode_builder( Opcode, function( a ) { return 'e.print(4,' + a + ')'; } ),\n/* print_num */ 230: opcode_builder( Opcode, function( a ) { return 'e.print(0,' + a.U2S() + ')'; } ),\n/* random */ 231: opcode_builder( Storer, function( a ) { return 'e.random(' + a.U2S() + ')'; } ),\n/* push */ 232: opcode_builder( Storer, simple_func, { post: function() { this.storer = stack_var; }, storer: 0 } ),\n/* pull */ 233: Indirect,\n/* split_window */ 234: opcode_builder( Opcode, function( lines ) { return 'e.split_window(' + lines + ')'; } ),\n/* set_window */ 235: opcode_builder( Opcode, function( wind ) { return 'e.set_window(' + wind + ')'; } ),\n/* call_vs2 */ 236: CallerStorer,\n/* erase_window */ 237: opcode_builder( Opcode, function( win ) { return 'e.erase_window(' + win.U2S() + ')'; } ),\n/* erase_line */ 238: opcode_builder( Opcode, function( a ) { return 'e.erase_line(' + a + ')'; } ),\n/* set_cursor */ 239: opcode_builder( Opcode, function( row, col ) { return 'e.set_cursor(' + row + '-1,' + col + '-1)'; } ),\n/* get_cursor */ 240: opcode_builder( Opcode, function( addr ) { return 'e.get_cursor(' + addr + ')'; } ),\n/* set_text_style */ 241: opcode_builder( Opcode, function( stylebyte ) { return 'e.set_style(' + stylebyte + ')'; } ),\n/* buffer_mode */ 242: Opcode, // We don't support non-buffered output\n/* output_stream */ 243: opcode_builder( Stopper, function() { return 'e.pc=' + this.next + ';e.output_stream(' + this.args() + ')'; } ),\n/* input_stream */ 244: opcode_builder( Pauser, function() { return 'e.input_stream(' + this.args() + ')'; } ),\n/* sound_effect */ 245: Opcode, // We don't support sounds\n/* read_char */ 246: opcode_builder( PauserStorer, function() { return 'e.read_char(' + this.storer.v + ',' + ( this.args() || '1' ) + ')'; } ),\n/* scan_table */ 247: opcode_builder( BrancherStorer, function() { return 'e.scan_table(' + this.args() + ')'; } ),\n/* not (v5/8) */ 248: not,\n/* call_vn */ 249: Caller,\n/* call_vn2 */ 250: Caller,\n/* tokenise */ 251: opcode_builder( Opcode, function() { return 'e.tokenise(' + this.args() + ')'; } ),\n/* encode_text */ 252: opcode_builder( Opcode, function() { return 'e.encode_text(' + this.args() + ')'; } ),\n/* copy_table */ 253: opcode_builder( Opcode, function() { return 'e.copy_table(' + this.args() + ')'; } ),\n/* print_table */ 254: opcode_builder( Opcode, function() { return 'e.print_table(' + this.args() + ')'; } ),\n/* check_arg_count */ 255: opcode_builder( Brancher, function( arg ) { return 'e.stack.getUint8(e.frameptr+5)&(1<<(' + arg + '-1))'; } ),\n/* save */ 1000: V45Save,\n/* restore */ 1001: V45Restore,\n/* log_shift */ 1002: opcode_builder( Storer, function( a, b ) { return 'e.S2U(e.log_shift(' + a + ',' + b.U2S() + '))'; } ),\n/* art_shift */ 1003: opcode_builder( Storer, function( a, b ) { return 'e.S2U(e.art_shift(' + a.U2S() + ',' + b.U2S() + '))'; } ),\n/* set_font */ 1004: opcode_builder( Storer, function( font ) { return 'e.set_font(' + font + ')'; } ),\n/* save_undo */ 1009: opcode_builder( Storer, function() { return 'e.save_undo(' + this.next + ',' + this.storer.v + ')'; } ),\n// As the standard says calling this without a save point is illegal, we don't need to actually store anything (but it must still be disassembled)\n/* restore_undo */ 1010: opcode_builder( Opcode, function() { return 'if(e.restore_undo())return'; }, { storer: 1 } ),\n/* print_unicode */ 1011: opcode_builder( Opcode, function( a ) { return 'e.print(1,' + a + ')'; } ),\n// Assume we can print and read all unicode characters rather than actually testing\n/* check_unicode */ 1012: opcode_builder( Storer, function() { return 3; } ),\n/* set_true_colour */ 1013: opcode_builder( Opcode, function() { return 'e.set_true_colour(' + this.args() + ')'; } ),\n/* sound_data */ 1014: Opcode.subClass( { brancher: 1 } ), // We don't support sounds (but disassemble the branch address)\n/* gestalt */ 1030: opcode_builder( Storer, function() { return 'e.gestalt(' + this.args() + ')'; } ),\n/* parchment */ //1031: opcode_builder( Storer, function() { return 'e.op_parchment(' + this.args() + ')'; } ),\n\n};\n\n};\n", "/*\n\nZ-Machine runtime functions\n===========================\n\nCopyright (c) 2020 The ifvms.js team\nMIT licenced\nhttps://github.com/curiousdannii/ifvms.js\n\n*/\n\n'use strict';\n\n/*\n\nTODO:\n\tSave/restore: table, name, prompt support\n\n*/\n\nconst file = require( '../common/file.js' )\nconst utils = require( '../common/utils.js' )\nconst extend = utils.extend\nconst U2S = utils.U2S16\nconst S2U = utils.S2U16\n\n// A clone function which ignores the properties we don't want to serialise\nfunction clone( obj )\n{\n\tconst recurse = obj => typeof obj === 'object' ? clone( obj ) : obj\n\tconst newobj = {}\n\n\tif ( Array.isArray( obj ) )\n\t{\n\t\treturn obj.map( recurse )\n\t}\n\n\tfor ( let prop in obj )\n\t{\n\t\tif ( prop !== 'buffer' && prop !== 'str' )\n\t\t{\n\t\t\tnewobj[prop] = recurse( obj[prop] )\n\t\t}\n\t}\n\treturn newobj\n}\n\n// Test whether we are running on a littleEndian system\nconst littleEndian = (function()\n{\n\tvar testUint8Array = new Uint8Array( 2 ),\n\ttestUint16Array = new Uint16Array( testUint8Array.buffer );\n\ttestUint16Array[0] = 1;\n\treturn testUint8Array[0] === 1;\n})()\n\nfunction fix_stack_endianness( view, start, end, auto )\n{\n\tif ( littleEndian && !auto )\n\t{\n\t\twhile ( start < end )\n\t\t{\n\t\t\tview.setUint16( start, view.getUint16( start, 1 ) );\n\t\t\tstart += 2;\n\t\t}\n\t}\n}\n\nmodule.exports = {\n\n\tart_shift: function( number, places )\n\t{\n\t\treturn places > 0 ? number << places : number >> -places;\n\t},\n\n\t// Call a routine\n\tcall: function( addr, storer, next, args )\n\t{\n\t\t// 6.4.3: Calls to 0 instead just store 0\n\t\tif ( addr === 0 )\n\t\t{\n\t\t\tif ( storer >= 0 )\n\t\t\t{\n\t\t\t\tthis.variable( storer, 0 );\n\t\t\t}\n\t\t\treturn this.pc = next;\n\t\t}\n\n\t\t// Get the number of locals and advance the pc\n\t\tthis.pc = addr * this.addr_multipler;\n\t\tvar locals_count = this.m.getUint8( this.pc++ ),\n\n\t\tstack = this.stack,\n\t\ti = 0,\n\n\t\t// Write the current stack use\n\t\tframeptr = this.frameptr;\n\t\tstack.setUint16( frameptr + 6, this.sp );\n\t\tthis.frames.push( frameptr );\n\n\t\t// Create a new frame\n\t\tframeptr = this.frameptr = this.s.byteOffset + this.sp * 2;\n\t\t// Return address\n\t\tstack.setUint32( frameptr, next << 8 );\n\t\t// Flags\n\t\tstack.setUint8( frameptr + 3, ( storer >= 0 ? 0 : 0x10 ) | locals_count );\n\t\t// Storer\n\t\tstack.setUint8( frameptr + 4, storer >= 0 ? storer : 0 );\n\t\t// Supplied arguments\n\t\tstack.setUint8( frameptr + 5, ( 1 << args.length ) - 1 );\n\n\t\t// Create the locals and stack\n\t\tthis.make_stacks();\n\t\tthis.sp = 0;\n\t\twhile ( i < locals_count )\n\t\t{\n\t\t\tthis.l[i] = i < args.length ? args[i] : ( this.version < 5 ? this.m.getUint16( this.pc + i * 2 ) : 0 );\n\t\t\ti++;\n\t\t}\n\t\tif ( this.version < 5 )\n\t\t{\n\t\t\tthis.pc += locals_count * 2;\n\t\t}\n\t},\n\n\tclear_attr: function( object, attribute )\n\t{\n\t\tvar addr = this.objects + ( this.version3 ? 9 : 14 ) * object + ( attribute / 8 ) | 0;\n\t\tthis.ram.setUint8( addr, this.m.getUint8( addr ) & ~( 0x80 >> attribute % 8 ) );\n\t},\n\n\tcopy_table: function( first, second, size )\n\t{\n\t\tsize = U2S( size );\n\t\tvar ram = this.ram,\n\t\ti = 0,\n\t\tallowcorrupt = size < 0;\n\t\tsize = Math.abs( size );\n\n\t\t// Simple case, zeroes\n\t\tif ( second === 0 )\n\t\t{\n\t\t\twhile ( i < size )\n\t\t\t{\n\t\t\t\tram.setUint8( first + i++, 0 );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif ( allowcorrupt )\n\t\t{\n\t\t\twhile ( i < size )\n\t\t\t{\n\t\t\t\tram.setUint8( second + i, this.m.getUint8( first + i++ ) );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tram.setUint8Array( second, this.m.getUint8Array( first, size ) );\n\t\t}\n\t},\n\n\tdo_autorestore: function( snapshot )\n\t{\n\t\tconst Glk = this.Glk\n\n\t\t// Restore Glk\n\t\tGlk.restore_allstate( snapshot.glk )\n\n\t\t// Get references to our Glk objects\n\t\tthis.io = snapshot.io\n\t\tconst RockBox = new Glk.RefBox()\n\t\tlet obj\n\t\twhile ( obj = Glk.glk_window_iterate( obj, RockBox ) )\n\t\t{\n\t\t\tif ( RockBox.value === 201 )\n\t\t\t{\n\t\t\t\tthis.mainwin = obj\n\t\t\t\tif ( obj.linebuf )\n\t\t\t\t{\n\t\t\t\t\tsnapshot.read_data.buffer = obj.linebuf\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( RockBox.value === 202 )\n\t\t\t{\n\t\t\t\tthis.statuswin = obj\n\t\t\t}\n\t\t\tif ( RockBox.value === 203 )\n\t\t\t{\n\t\t\t\tthis.upperwin = obj\n\t\t\t}\n\t\t}\n\t\tobj = null\n\t\twhile ( obj = Glk.glk_stream_iterate( obj, RockBox ) )\n\t\t{\n\t\t\tif ( RockBox.value === 210 )\n\t\t\t{\n\t\t\t\tthis.io.streams[2].str = obj\n\t\t\t}\n\t\t\tif ( RockBox.value === 211 )\n\t\t\t{\n\t\t\t\tthis.io.streams[4].str = obj\n\t\t\t}\n\t\t}\n\n\t\t// Restart and restore the RAM and stacks\n\t\tthis.restart(1)\n\t\tthis.restore_file(this.options.Dialog.streaming ? new Uint8Array(snapshot.ram) : Uint8Array.from(snapshot.ram), 1)\n\n\t\t// Set remaining data from the snapshot\n\t\tthis.read_data = snapshot.read_data\n\t\tthis.xorshift_seed = snapshot.xorshift_seed\n\t},\n\n\tdo_autosave: function( save )\n\t{\n\t\tif ( !this.options.Dialog )\n\t\t{\n\t\t\tthrow new Error( 'A reference to Dialog is required' )\n\t\t}\n\n\t\tlet snapshot = null\n\t\tif ( ( save || 0 ) >= 0 )\n\t\t{\n\t\t\tconst ram = this.save_file(this.pc, 1)\n\t\t\tsnapshot = {\n\t\t\t\tglk: this.Glk.save_allstate(),\n\t\t\t\tio: clone( this.io ),\n\t\t\t\tram: this.options.Dialog.streaming ? ram : Array.from(new Uint8Array(ram)),\n\t\t\t\tread_data: clone( this.read_data ),\n\t\t\t\txorshift_seed: this.xorshift_seed,\n\t\t\t}\n\t\t}\n\n\t\tthis.options.Dialog.autosave_write( this.signature, snapshot )\n\t},\n\n\tencode_text: function( zscii, length, from, target )\n\t{\n\t\tthis.ram.setUint8Array( target, this.encode( this.m.getUint8Array( zscii + from, length ) ) );\n\t},\n\n\t// Access the extension table\n\textension_table: function( word, value )\n\t{\n\t\tvar addr = this.extension;\n\t\tif ( !addr || word > this.extension_count )\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\t\taddr += 2 * word;\n\t\tif ( value === undefined )\n\t\t{\n\t\t\treturn this.m.getUint16( addr );\n\t\t}\n\t\tthis.ram.setUint16( addr, value );\n\t},\n\n\t// Find the address of a property, or given the previous property, the number of the next\n\tfind_prop: function( object, property, prev )\n\t{\n\t\tvar memory = this.m,\n\t\tversion3 = this.version3,\n\n\t\tthis_property_byte, this_property,\n\t\tlast_property = 0,\n\n\t\t// Get this property table\n\t\tproperties = memory.getUint16( this.objects + ( version3 ? 9 : 14 ) * object + ( version3 ? 7 : 12 ) );\n\n\t\t// Skip over the object's short name\n\t\tproperties += memory.getUint8( properties ) * 2 + 1;\n\n\t\t// Run through the properties\n\t\twhile ( 1 )\n\t\t{\n\t\t\tthis_property_byte = memory.getUint8( properties );\n\t\t\tthis_property = this_property_byte & ( version3 ? 0x1F : 0x3F );\n\n\t\t\t// Found the previous property, so return this one's number\n\t\t\tif ( last_property === prev )\n\t\t\t{\n\t\t\t\treturn this_property;\n\t\t\t}\n\t\t\t// Found the property! Return its address\n\t\t\tif ( this_property === property )\n\t\t\t{\n\t\t\t\t// Must include the offset\n\t\t\t\treturn properties + ( !version3 && this_property_byte & 0x80 ? 2 : 1 );\n\t\t\t}\n\t\t\t// Gone past the property\n\t\t\tif ( this_property < property )\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// Go to next property\n\t\t\tlast_property = this_property;\n\n\t\t\t// Calculate the size of this property and skip to the next\n\t\t\tif ( version3 )\n\t\t\t{\n\t\t\t\tproperties += ( this_property_byte >> 5 ) + 2;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ( this_property_byte & 0x80 )\n\t\t\t\t{\n\t\t\t\t\tthis_property = memory.getUint8( properties + 1 ) & 0x3F;\n\t\t\t\t\tproperties += this_property ? this_property + 2 : 66;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tproperties += this_property_byte & 0x40 ? 3 : 2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// 1.2 spec @gestalt\n\tgestalt: function( id /*, arg*/ )\n\t{\n\t\tswitch ( id )\n\t\t{\n\t\t\tcase 1:\n\t\t\t\treturn 0x0102;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Get the first child of an object\n\tget_child: function( obj )\n\t{\n\t\tif ( this.version3 )\n\t\t{\n\t\t\treturn this.m.getUint8( this.objects + 9 * obj + 6 );\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.m.getUint16( this.objects + 14 * obj + 10 );\n\t\t}\n\t},\n\n\tget_sibling: function( obj )\n\t{\n\t\tif ( this.version3 )\n\t\t{\n\t\t\treturn this.m.getUint8( this.objects + 9 * obj + 5 );\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.m.getUint16( this.objects + 14 * obj + 8 );\n\t\t}\n\t},\n\n\tget_parent: function( obj )\n\t{\n\t\tif ( this.version3 )\n\t\t{\n\t\t\treturn this.m.getUint8( this.objects + 9 * obj + 4 );\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.m.getUint16( this.objects + 14 * obj + 6 );\n\t\t}\n\t},\n\n\tget_prop: function( object, property )\n\t{\n\t\tvar memory = this.m,\n\n\t\t// Try to find the property\n\t\taddr = this.find_prop( object, property ),\n\t\tlen;\n\n\t\t// If we have the property\n\t\tif ( addr )\n\t\t{\n\t\t\tlen = memory.getUint8( addr - 1 );\n\t\t\t// Assume we're being called for a valid short property\n\t\t\treturn memory[ ( this.version3 ? len >> 5 : len & 0x40 ) ? 'getUint16' : 'getUint8' ]( addr );\n\t\t}\n\n\t\t// Use the default properties table\n\t\t// Remember that properties are 1-indexed\n\t\treturn memory.getUint16( this.properties + 2 * ( property - 1 ) );\n\t},\n\n\t// Get the length of a property\n\t// This opcode expects the address of the property data, not a property block\n\tget_prop_len: function( addr )\n\t{\n\t\t// Spec 1.1\n\t\tif ( addr === 0 )\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar value = this.m.getUint8( addr - 1 );\n\n\t\t// Version 3\n\t\tif ( this.version3 )\n\t\t{\n\t\t\treturn ( value >> 5 ) + 1;\n\t\t}\n\n\t\t// Two size/number bytes\n\t\tif ( value & 0x80 )\n\t\t{\n\t\t\tvalue &= 0x3F;\n\t\t\treturn value === 0 ? 64 : value;\n\t\t}\n\t\t// One byte size/number\n\t\treturn value & 0x40 ? 2 : 1;\n\t},\n\n\t// Quick hack for @inc/@dec/@inc_chk/@dec_chk\n\tincdec: function( varnum, change )\n\t{\n\t\tif ( varnum === 0 )\n\t\t{\n\t\t\tthis.s[this.sp - 1] += change;\n\t\t\treturn this.s[this.sp - 1];\n\t\t}\n\t\tif ( --varnum < 15 )\n\t\t{\n\t\t\tthis.l[varnum] += change;\n\t\t\treturn this.l[varnum];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar offset = this.globals + ( varnum - 15 ) * 2;\n\t\t\tthis.ram.setUint16( offset, this.m.getUint16( offset ) + change );\n\t\t\treturn this.ram.getUint16( offset );\n\t\t}\n\t},\n\n\t// Indirect variables\n\tindirect: function( variable, value )\n\t{\n\t\tif ( variable === 0 )\n\t\t{\n\t\t\tif ( arguments.length > 1 )\n\t\t\t{\n\t\t\t\treturn this.s[this.sp - 1] = value;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn this.s[this.sp - 1];\n\t\t\t}\n\t\t}\n\t\treturn this.variable( variable, value );\n\t},\n\n\tinsert_obj: function( obj, dest )\n\t{\n\t\t// First remove the obj from wherever it was\n\t\tthis.remove_obj( obj );\n\t\t// Now add it to the destination\n\t\tthis.set_family( obj, dest, dest, obj, obj, this.get_child( dest ) );\n\t},\n\n\t// @jeq\n\tjeq: function()\n\t{\n\t\tvar i = 1;\n\n\t\t// Account for many arguments\n\t\twhile ( i < arguments.length )\n\t\t{\n\t\t\tif ( arguments[i++] === arguments[0] )\n\t\t\t{\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t},\n\n\tjin: function( child, parent )\n\t{\n\t\treturn this.get_parent( child ) === parent;\n\t},\n\n\tlog: function( message )\n\t{\n\t\tif ( this.options.GlkOte )\n\t\t{\n\t\t\tthis.options.GlkOte.log( message );\n\t\t}\n\t},\n\n\tlog_shift: function( number, places )\n\t{\n\t\treturn places > 0 ? number << places : number >>> -places;\n\t},\n\n\tmake_stacks: function()\n\t{\n\t\tvar locals_count = this.stack.getUint8( this.frameptr + 3 ) & 0x0F;\n\t\tthis.l = new Uint16Array( this.stack.buffer, this.frameptr + 8, locals_count );\n\t\tthis.s = new Uint16Array( this.stack.buffer, this.frameptr + 8 + locals_count * 2 );\n\t},\n\n\tput_prop: function( object, property, value )\n\t{\n\t\t// Try to find the property\n\t\tvar addr = this.find_prop( object, property ),\n\t\tlen;\n\n\t\tif ( addr )\n\t\t{\n\t\t\tlen = this.m.getUint8( addr - 1 );\n\n\t\t\t// Assume we're being called for a valid short property\n\t\t\tthis.ram[ ( this.version3 ? len >> 5 : len & 0x40 ) ? 'setUint16' : 'setUint8' ]( addr, value );\n\t\t}\n\t},\n\n\trandom: function( range )\n\t{\n\t\tvar seed = this.xorshift_seed;\n\n\t\t// Switch to the Xorshift RNG (or switch off if range == 0)\n\t\tif ( range < 1 )\n\t\t{\n\t\t\tthis.xorshift_seed = range;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Pure randomness\n\t\tif ( seed === 0 )\n\t\t{\n\t\t\treturn 1 + ( Math.random() * range ) | 0;\n\t\t}\n\n\t\t// Based on the discussions in this forum topic, we will not implement the sequential mode recommended in the standard\n\t\t// http://www.intfiction.org/forum/viewtopic.php?f=38&t=16023\n\n\t\t// Instead implement a 32 bit Xorshift generator\n\t\tseed ^= ( seed << 13 );\n\t\tseed ^= ( seed >> 17 );\n\t\tthis.xorshift_seed = ( seed ^= ( seed << 5 ) );\n\t\treturn 1 + ( ( seed & 0x7FFF ) % range );\n\t},\n\n\tremove_obj: function( obj )\n\t{\n\t\tvar parent = this.get_parent( obj ),\n\t\tolder_sibling,\n\t\tyounger_sibling,\n\t\ttemp_younger;\n\n\t\t// No parent, do nothing\n\t\tif ( parent === 0 )\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tolder_sibling = this.get_child( parent );\n\t\tyounger_sibling = this.get_sibling( obj );\n\n\t\t// obj is first child\n\t\tif ( older_sibling === obj )\n\t\t{\n\t\t\tthis.set_family( obj, 0, parent, younger_sibling );\n\t\t}\n\t\t// obj isn't first child, so fix the older sibling\n\t\telse\n\t\t{\n\t\t\t// Go through the tree until we find the older sibling\n\t\t\twhile ( 1 )\n\t\t\t{\n\t\t\t\ttemp_younger = this.get_sibling( older_sibling );\n\t\t\t\tif ( temp_younger === obj )\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tolder_sibling = temp_younger;\n\t\t\t}\n\t\t\tthis.set_family( obj, 0, 0, 0, older_sibling, younger_sibling );\n\t\t}\n\t},\n\n\t// (Re)start the VM\n\trestart: function(autorestoring)\n\t{\n\t\tvar ram = this.ram,\n\t\tversion = ram.getUint8( 0x00 ),\n\t\tversion3 = version === 3,\n\t\taddr_multipler = version3 ? 2 : ( version === 8 ? 8 : 4 ),\n\t\tflags2 = ram.getUint8( 0x11 ),\n\t\tproperty_defaults = ram.getUint16( 0x0A ),\n\t\textension = ( version > 4 ) ? ram.getUint16( 0x36 ) : 0,\n\t\tstack = utils.MemoryView( this.options.stack_len );\n\n\t\t// Reset the RAM, but preserve flags 2\n\t\tram.setUint8Array( 0, this.origram );\n\t\tram.setUint8( 0x11, flags2 );\n\n\t\textend( this, {\n\n\t\t\t// Locals and stacks of various kinds\n\t\t\tstack: stack,\n\t\t\tframeptr: 0,\n\t\t\tframes: [],\n\t\t\ts: new Uint16Array( stack.buffer, 8 ),\n\t\t\tsp: 0,\n\t\t\tl: [],\n\t\t\tundo: [],\n\t\t\tundo_len: 0,\n\t\t\t\n\t\t\tglk_blocking_call: null,\n\n\t\t\t// Get some header variables\n\t\t\tversion: version,\n\t\t\tversion3: version3,\n\t\t\tpc: ram.getUint16( 0x06 ),\n\t\t\tproperties: property_defaults,\n\t\t\tobjects: property_defaults + ( version3 ? 53 : 112 ), // 62-9 or 126-14 - if we take this now then we won't need to always decrement the object number\n\t\t\tglobals: ram.getUint16( 0x0C ),\n\t\t\t// staticmem: set in prepare()\n\t\t\teof: ( ram.getUint16( 0x1A ) || 65536 ) * addr_multipler,\n\t\t\textension: extension,\n\t\t\textension_count: extension ? ram.getUint16( extension ) : 0,\n\n\t\t\t// Routine and string multiplier\n\t\t\taddr_multipler: addr_multipler,\n\n\t\t\t// Opcodes for this version of the Z-Machine\n\t\t\topcodes: require( './opcodes.js' )( version ),\n\n\t\t});\n\n\t\tthis.init_text();\n\t\tif (!autorestoring)\n\t\t{\n\t\t\tthis.init_io()\n\t\t}\n\n\t\t// Update the header\n\t\tthis.update_header();\n\t},\n\n\t// Request a restore\n\trestore: function( pc )\n\t{\n\t\tthis.pc = pc;\n\t\tthis.fileref_create_by_prompt({\n\t\t\tfunc: 'restore',\n\t\t\tmode: 0x02,\n\t\t\tusage: 0x01,\n\t\t});\n\t},\n\n\trestore_file: function( data, autorestoring )\n\t{\n\t\tvar ram = this.ram,\n\t\tquetzal = new file.Quetzal( data ),\n\t\tqmem = quetzal.memory,\n\t\tstack = this.stack,\n\t\tflags2 = ram.getUint8( 0x11 ),\n\t\ttemp,\n\t\ti = 0, j = 0;\n\t\t\n\t\t// Check this is a savefile for this story\n\t\tif ( ram.getUint16( 0x02 ) !== quetzal.release || ram.getUint16( 0x1C ) !== quetzal.checksum )\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\t\twhile ( i < 6 )\n\t\t{\n\t\t\tif ( ram.getUint8( 0x12 + i ) !== quetzal.serial[i++] )\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t\ti = 0;\n\n\t\t// Memory chunk\n\t\t// Reset the RAM\n\t\tram.setUint8Array( 0, this.origram );\n\t\tif ( quetzal.compressed )\n\t\t{\n\t\t\twhile ( i < qmem.length )\n\t\t\t{\n\t\t\t\ttemp = qmem[i++];\n\t\t\t\t// Same memory\n\t\t\t\tif ( temp === 0 )\n\t\t\t\t{\n\t\t\t\t\tj += 1 + qmem[i++];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tram.setUint8( j, temp ^ this.origram[j++] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tram.setUint8Array( 0, qmem );\n\t\t}\n\t\t// Preserve flags 2\n\t\tram.setUint8( 0x11, flags2 );\n\n\t\t// Stacks\n\t\tstack.setUint8Array( 0, quetzal.stacks );\n\t\tthis.frames = [];\n\t\ti = 0;\n\t\twhile ( i < quetzal.stacks.byteLength )\n\t\t{\n\t\t\tthis.frameptr = i;\n\t\t\tthis.frames.push( i );\n\t\t\t// Swap the bytes of the locals and stacks\n\t\t\tfix_stack_endianness( stack, j = i + 8, j += ( stack.getUint8( i + 3 ) & 0x0F ) * 2, autorestoring )\n\t\t\tfix_stack_endianness( stack, j, j += stack.getUint16( i + 6 ) * 2, autorestoring )\n\t\t\ti = j;\n\t\t}\n\t\tthis.frames.pop();\n\t\tthis.sp = stack.getUint16( this.frameptr + 6 );\n\t\tthis.make_stacks();\n\n\t\tthis.pc = quetzal.pc;\n\t\tthis.update_header();\n\n\t\t// Collapse the upper window (8.6.1.3)\n\t\tif ( this.version3 )\n\t\t{\n\t\t\tthis.split_window( 0 );\n\t\t}\n\n\t\treturn 2;\n\t},\n\n\trestore_undo: function()\n\t{\n\t\tif ( this.undo.length === 0 )\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar state = this.undo.pop();\n\t\tthis.frameptr = state.frameptr;\n\t\tthis.pc = state.pc;\n\t\tthis.undo_len -= ( state.ram.byteLength + state.stack.byteLength );\n\n\t\t// Replace the ram, preserving flags 2\n\t\tstate.ram[0x11] = this.m.getUint8( 0x11 );\n\t\tthis.ram.setUint8Array( 0, state.ram );\n\n\t\t// Fix up the stack\n\t\tthis.frames = state.frames;\n\t\tthis.sp = state.sp;\n\t\tthis.stack.setUint8Array( 0, state.stack );\n\t\tthis.make_stacks();\n\n\t\tthis.variable( state.var, 2 );\n\t\treturn 1;\n\t},\n\n\t// Return from a routine\n\tret: function( result )\n\t{\n\t\tvar stack = this.stack,\n\n\t\t// Get the storer and return pc from this frame\n\t\tframeptr = this.frameptr,\n\t\tstorer = stack.getUint8( frameptr + 3 ) & 0x10 ? -1 : stack.getUint8( frameptr + 4 );\n\t\tthis.pc = stack.getUint32( frameptr ) >> 8;\n\n\t\t// Recreate the locals and stacks from the previous frame\n\t\tframeptr = this.frameptr = this.frames.pop();\n\t\tthis.make_stacks();\n\t\tthis.sp = stack.getUint16( frameptr + 6 );\n\n\t\t// Store the result if there is one\n\t\tif ( storer >= 0 )\n\t\t{\n\t\t\tthis.variable( storer, result || 0 );\n\t\t}\n\t},\n\n\t// pc is the address of the storer operand (or branch in v3)\n\tsave: function( pc )\n\t{\n\t\tthis.pc = pc;\n\t\tthis.fileref_create_by_prompt({\n\t\t\tfunc: 'save',\n\t\t\tmode: 0x01,\n\t\t\tusage: 0x01,\n\t\t});\n\t},\n\t\n\tsave_file: function( pc, autosaving )\n\t{\n\t\tvar memory = this.m,\n\t\tquetzal = new file.Quetzal(),\n\t\tstack = utils.MemoryView( this.stack.buffer.slice() ),\n\t\tzeroes = 0,\n\t\ti, j,\n\t\tframeptr = this.frameptr,\n\t\tabyte;\n\n\t\t// IFhd chunk\n\t\tquetzal.release = memory.getUint16( 0x02 );\n\t\tquetzal.serial = memory.getUint8Array( 0x12, 6 );\n\t\tquetzal.checksum = memory.getUint16( 0x1C );\n\t\tquetzal.pc = pc;\n\n\t\t// Memory chunk\n\t\tif ( autosaving )\n\t\t{\n\t\t\tquetzal.memory = this.m.getUint8Array( 0, this.staticmem )\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst compressed_mem = []\n\t\t\tquetzal.compressed = 1;\n\t\t\tfor ( i = 0; i < this.staticmem; i++ )\n\t\t\t{\n\t\t\t\tabyte = memory.getUint8( i ) ^ this.origram[i];\n\t\t\t\tif ( abyte === 0 )\n\t\t\t\t{\n\t\t\t\t\tif ( ++zeroes === 256 )\n\t\t\t\t\t{\n\t\t\t\t\t\tcompressed_mem.push( 0, 255 );\n\t\t\t\t\t\tzeroes = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif ( zeroes )\n\t\t\t\t\t{\n\t\t\t\t\t\tcompressed_mem.push( 0, zeroes - 1 );\n\t\t\t\t\t\tzeroes = 0;\n\t\t\t\t\t}\n\t\t\t\t\tcompressed_mem.push( abyte );\n\t\t\t\t}\n\t\t\t}\n\t\t\tquetzal.memory = compressed_mem;\n\t\t}\n\n\t\t// Stacks\n\t\t// Set the current sp\n\t\tstack.setUint16( frameptr + 6, this.sp );\n\n\t\t// Swap the bytes of the locals and stacks\n\t\tif ( littleEndian && !autosaving )\n\t\t{\n\t\t\tconst frames = this.frames.slice()\n\t\t\tframes.push( frameptr )\n\t\t\tfor ( i = 0; i < frames.length; i++ )\n\t\t\t{\n\t\t\t\tframeptr = frames[i];\n\t\t\t\tfix_stack_endianness( stack, j = frameptr + 8, j += ( stack.getUint8( frameptr + 3 ) & 0x0F ) * 2 );\n\t\t\t\tfix_stack_endianness( stack, j, j += stack.getUint16( frameptr + 6 ) * 2 );\n\t\t\t}\n\t\t}\n\t\tquetzal.stacks = stack.getUint8Array( 0, this.frameptr + 8 + ( stack.getUint8( frameptr + 3 ) & 0x0F ) * 2 + this.sp * 2 );\n\n\t\treturn quetzal.write();\n\t},\n\t\n\tsave_restore_handler: function( str )\n\t{\n\t\tvar memory = this.m,\n\t\tGlk = this.Glk,\n\t\tresult = 0,\n\t\tbuffer = [],\n\t\ttemp, iftrue, offset;\n\t\t\n\t\tif ( str )\n\t\t{\n\t\t\t// Save\n\t\t\tif ( this.fileref_data.func === 'save' )\n\t\t\t{\n\t\t\t\tGlk.glk_put_buffer_stream( str, new Uint8Array( this.save_file( this.pc ) ) );\n\t\t\t\tresult = 1;\n\t\t\t}\n\t\t\t// Restore\n\t\t\telse\n\t\t\t{\n\t\t\t\tbuffer = new Uint8Array( 128 * 1024 );\n\t\t\t\tGlk.glk_get_buffer_stream( str, buffer );\n\t\t\t\tresult = this.restore_file( buffer.buffer );\n\t\t\t}\n\t\t\tGlk.glk_stream_close( str );\n\t\t}\n\t\t\n\t\t// Store the result / branch in z3\n\t\tif ( this.version3 )\n\t\t{\n\t\t\t// Calculate the branch\n\t\t\ttemp = memory.getUint8( this.pc++ );\n\t\t\tiftrue = temp & 0x80;\n\t\t\toffset = temp & 0x40 ?\n\t\t\t\t// single byte address\n\t\t\t\ttemp & 0x3F :\n\t\t\t\t// word address, but first get the second byte of it\n\t\t\t\t( temp << 8 | memory.getUint8( this.pc++ ) ) << 18 >> 18;\n\n\t\t\tif ( !result === !iftrue )\n\t\t\t{\n\t\t\t\tif ( offset === 0 || offset === 1 )\n\t\t\t\t{\n\t\t\t\t\tthis.ret( offset );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.pc += offset - 2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.variable( memory.getUint8( this.pc++ ), result );\n\t\t}\n\t},\n\n\tsave_undo: function( pc, variable )\n\t{\n\t\t// Drop an old undo state if we've reached the limit, but always save at least one state\n\t\tvar state\n\t\tif ( this.undo_len > this.options.undo_len )\n\t\t{\n\t\t\tstate = this.undo.shift()\n\t\t\tthis.undo_len -= ( state.ram.byteLength + state.stack.byteLength )\n\t\t}\n\t\tstate = {\n\t\t\tframeptr: this.frameptr,\n\t\t\tframes: this.frames.slice(),\n\t\t\tpc: pc,\n\t\t\tram: this.m.getUint8Array( 0, this.staticmem ),\n\t\t\tsp: this.sp,\n\t\t\tstack: this.stack.getUint8Array( 0, this.s.byteOffset + this.sp * 2 ),\n\t\t\tvar: variable,\n\t\t}\n\t\tthis.undo_len += ( state.ram.byteLength + state.stack.byteLength )\n\t\tthis.undo.push( state )\n\t\treturn 1\n\t},\n\n\tscan_table: function( key, addr, length, form )\n\t{\n\t\tform = form || 0x82;\n\t\tvar memoryfunc = form & 0x80 ? 'getUint16' : 'getUint8';\n\t\tform &= 0x7F;\n\t\tlength = addr + length * form;\n\n\t\twhile ( addr < length )\n\t\t{\n\t\t\tif ( this.m[memoryfunc]( addr ) === key )\n\t\t\t{\n\t\t\t\treturn addr;\n\t\t\t}\n\t\t\taddr += form;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tset_attr: function( object, attribute )\n\t{\n\t\tvar addr = this.objects + ( this.version3 ? 9 : 14 ) * object + ( attribute / 8 ) | 0;\n\t\tthis.ram.setUint8( addr, this.m.getUint8( addr ) | 0x80 >> attribute % 8 );\n\t},\n\n\tset_family: function( obj, newparent, parent, child, bigsis, lilsis )\n\t{\n\t\tvar ram = this.ram,\n\t\tobjects = this.objects;\n\n\t\tif ( this.version3 )\n\t\t{\n\t\t\t// Set the new parent of the obj\n\t\t\tram.setUint8( objects + 9 * obj + 4, newparent );\n\t\t\t// Update the parent's first child if needed\n\t\t\tif ( parent )\n\t\t\t{\n\t\t\t\tram.setUint8( objects + 9 * parent + 6, child );\n\t\t\t}\n\t\t\t// Update the little sister of a big sister\n\t\t\tif ( bigsis )\n\t\t\t{\n\t\t\t\tram.setUint8( objects + 9 * bigsis + 5, lilsis );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Set the new parent of the obj\n\t\t\tram.setUint16( objects + 14 * obj + 6, newparent );\n\t\t\t// Update the parent's first child if needed\n\t\t\tif ( parent )\n\t\t\t{\n\t\t\t\tram.setUint16( objects + 14 * parent + 10, child );\n\t\t\t}\n\t\t\t// Update the little sister of a big sister\n\t\t\tif ( bigsis )\n\t\t\t{\n\t\t\t\tram.setUint16( objects + 14 * bigsis + 8, lilsis );\n\t\t\t}\n\t\t}\n\t},\n\n\ttest: function( bitmap, flag )\n\t{\n\t\treturn ( bitmap & flag ) === flag;\n\t},\n\n\ttest_attr: function( object, attribute )\n\t{\n\t\treturn ( this.m.getUint8( this.objects + ( this.version3 ? 9 : 14 ) * object + ( attribute / 8 ) | 0 ) << attribute % 8 ) & 0x80;\n\t},\n\n\t// Read or write a variable\n\tvariable: function( variable, value )\n\t{\n\t\tvar havevalue = value !== undefined,\n\t\toffset;\n\t\tif ( variable === 0 )\n\t\t{\n\t\t\tif ( havevalue )\n\t\t\t{\n\t\t\t\tthis.s[this.sp++] = value;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn this.s[--this.sp];\n\t\t\t}\n\t\t}\n\t\telse if ( --variable < 15 )\n\t\t{\n\t\t\tif ( havevalue )\n\t\t\t{\n\t\t\t\tthis.l[variable] = value;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn this.l[variable];\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\toffset = this.globals + ( variable - 15 ) * 2;\n\t\t\tif ( havevalue )\n\t\t\t{\n\t\t\t\tthis.ram.setUint16( offset, value );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn this.m.getUint16( offset );\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t},\n\n\t// Utilities for signed arithmetic\n\tU2S: U2S,\n\tS2U: S2U,\n\n};\n", "/*\n\nZ-Machine text functions\n========================\n\nCopyright (c) 2017 The ifvms.js team\nMIT licenced\nhttps://github.com/curiousdannii/ifvms.js\n\n*/\n\n/*\n\nTODO:\n\tConsider quote suggestions from 1.1 spec\n\n*/\n\nmodule.exports = {\n\n\tinit_text: function()\n\t{\n\t\tvar self = this,\n\t\tmemory = this.m,\n\n\t\talphabet_addr = ( this.version > 4 ) && memory.getUint16( 0x34 ),\n\t\tunicode_addr = this.extension_table( 3 ),\n\t\tunicode_len = unicode_addr && memory.getUint8( unicode_addr++ );\n\n\t\tthis.abbr_addr = memory.getUint16( 0x18 );\n\n\t\t// Generate alphabets\n\t\tfunction make_alphabet( data )\n\t\t{\n\t\t\tvar alphabets = [[], [], []],\n\t\t\ti = 0;\n\t\t\twhile ( i < 78 )\n\t\t\t{\n\t\t\t\talphabets[( i / 26 ) | 0][i % 26] = data[ i++ ];\n\t\t\t}\n\t\t\t// A2->7 is always a newline\n\t\t\talphabets[2][1] = 13;\n\t\t\tself.alphabets = alphabets;\n\t\t}\n\n\t\t// Make the unicode tables\n\t\tfunction make_unicode( data )\n\t\t{\n\t\t\tvar table = { 13: '\\r' }, // New line conversion\n\t\t\treverse = { 13: 13 },\n\t\t\ti = 0;\n\t\t\twhile ( i < data.length )\n\t\t\t{\n\t\t\t\ttable[155 + i] = String.fromCharCode( data[i] );\n\t\t\t\treverse[data[i]] = 155 + i++;\n\t\t\t}\n\t\t\ti = 32;\n\t\t\twhile ( i < 127 )\n\t\t\t{\n\t\t\t\ttable[i] = String.fromCharCode( i );\n\t\t\t\treverse[i] = i++;\n\t\t\t}\n\t\t\tself.unicode_table = table;\n\t\t\tself.reverse_unicode_table = reverse;\n\t\t}\n\n\t\t// Check for custom alphabets\n\t\tmake_alphabet( alphabet_addr ? memory.getUint8Array( alphabet_addr, 78 )\n\t\t\t// Or use the standard alphabet\n\t\t\t: this.text_to_zscii( 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ \\r0123456789.,!?_#\\'\"/\\\\-:()', 1 ) );\n\n\t\t// Check for a custom unicode table\n\t\tmake_unicode( unicode_addr ? memory.getUint16Array( unicode_addr, unicode_len )\n\t\t\t// Or use the default\n\t\t\t: this.text_to_zscii( unescape( '%E4%F6%FC%C4%D6%DC%DF%BB%AB%EB%EF%FF%CB%CF%E1%E9%ED%F3%FA%FD%C1%C9%CD%D3%DA%DD%E0%E8%EC%F2%F9%C0%C8%CC%D2%D9%E2%EA%EE%F4%FB%C2%CA%CE%D4%DB%E5%C5%F8%D8%E3%F1%F5%C3%D1%D5%E6%C6%E7%C7%FE%F0%DE%D0%A3%u0153%u0152%A1%BF' ), 1 ) );\n\n\t\t// Parse the standard dictionary\n\t\tthis.dictionaries = {};\n\t\tthis.dict = memory.getUint16( 0x08 );\n\t\tthis.parse_dict( this.dict );\n\n\t\t// Optimise our own functions\n\t\t/*if ( DEBUG )\n\t\t{\n\t\t\tif ( !debugflags.nooptimise )\n\t\t\toptimise_obj( this, 'TEXT' );\n\t\t}*/\n\t},\n\n\t// Decode Z-chars into ZSCII and then Unicode\n\tdecode: function( addr, length )\n\t{\n\t\tvar memory = this.m,\n\n\t\tstart_addr = addr,\n\t\ttemp,\n\t\tbuffer = [],\n\t\ti = 0,\n\t\tzchar,\n\t\talphabet = 0,\n\t\tresult = [],\n\t\tresulttexts = [],\n\t\tusesabbr,\n\t\tunicodecount = 0;\n\n\t\t// Check if this one's been cached already\n\t\tif ( this.jit[addr] )\n\t\t{\n\t\t\treturn this.jit[addr];\n\t\t}\n\n\t\t// If we've been given a length, then use it as the finaladdr,\n\t\t// Otherwise don't go past the end of the file\n\t\tlength = length ? length + addr : this.eof;\n\n\t\t// Go through until we've reached the end of the text or a stop bit\n\t\twhile ( addr < length )\n\t\t{\n\t\t\ttemp = memory.getUint16( addr );\n\t\t\taddr += 2;\n\n\t\t\tbuffer.push( temp >> 10 & 0x1F, temp >> 5 & 0x1F, temp & 0x1F );\n\n\t\t\t// Stop bit\n\t\t\tif ( temp & 0x8000 )\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Process the Z-chars\n\t\twhile ( i < buffer.length )\n\t\t{\n\t\t\tzchar = buffer[i++];\n\n\t\t\t// Special chars\n\t\t\t// Space\n\t\t\tif ( zchar === 0 )\n\t\t\t{\n\t\t\t\tresult.push( 32 );\n\t\t\t}\n\t\t\t// Abbreviations\n\t\t\telse if ( zchar < 4 )\n\t\t\t{\n\t\t\t\tusesabbr = 1;\n\t\t\t\tresult.push( -1 );\n\t\t\t\tresulttexts.push( '\\uE000+this.abbr(' + ( 32 * ( zchar - 1 ) + buffer[i++] ) + ')+\\uE000' );\n\t\t\t}\n\t\t\t// Shift characters\n\t\t\telse if ( zchar < 6 )\n\t\t\t{\n\t\t\t\talphabet = zchar;\n\t\t\t}\n\t\t\t// Check for a 10 bit ZSCII character\n\t\t\telse if ( alphabet === 2 && zchar === 6 )\n\t\t\t{\n\t\t\t\t// Check we have enough Z-chars left.\n\t\t\t\tif ( i + 1 < buffer.length )\n\t\t\t\t{\n\t\t\t\t\tresult.push( buffer[i++] << 5 | buffer[i++] )\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Regular characters\n\t\t\telse if ( zchar < 0x20 )\n\t\t\t{\n\t\t\t\tresult.push( this.alphabets[alphabet][ zchar - 6 ] );\n\t\t\t}\n\n\t\t\t// Reset the alphabet\n\t\t\talphabet = alphabet < 4 ? 0 : alphabet - 3;\n\n\t\t\t// Add to the index if we've had raw unicode\n\t\t\tif ( ( i % 3 ) === 0 )\n\t\t\t{\n\t\t\t\ti += unicodecount;\n\t\t\t\tunicodecount = 0;\n\t\t\t}\n\t\t}\n\n\t\tresult = this.zscii_to_text( result, resulttexts );\n\t\t// Abbreviations must be extracted at run time, so return a function instead\n\t\tif ( usesabbr )\n\t\t{\n\t\t\tresult = {\n\t\t\t\ttoString: ( Function( 'return\"' + result.replace( /\\\\/g, '\\\\\\\\' ).replace( /\"/g, '\\\\\"' ).replace( /\\r/g, '\\\\r' ).replace( /\\uE000/g, '\"' ) + '\"' ) ).bind( this ),\n\t\t\t};\n\t\t}\n\t\t// Cache and return\n\t\tif ( start_addr >= this.staticmem )\n\t\t{\n\t\t\tthis.jit[start_addr] = result;\n\t\t}\n\t\treturn result;\n\t},\n\n\t// Encode ZSCII into Z-chars\n\tencode: function( zscii )\n\t{\n\t\tvar alphabets = this.alphabets,\n\t\tzchars = [],\n\t\tword_len = this.version3 ? 6 : 9,\n\t\ti = 0,\n\t\tachar,\n\t\ttemp,\n\t\tresult = [];\n\n\t\t// Encode the Z-chars\n\t\twhile ( zchars.length < word_len )\n\t\t{\n\t\t\tachar = zscii[i++];\n\t\t\t// Space\n\t\t\tif ( achar === 32 )\n\t\t\t{\n\t\t\t\tzchars.push( 0 );\n\t\t\t}\n\t\t\t// Alphabets\n\t\t\telse if ( ( temp = alphabets[0].indexOf( achar ) ) >= 0 )\n\t\t\t{\n\t\t\t\tzchars.push( temp + 6 );\n\t\t\t}\n\t\t\telse if ( ( temp = alphabets[1].indexOf( achar ) ) >= 0 )\n\t\t\t{\n\t\t\t\tzchars.push( 4, temp + 6 );\n\t\t\t}\n\t\t\telse if ( ( temp = alphabets[2].indexOf( achar ) ) >= 0 )\n\t\t\t{\n\t\t\t\tzchars.push( 5, temp + 6 );\n\t\t\t}\n\t\t\t// Pad character\n\t\t\telse if ( achar === undefined )\n\t\t\t{\n\t\t\t\tzchars.push( 5 );\n\t\t\t}\n\t\t\t// 10-bit ZSCII\n\t\t\telse\n\t\t\t{\n\t\t\t\tzchars.push( 5, 6, achar >> 5, achar & 0x1F )\n\t\t\t}\n\t\t}\n\t\tzchars.length = word_len;\n\n\t\t// Encode to bytes\n\t\ti = 0;\n\t\twhile ( i < word_len )\n\t\t{\n\t\t\tresult.push( zchars[i++] << 2 | zchars[i] >> 3, ( zchars[i++] & 0x07 ) << 5 | zchars[i++] );\n\t\t}\n\t\tresult[ result.length - 2 ] |= 0x80;\n\t\treturn result;\n\t},\n\n\t// In these two functions zscii means an array of ZSCII codes and text means a regular Javascript unicode string\n\tzscii_to_text: function( zscii, texts )\n\t{\n\t\tvar i = 0, l = zscii.length,\n\t\tcharr,\n\t\tj = 0,\n\t\tresult = '';\n\n\t\twhile ( i < l )\n\t\t{\n\t\t\tcharr = zscii[i++];\n\t\t\t// Text substitution from abbreviations or 1.1 unicode\n\t\t\tif ( charr === -1 )\n\t\t\t{\n\t\t\t\tresult += texts[j++];\n\t\t\t}\n\t\t\t// Regular characters\n\t\t\tif ( ( charr = this.unicode_table[charr] ) )\n\t\t\t{\n\t\t\t\tresult += charr;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t},\n\n\t// If the second argument is set then don't use the unicode table\n\ttext_to_zscii: function( text, notable )\n\t{\n\t\tvar array = [], i = 0, l = text.length, charr;\n\t\twhile ( i < l )\n\t\t{\n\t\t\tcharr = text.charCodeAt( i++ );\n\t\t\t// Check the unicode table\n\t\t\tif ( !notable )\n\t\t\t{\n\t\t\t\tcharr = this.reverse_unicode_table[charr] || 63;\n\t\t\t}\n\t\t\tarray.push( charr );\n\t\t}\n\t\treturn array;\n\t},\n\n\t// Parse and cache a dictionary\n\tparse_dict: function( addr )\n\t{\n\t\tvar memory = this.m,\n\n\t\taddr_start = addr,\n\t\tdict = {},\n\t\tentry_len,\n\t\tendaddr,\n\n\t\t// Get the word separators\n\t\tseperators_len = memory.getUint8( addr++ );\n\n\t\t// Support: IE, Safari, Firefox<38, Chrome<45, Opera<32, Node<4\n\t\t// These browsers don't support Uint8Array.indexOf() so convert to a normal array\n\t\tdict.separators = Array.prototype.slice.call( memory.getUint8Array( addr, seperators_len ) );\n\n\t\taddr += seperators_len;\n\n\t\t// Go through the dictionary and cache its entries\n\t\tentry_len = memory.getUint8( addr++ );\n\t\tendaddr = addr + 2 + entry_len * memory.getUint16( addr );\n\t\taddr += 2;\n\t\twhile ( addr < endaddr )\n\t\t{\n\t\t\tdict[ Array.prototype.toString.call( memory.getUint8Array( addr, this.version3 ? 4 : 6 ) ) ] = addr;\n\t\t\taddr += entry_len;\n\t\t}\n\t\tthis.dictionaries[addr_start] = dict;\n\n\t\treturn dict;\n\t},\n\n\t// Print an abbreviation\n\tabbr: function( abbrnum )\n\t{\n\t\treturn this.decode( this.m.getUint16( this.abbr_addr + 2 * abbrnum ) * 2 );\n\t},\n\n\t// Tokenise a text\n\ttokenise: function( bufaddr, parseaddr, dictionary, flag )\n\t{\n\t\t// Use the default dictionary if one wasn't provided\n\t\tdictionary = dictionary || this.dict;\n\n\t\t// Parse the dictionary if needed\n\t\tdictionary = this.dictionaries[dictionary] || this.parse_dict( dictionary );\n\n\t\tvar memory = this.m,\n\t\tram = this.ram,\n\t\tbufferlength = 1e3,\n\t\ti = 1,\n\t\tletter,\n\t\tseparators = dictionary.separators,\n\t\tword,\n\t\twords = [],\n\t\tmax_words,\n\t\tdictword,\n\t\twordcount = 0;\n\n\t\t// In versions 5 and 8 we can get the actual buffer length\n\t\tif ( this.version > 4 )\n\t\t{\n\t\t\tbufferlength = memory.getUint8( bufaddr + i++ ) + 2;\n\t\t}\n\n\t\t// Find the words, separated by the separators, but as well as the separators themselves\n\t\twhile ( i < bufferlength )\n\t\t{\n\t\t\tletter = memory.getUint8( bufaddr + i );\n\t\t\tif ( letter === 0 )\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if ( letter === 32 || separators.indexOf( letter ) >= 0 )\n\t\t\t{\n\t\t\t\tif ( letter !== 32 )\n\t\t\t\t{\n\t\t\t\t\twords.push( [ [letter], i ] );\n\t\t\t\t}\n\t\t\t\tword = null;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ( !word )\n\t\t\t\t{\n\t\t\t\t\twords.push( [ [], i ] );\n\t\t\t\t\tword = words[ words.length - 1 ][0];\n\t\t\t\t}\n\t\t\t\tword.push( letter );\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\n\t\t// Go through the text until we either have reached the max number of words, or we're out of words\n\t\tmax_words = Math.min( words.length, memory.getUint8( parseaddr ) );\n\t\twhile ( wordcount < max_words )\n\t\t{\n\t\t\tdictword = dictionary['' + this.encode( words[wordcount][0] )];\n\n\t\t\t// If the flag is set then don't overwrite words which weren't found\n\t\t\tif ( !flag || dictword )\n\t\t\t{\n\t\t\t\t// Fill out the buffer\n\t\t\t\tram.setUint16( parseaddr + 2 + wordcount * 4, dictword || 0 );\n\t\t\t\tram.setUint8( parseaddr + 4 + wordcount * 4, words[wordcount][0].length );\n\t\t\t\tram.setUint8( parseaddr + 5 + wordcount * 4, words[wordcount][1] );\n\t\t\t}\n\t\t\twordcount++;\n\t\t}\n\n\t\t// Update the number of found words\n\t\tram.setUint8( parseaddr + 1, wordcount );\n\t},\n\n};\n", "/*\n\nZ-Machine IO\n============\n\nCopyright (c) 2020 The ifvms.js team\nMIT licenced\nhttps://github.com/curiousdannii/ifvms.js\n\n*/\n\n'use strict';\n\n/*\n\nTODO:\n\n - pre-existing line input\n - timed input\n - mouse input\n - write colours into header\n\n*/\n\nconst utils = require('../common/utils.js')\nconst U2S = utils.U2S16\n//S2U = utils.S2U16\n\n// Glulx key codes accepted by the Z-Machine\nconst ZSCII_keyCodes = (function()\n{\n\tvar codes = {\n\t\t0xfffffff9: 8, // delete/backspace\n\t\t0xfffffffa: 13, // enter\n\t\t0xfffffff8: 27, // escape\n\t\t0xfffffffc: 129, // up\n\t\t0xfffffffb: 130, // down\n\t\t0xfffffffe: 131, // left\n\t\t0xfffffffd: 132, // right\n\t\t0xfffffff3: 146, // End / key pad 1\n\t\t0xfffffff5: 148, // PgDn / key pad 3\n\t\t0xfffffff4: 152, // Home / key pad 7\n\t\t0xfffffff6: 154, // PgUp / key pad 9\n\t},\n\ti = 0;\n\twhile ( i < 12 )\n\t{\n\t\tcodes[ 0xffffffef - i ] = 133 + i++; // function keys\n\t}\n\treturn codes;\n})()\n\n// Style mappings\n// The index bits are (lowest to highest): mono, italic, bold\nconst style_mappings = [0, 2, 1, 10, 4, 9, 5, 6]\n\n// Convert a 15 bit colour to RGB\nfunction convert_true_colour(colour)\n{\n\tconst from5to8 = [0, 8, 16, 25, 33, 41, 49, 58, 66, 74, 82, 90, 99, 107, 115, 123, 132,\n\t\t140, 148, 156, 165, 173, 181, 189, 197, 206, 214, 222, 230, 239, 247, 255]\n\n\t// Stretch the five bits per colour out to 8 bits\n\treturn (from5to8[colour & 0x1F] << 16) | (from5to8[(colour & 0x03E0) >> 5] << 8) | (from5to8[(colour & 0x7C00) >> 10])\n}\n\n// The standard 15 bit colour values\nconst zcolours = [\n\t0xFFFE, // Current\n\t0xFFFF, // Default\n\t0x0000, // Black\n\t0x001D, // Red\n\t0x0340, // Green\n\t0x03BD, // Yellow\n\t0x59A0, // Blue\n\t0x7C1F, // Magenta\n\t0x77A0, // Cyan\n\t0x7FFF, // White\n\t0x5AD6, // Light grey\n\t0x4631, // Medium grey\n\t0x2D6B,\t // Dark grey\n]\n\nmodule.exports = {\n\n\tinit_io: function()\n\t{\n\t\tthis.io = {\n\t\t\treverse: 0,\n\t\t\tbold: 0,\n\t\t\titalic: 0,\n\t\t\tbg: -1,\n\t\t\tfg: -1,\n\t\t\t\n\t\t\t// A variable for whether we are outputing in a monospaced font. If non-zero then we are\n\t\t\t// Bit 0 is for @set_style, bit 1 for the header, and bit 2 for @set_font\n\t\t\tmono: this.m.getUint8( 0x11 ) & 0x02,\n\n\t\t\t// A variable for checking whether the transcript bit has been changed\n\t\t\ttranscript: this.m.getUint8( 0x11 ) & 0x01,\n\n\t\t\t// Index 0 is input stream 1, the output streams follow\n\t\t\tstreams: [ 0, 1, {}, [], {} ],\n\n\t\t\tcurrentwin: 0,\n\t\t\t\n\t\t\t// Use Zarf's algorithm for the upper window\n\t\t\t// http://eblong.com/zarf/glk/quote-box.html\n\t\t\t// Implemented in fix_upper_window() and split_window()\n\t\t\theight: 0, // What the VM thinks the height is\n\t\t\tglkheight: 0, // Actual height of the Glk window\n\t\t\tmaxheight: 0, // Height including quote boxes etc\n\t\t\tseenheight: 0, // Last height the player saw\n\t\t\twidth: 0,\n\t\t\trow: 0,\n\t\t\tcol: 0,\n\t\t};\n\n\t\t//this.process_colours();\n\n\t\t// Construct the windows if they do not already exist\n\t\tthis.open_windows()\n\t},\n\n\terase_line: function( value )\n\t{\n\t\tif ( value === 1 )\n\t\t{\n\t\t\tvar io = this.io,\n\t\t\trow = io.row,\n\t\t\tcol = io.col;\n\t\t\tthis._print( Array( io.width - io.col + 1 ).join( ' ' ) );\n\t\t\tthis.set_cursor( row, col );\n\t\t}\n\t},\n\n\terase_window: function(window)\n\t{\n\t\tif (window < 1)\n\t\t{\n\t\t\tthis.Glk.glk_window_clear(this.mainwin)\n\t\t\tif (this.io.bg >= 0)\n\t\t\t{\n\t\t\t\tthis.Glk.glk_stylehint_set(3, 0, 8, this.io.bg)\n\t\t\t}\n\t\t\telse if (this.io.bg === -1)\n\t\t\t{\n\t\t\t\tthis.Glk.glk_stylehint_clear(3, 0, 8)\n\t\t\t}\n\t\t}\n\t\tif (window !== 0)\n\t\t{\n\t\t\tif (window === -1)\n\t\t\t{\n\t\t\t\tthis.split_window(0)\n\t\t\t}\n\t\t\tif (this.upperwin)\n\t\t\t{\n\t\t\t\tthis.Glk.glk_window_clear(this.upperwin)\n\t\t\t\tthis.set_cursor(0, 0)\n\t\t\t}\n\t\t}\n\t},\n\n\tfileref_create_by_prompt: function( data )\n\t{\n\t\tif ( typeof data.run === 'undefined' )\n\t\t{\n\t\t\tdata.run = 1;\n\t\t}\n\t\tthis.fileref_data = data;\n\t\tthis.glk_blocking_call = 'fileref_create_by_prompt';\n\t\tthis.Glk.glk_fileref_create_by_prompt( data.usage, data.mode, data.rock || 0 );\n\t},\n\n\t// Fix the upper window height before an input event\n\tfix_upper_window: function()\n\t{\n\t\tvar Glk = this.Glk,\n\t\tio = this.io;\n\n\t\t// If we have seen the entire window, shrink it to what it should be\n\t\tif (io.seenheight >= io.maxheight)\n\t\t{\n\t\t\tio.maxheight = io.height;\n\t\t}\n\t\tif ( this.upperwin )\n\t\t{\n\t\t\tif ( io.maxheight === 0 )\n\t\t\t{\n\t\t\t\tGlk.glk_window_close( this.upperwin );\n\t\t\t\tthis.upperwin = null;\n\t\t\t}\n\t\t\telse if (io.maxheight !== io.glkheight)\n\t\t\t{\n\t\t\t\tGlk.glk_window_set_arrangement( Glk.glk_window_get_parent( this.upperwin ), 0x12, io.maxheight, null );\n\t\t\t}\n\t\t\tio.glkheight = io.maxheight\n\t\t}\n\t\tio.seenheight = io.maxheight;\n\t\tio.maxheight = io.height;\n\t},\n\n\tformat: function()\n\t{\n\t\tthis.Glk.glk_set_style(style_mappings[!!this.io.mono | this.io.italic | this.io.bold])\n\t\tif (this.Glk.glk_gestalt(0x1100, 0))\n\t\t{\n\t\t\tthis.Glk.garglk_set_reversevideo(this.io.reverse)\n\t\t}\n\t},\n\n\tget_cursor: function( array )\n\t{\n\t\tthis.ram.setUint16( array, this.io.row + 1 );\n\t\tthis.ram.setUint16( array + 2, this.io.col + 1 );\n\t},\n\n\t// Handle char input\n\thandle_char_input: function( charcode )\n\t{\n\t\tvar stream4 = this.io.streams[4],\n\t\tcode = ZSCII_keyCodes[ charcode ] || this.reverse_unicode_table[ charcode ] || 63;\n\t\tthis.variable( this.read_data.storer, code );\n\n\t\t// Echo to the commands log\n\t\tif ( stream4.mode === 1 )\n\t\t{\n\t\t\tstream4.cache += code;\n\t\t}\n\t\tif ( stream4.mode === 2 )\n\t\t{\n\t\t\tthis.Glk.glk_put_char_stream_uni( stream4.str, code );\n\t\t}\n\t},\n\n\t// Handle the result of glk_fileref_create_by_prompt()\n\thandle_create_fileref: function( fref )\n\t{\n\t\tvar Glk = this.Glk,\n\t\tdata = this.fileref_data,\n\t\tstr;\n\n\t\tif ( fref )\n\t\t{\n\t\t\tif ( data.unicode )\n\t\t\t{\n\t\t\t\tstr = Glk.glk_stream_open_file_uni( fref, data.mode, data.rock || 0 );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tstr = Glk.glk_stream_open_file( fref, data.mode, data.rock || 0 );\n\t\t\t}\n\t\t\tGlk.glk_fileref_destroy( fref );\n\t\t}\n\t\tif ( data.func === 'restore' || data.func === 'save' )\n\t\t{\n\t\t\tthis.save_restore_handler( str );\n\t\t}\n\t\tif ( data.func === 'input_stream' )\n\t\t{\n\t\t\tthis.io.streams[0] = str;\n\t\t}\n\t\tif ( data.func === 'output_stream' )\n\t\t{\n\t\t\tthis.output_stream_handler( str );\n\t\t}\n\n\t\t// Signal to resume() to call run() if required\n\t\treturn data.run;\n\t},\n\n\t// Handle line input\n\thandle_line_input: function( len, terminator )\n\t{\n\t\tvar ram = this.ram,\n\t\toptions = this.read_data,\n\t\tstreams = this.io.streams,\n\t\t\n\t\t// Cut the response to len, convert to a lower case string, and then to a ZSCII array\n\t\tcommand = String.fromCharCode.apply( null, options.buffer.slice( 0, len ) ) + '\\n',\n\t\tresponse = this.text_to_zscii( command.slice( 0, -1 ).toLowerCase() );\n\t\t\n\t\t// 7.1.1.1: The response must be echoed, Glk will handle this\n\t\t\n\t\t// But we do have to echo to the transcripts\n\t\tif ( streams[2].mode === 1 )\n\t\t{\n\t\t\tstreams[2].cache += command;\n\t\t}\n\t\tif ( streams[2].mode === 2 )\n\t\t{\n\t\t\tthis.Glk.glk_put_jstring_stream( streams[2].str, command );\n\t\t}\n\t\t\n\t\tif ( streams[4].mode === 1 )\n\t\t{\n\t\t\tstreams[4].cache += command;\n\t\t}\n\t\tif ( streams[4].mode === 2 )\n\t\t{\n\t\t\tthis.Glk.glk_put_jstring_stream( streams[4].str, command );\n\t\t}\n\n\t\t// Store the response\n\t\tif ( this.version < 5 )\n\t\t{\n\t\t\t// Append zero terminator\n\t\t\tresponse.push( 0 );\n\n\t\t\t// Store the response in the buffer\n\t\t\tram.setUint8Array( options.bufaddr + 1, response );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Store the response length\n\t\t\tram.setUint8( options.bufaddr + 1, len );\n\n\t\t\t// Store the response in the buffer\n\t\t\tram.setUint8Array( options.bufaddr + 2, response );\n\n\t\t\t// Store the terminator\n\t\t\tthis.variable( options.storer, isNaN( terminator ) ? 13 : terminator );\n\t\t}\n\n\t\tif ( options.parseaddr )\n\t\t{\n\t\t\t// Tokenise the response\n\t\t\tthis.tokenise( options.bufaddr, options.parseaddr );\n\t\t}\n\t},\n\n\tinput_stream: function( stream )\n\t{\n\t\tvar io = this.io;\n\t\tif ( stream && !io.streams[0] )\n\t\t{\n\t\t\tthis.fileref_create_by_prompt({\n\t\t\t\tfunc: 'input_stream',\n\t\t\t\tmode: 0x02,\n\t\t\t\trock: 212,\n\t\t\t\tunicode: 1,\n\t\t\t\tusage: 0x103,\n\t\t\t});\n\t\t}\n\t\tif ( !stream && io.streams[0] )\n\t\t{\n\t\t\tthis.Glk.glk_stream_close( io.streams[0] );\n\t\t\tio.streams[0] = 0;\n\t\t}\n\t},\n\n\t// Open windows\n\topen_windows: function()\n\t{\n\t\tconst Glk = this.Glk\n\n\t\tif (!this.mainwin)\n\t\t{\n\t\t\t// We will borrow the general approach of Bocfel to implement the Z-Machine's formatting model in Glk\n\t\t\t// https://github.com/garglk/garglk/blob/master/terps/bocfel/screen.c\n\n\t\t\t// Reset some Glk stylehints just in case\n\t\t\tconst styles_to_reset = [1, 2, 4, 5, 6, 9, 10]\n\t\t\tfor (let i = 0; i < 7; i++)\n\t\t\t{\n\t\t\t\t// Reset the size, weight, and obliqueness\n\t\t\t\tGlk.glk_stylehint_set(0, styles_to_reset[i], 3, 0)\n\t\t\t\tGlk.glk_stylehint_set(0, styles_to_reset[i], 4, 0)\n\t\t\t\tGlk.glk_stylehint_set(0, styles_to_reset[i], 5, 0)\n\t\t\t\t// And force proportional font\n\t\t\t\tGlk.glk_stylehint_set(0, styles_to_reset[i], 6, 1)\n\t\t\t}\n\n\t\t\t// Now set the style hints we will use\n\n\t\t\t// Bold will use subheader\n\t\t\tGlk.glk_stylehint_set(0, 4, 4, 1)\n\t\t\t// Italic will use emphasised\n\t\t\tGlk.glk_stylehint_set(0, 1, 5, 1)\n\t\t\t// Bold+italic will use alert\n\t\t\tGlk.glk_stylehint_set(0, 5, 4, 1)\n\t\t\tGlk.glk_stylehint_set(0, 5, 5, 1)\n\t\t\t// Fixed will use preformated\n\t\t\tGlk.glk_stylehint_set(0, 2, 6, 0)\n\t\t\t// Bold+fixed will use user1\n\t\t\tGlk.glk_stylehint_set(0, 9, 4, 1)\n\t\t\tGlk.glk_stylehint_set(0, 9, 6, 0)\n\t\t\t// Italic+fixed will use user2\n\t\t\tGlk.glk_stylehint_set(0, 10, 5, 1)\n\t\t\tGlk.glk_stylehint_set(0, 10, 6, 0)\n\t\t\t// Bold+italic+fixed will use note\n\t\t\tGlk.glk_stylehint_set(0, 6, 4, 1)\n\t\t\tGlk.glk_stylehint_set(0, 6, 5, 1)\n\t\t\tGlk.glk_stylehint_set(0, 6, 6, 0)\n\n\t\t\tthis.mainwin = Glk.glk_window_open(0, 0, 0, 3, 201)\n\t\t\tGlk.glk_set_window(this.mainwin)\n\t\t\tif (this.version3)\n\t\t\t{\n\t\t\t\tthis.statuswin = Glk.glk_window_open(this.mainwin, 0x12, 1, 4, 202)\n\t\t\t\tif (this.statuswin && this.Glk.glk_gestalt(0x1100, 0))\n\t\t\t\t{\n\t\t\t\t\tGlk.garglk_set_reversevideo_stream(Glk.glk_window_get_stream(this.statuswin), 1)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Clean up after restarting\n\t\t\tGlk.glk_stylehint_clear(0, 0, 8)\n\t\t\tif (this.Glk.glk_gestalt(0x1100, 0))\n\t\t\t{\n\t\t\t\tGlk.garglk_set_zcolors_stream(this.mainwin.str, this.io.fg, this.io.bg)\n\t\t\t}\n\t\t\tGlk.glk_window_clear(this.mainwin)\n\t\t\tif (this.upperwin)\n\t\t\t{\n\t\t\t\tGlk.glk_window_close(this.upperwin)\n\t\t\t\tthis.upperwin = null\n\t\t\t}\n\t\t}\n\t},\n\n\t// Manage output streams\n\toutput_stream: function( stream, addr, called_from_print )\n\t{\n\t\tvar ram = this.ram,\n\t\tstreams = this.io.streams,\n\t\tdata, text;\n\t\tstream = U2S( stream );\n\n\t\t// The screen\n\t\tif ( stream === 1 )\n\t\t{\n\t\t\tstreams[1] = 1;\n\t\t}\n\t\tif ( stream === -1 )\n\t\t{\n\t\t\tstreams[1] = 0;\n\t\t}\n\n\t\t// Transcript\n\t\tif ( stream === 2 && !streams[2].mode )\n\t\t{\n\t\t\tthis.fileref_create_by_prompt({\n\t\t\t\tfunc: 'output_stream',\n\t\t\t\tmode: 0x05,\n\t\t\t\trock: 210,\n\t\t\t\trun: !called_from_print,\n\t\t\t\tstr: 2,\n\t\t\t\tunicode: 1,\n\t\t\t\tusage: 0x102,\n\t\t\t});\n\t\t\tstreams[2].cache = '';\n\t\t\tstreams[2].mode = 1;\n\t\t\tif ( !called_from_print )\n\t\t\t{\n\t\t\t\tthis.stop = 1;\n\t\t\t}\n\t\t}\n\t\tif ( stream === -2 )\n\t\t{\n\t\t\tram.setUint8( 0x11, ( ram.getUint8( 0x11 ) & 0xFE ) );\n\t\t\tif ( streams[2].mode === 2 )\n\t\t\t{\n\t\t\t\tthis.Glk.glk_stream_close( streams[2].str );\n\t\t\t}\n\t\t\tstreams[2].mode = this.io.transcript = 0;\n\t\t}\n\n\t\t// Memory\n\t\tif ( stream === 3 )\n\t\t{\n\t\t\tstreams[3].unshift( [ addr, '' ] );\n\t\t}\n\t\tif ( stream === -3 )\n\t\t{\n\t\t\tdata = streams[3].shift();\n\t\t\ttext = this.text_to_zscii( data[1] );\n\t\t\tram.setUint16( data[0], text.length );\n\t\t\tram.setUint8Array( data[0] + 2, text );\n\t\t}\n\n\t\t// Command list\n\t\tif ( stream === 4 && !streams[4].mode )\n\t\t{\n\t\t\tthis.fileref_create_by_prompt({\n\t\t\t\tfunc: 'output_stream',\n\t\t\t\tmode: 0x05,\n\t\t\t\trock: 211,\n\t\t\t\tstr: 4,\n\t\t\t\tunicode: 1,\n\t\t\t\tusage: 0x103,\n\t\t\t});\n\t\t\tstreams[4].cache = '';\n\t\t\tstreams[4].mode = 1;\n\t\t\tthis.stop = 1;\n\t\t}\n\t\tif ( stream === -4 )\n\t\t{\n\t\t\tif ( streams[4].mode === 2 )\n\t\t\t{\n\t\t\t\tthis.Glk.glk_stream_close( streams[4].str );\n\t\t\t}\n\t\t\tstreams[4].mode = 0;\n\t\t}\n\t},\n\t\n\toutput_stream_handler: function( str )\n\t{\n\t\tvar ram = this.ram,\n\t\tstreams = this.io.streams,\n\t\tdata = this.fileref_data;\n\n\t\tif ( data.str === 2 )\n\t\t{\n\t\t\tram.setUint8( 0x11, ( ram.getUint8( 0x11 ) & 0xFE ) | ( str ? 1 : 0 ) );\n\t\t\tif ( str )\n\t\t\t{\n\t\t\t\tstreams[2].mode = 2;\n\t\t\t\tstreams[2].str = str;\n\t\t\t\tthis.io.transcript = 1;\n\t\t\t\tif ( streams[2].cache )\n\t\t\t\t{\n\t\t\t\t\tthis.Glk.glk_put_jstring_stream( streams[2].str, streams[2].cache );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tstreams[2].mode = this.io.transcript = 0;\n\t\t\t}\n\t\t}\n\n\t\tif ( data.str === 4 )\n\t\t{\n\t\t\tif ( str )\n\t\t\t{\n\t\t\t\tstreams[4].mode = 2;\n\t\t\t\tstreams[4].str = str;\n\t\t\t\tif ( streams[4].cache )\n\t\t\t\t{\n\t\t\t\t\tthis.Glk.glk_put_jstring_stream( streams[4].str, streams[4].cache );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tstreams[4].mode = 0;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Print text!\n\t_print: function( text )\n\t{\n\t\tvar Glk = this.Glk,\n\t\tio = this.io,\n\t\ti = 0;\n\t\t\n\t\t// Stream 3 gets the text first\n\t\tif ( io.streams[3].length )\n\t\t{\n\t\t\tio.streams[3][0][1] += text;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Convert CR into LF\n\t\t\ttext = text.replace( /\\r/g, '\\n' );\n\t\t\t\n\t\t\t// Check the transcript bit\n\t\t\t// Because it might need to prompt for a file name, we return here, and will print again in the handler\n\t\t\tif ( ( this.m.getUint8( 0x11 ) & 0x01 ) !== io.transcript )\n\t\t\t{\n\t\t\t\tthis.output_stream( io.transcript ? -2 : 2, 0, 1 );\n\t\t\t}\n\t\t\t\n\t\t\t// Check if the monospace font bit has changed\n\t\t\t// Unfortunately, even now Inform changes this bit for the font statement, even though the 1.1 standard depreciated it :(\n\t\t\tif ( ( this.m.getUint8( 0x11 ) & 0x02 ) !== ( io.mono & 0x02 ) )\n\t\t\t{\n\t\t\t\tio.mono ^= 0x02;\n\t\t\t\tthis.format();\n\t\t\t}\n\t\t\t\n\t\t\t// For the upper window we print each character individually so that we can track the cursor position\n\t\t\tif ( io.currentwin && this.upperwin )\n\t\t\t{\n\t\t\t\t// Don't automatically increase the size of the window\n\t\t\t\t// If we confirm that games do need this then we can implement it later\n\t\t\t\twhile ( i < text.length && io.row < io.height )\n\t\t\t\t{\n\t\t\t\t\tGlk.glk_put_jstring( text[i++] );\n\t\t\t\t\tio.col++;\n\t\t\t\t\tif ( io.col === io.width )\n\t\t\t\t\t{\n\t\t\t\t\t\tio.col = 0;\n\t\t\t\t\t\tio.row++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( !io.currentwin )\n\t\t\t{\n\t\t\t\tif ( io.streams[1] )\n\t\t\t\t{\n\t\t\t\t\tGlk.glk_put_jstring( text );\n\t\t\t\t}\n\t\t\t\t// Transcript\n\t\t\t\tif ( io.streams[2].mode === 1 )\n\t\t\t\t{\n\t\t\t\t\tio.streams[2].cache += text;\n\t\t\t\t}\n\t\t\t\tif ( io.streams[2].mode === 2 )\n\t\t\t\t{\n\t\t\t\t\tGlk.glk_put_jstring_stream( io.streams[2].str, text );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Print many things\n\tprint: function( type, val )\n\t{\n\t\tvar proptable, result;\n\t\t\n\t\t// Number\n\t\tif ( type === 0 )\n\t\t{\n\t\t\tresult = val;\n\t\t}\n\t\t// Unicode\n\t\tif ( type === 1 )\n\t\t{\n\t\t\tresult = String.fromCharCode( val );\n\t\t}\n\t\t// Text from address\n\t\tif ( type === 2 )\n\t\t{\n\t\t\tresult = this.jit[ val ] || this.decode( val );\n\t\t}\n\t\t// Object\n\t\tif ( type === 3 )\n\t\t{\n\t\t\tproptable = this.m.getUint16( this.objects + ( this.version3 ? 9 : 14 ) * val + ( this.version3 ? 7 : 12 ) );\n\t\t\tresult = this.decode( proptable + 1, this.m.getUint8( proptable ) * 2 );\n\t\t}\n\t\t// ZSCII\n\t\tif ( type === 4 )\n\t\t{\n\t\t\tif ( !this.unicode_table[ val ] )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = this.unicode_table[ val ];\n\t\t}\n\t\tthis._print( '' + result );\n\t},\n\n\tprint_table: function( zscii, width, height, skip )\n\t{\n\t\theight = height || 1;\n\t\tskip = skip || 0;\n\t\tvar i = 0;\n\t\twhile ( i++ < height )\n\t\t{\n\t\t\tthis._print( this.zscii_to_text( this.m.getUint8Array( zscii, width ) ) + ( i < height ? '\\r' : '' ) );\n\t\t\tzscii += width + skip;\n\t\t}\n\t},\n\n\t// Process CSS default colours\n\t/*process_colours: function()\n\t{\n\t\t// Convert RGB to a Z-Machine true colour\n\t\t// RGB is a css colour code. rgb(), #000000 and #000 formats are supported.\n\t\tfunction convert_RGB( code )\n\t\t{\n\t\t\tvar round = Math.round,\n\t\t\tdata = /(\\d+),\\s*(\\d+),\\s*(\\d+)|#(\\w{1,2})(\\w{1,2})(\\w{1,2})/.exec( code ),\n\t\t\tresult;\n\n\t\t\t// Nice rgb() code\n\t\t\tif ( data[1] )\n\t\t\t{\n\t\t\t\tresult = [ data[1], data[2], data[3] ];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// Messy CSS colour code\n\t\t\t\tresult = [ parseInt( data[4], 16 ), parseInt( data[5], 16 ), parseInt( data[6], 16 ) ];\n\t\t\t\t// Stretch out compact #000 codes to their full size\n\t\t\t\tif ( code.length === 4 )\n\t\t\t\t{\n\t\t\t\t\tresult = [ result[0] << 4 | result[0], result[1] << 4 | result[1], result[2] << 4 | result[2] ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Convert to a 15bit colour\n\t\t\treturn round( result[2] / 8.226 ) << 10 | round( result[1] / 8.226 ) << 5 | round( result[0] / 8.226 );\n\t\t}\n\n\t\t// Standard colours\n\t\tvar colours = [\n\t\t\t0xFFFE, // Current\n\t\t\t0xFFFF, // Default\n\t\t\t0x0000, // Black\n\t\t\t0x001D, // Red\n\t\t\t0x0340, // Green\n\t\t\t0x03BD, // Yellow\n\t\t\t0x59A0, // Blue\n\t\t\t0x7C1F, // Magenta\n\t\t\t0x77A0, // Cyan\n\t\t\t0x7FFF, // White\n\t\t\t0x5AD6, // Light grey\n\t\t\t0x4631, // Medium grey\n\t\t\t0x2D6B,\t // Dark grey\n\t\t],\n\n\t\t// Start with CSS colours provided by the runner\n\t\tfg_css = this.options.fgcolour,\n\t\tbg_css = this.options.bgcolour,\n\t\t// Convert to true colour for storing in the header\n\t\tfg_true = fg_css ? convert_RGB( fg_css ) : 0xFFFF,\n\t\tbg_true = bg_css ? convert_RGB( bg_css ) : 0xFFFF,\n\t\t// Search the list of standard colours\n\t\tfg = colours.indexOf( fg_true ),\n\t\tbg = colours.indexOf( bg_true );\n\t\t// ZVMUI must have colours for reversing text, even if we don't write them to the header\n\t\t// So use the given colours or assume black on white\n\t\tif ( fg < 2 )\n\t\t{\n\t\t\tfg = fg_css || 2;\n\t\t}\n\t\tif ( bg < 2 )\n\t\t{\n\t\t\tbg = bg_css || 9;\n\t\t}\n\n\t\tutils.extend( this.options, {\n\t\t\tfg: fg,\n\t\t\tbg: bg,\n\t\t\tfg_true: fg_true,\n\t\t\tbg_true: bg_true,\n\t\t});\n\t},*/\n\n\t// Request line input\n\tread: function( storer, text, parse, time, routine )\n\t{\n\t\tvar len = this.m.getUint8( text ),\n\t\tinitiallen = 0,\n\t\tbuffer,\n\t\tinput_stream1_len;\n\n\t\tif ( this.version3 )\n\t\t{\n\t\t\tthis.v3_status();\n\t\t}\n\t\t// The spec is badly phrased; the buffer capacity includes the zero terminator\n\t\t// See https://github.com/DFillmore/Z-Machine-Standard/issues/76\n\t\tif (this.version < 5)\n\t\t{\n\t\t\tlen--\n\t\t}\n\t\t//else\n\t\t//{\n\t\t//initiallen = this.m.getUint8( text + 1 );\n\t\t//}\n\n\t\tbuffer = Array( len );\n\t\tbuffer.fill( 0 )\n\t\tthis.read_data = {\n\t\t\tbuffer: buffer,\n\t\t\tbufaddr: text, // text-buffer\n\t\t\tparseaddr: parse, // parse-buffer\n\t\t\troutine: routine,\n\t\t\tstorer: storer,\n\t\t\ttime: time,\n\t\t};\n\t\t\n\t\t// Input stream 1\n\t\tif ( this.io.streams[0] )\n\t\t{\n\t\t\tinput_stream1_len = this.Glk.glk_get_line_stream_uni( this.io.streams[0], buffer );\n\n\t\t\t// Check for a newline character\n\t\t\tif ( buffer[input_stream1_len - 1] === 0x0A )\n\t\t\t{\n\t\t\t\tinput_stream1_len--;\n\t\t\t}\n\t\t\tif ( input_stream1_len )\n\t\t\t{\n\t\t\t\tthis._print( String.fromCharCode.apply( null, buffer.slice( 0, input_stream1_len ) ) + '\\n' );\n\t\t\t\tthis.handle_line_input( input_stream1_len );\n\t\t\t\treturn this.stop = 0;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.input_stream( 0 );\n\t\t\t}\n\t\t}\n\n\t\t// TODO: pre-existing input\n\t\tthis.Glk.glk_request_line_event_uni( this.io.currentwin ? this.upperwin : this.mainwin, buffer, initiallen );\n\t\tthis.fix_upper_window();\n\t},\n\n\t// Request character input\n\tread_char: function( storer, one, time, routine )\n\t{\n\t\t// Input stream 1\n\t\tif ( this.io.streams[0] )\n\t\t{\n\t\t\tvar code = this.Glk.glk_get_char_stream_uni( this.io.streams[0] );\n\t\t\t// Check for EOF\n\t\t\tif ( code === -1 )\n\t\t\t{\n\t\t\t\tthis.input_stream( 0 );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.variable( storer, code );\n\t\t\t\treturn this.stop = 0;\n\t\t\t}\n\t\t}\n\n\t\tthis.read_data = {\n\t\t\troutine: routine,\n\t\t\tstorer: storer,\n\t\t\ttime: time,\n\t\t};\n\t\tthis.Glk.glk_request_char_event_uni( this.io.currentwin ? this.upperwin : this.mainwin );\n\t\tthis.fix_upper_window();\n\t},\n\n\tset_colour: function(foreground, background)\n\t{\n\t\tthis.set_true_colour(zcolours[foreground], zcolours[background])\n\t},\n\n\t// Note that row and col must be decremented in JIT code\n\tset_cursor: function( row, col )\n\t{\n\t\tvar io = this.io;\n\n\t\t// 8.7.2.3: do nothing if the lower window is selected\n\t\tif ( !io.currentwin )\n\t\t{\n\t\t\treturn\n\t\t}\n\n\t\tif ( row >= io.height )\n\t\t{\n\t\t\t// Moving the cursor to a row forces the upper window\n\t\t\t// to open enough for that line to exist\n\t\t\tthis.split_window( row + 1 );\n\t\t}\n\t\tif ( this.upperwin && row >= 0 && col >= 0 && col < io.width )\n\t\t{\n\t\t\tthis.Glk.glk_window_move_cursor( this.upperwin, col, row );\n\t\t\tio.row = row;\n\t\t\tio.col = col;\n\t\t}\n\t},\n\n\tset_font: function( font )\n\t{\n\t\tvar returnval = this.io.mono & 0x04 ? 4 : 1;\n\t\tif ( font === 0 )\n\t\t{\n\t\t\treturn returnval;\n\t\t}\n\t\t// We only support fonts 1 and 4\n\t\tif ( font !== 1 && font !== 4 )\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\t\tif ( font !== returnval )\n\t\t{\n\t\t\tthis.io.mono ^= 0x04;\n\t\t\tthis.format();\n\t\t}\n\t\treturn returnval;\n\t},\n\n\t// Set styles\n\tset_style: function( stylebyte )\n\t{\n\t\tvar io = this.io;\n\n\t\t// Setting the style to Roman will clear the others\n\t\tif ( stylebyte === 0 )\n\t\t{\n\t\t\tio.reverse = io.bold = io.italic = 0;\n\t\t\tio.mono &= 0xFE;\n\t\t}\n\t\tif ( stylebyte & 0x01 )\n\t\t{\n\t\t\tio.reverse = 1;\n\t\t}\n\t\tif ( stylebyte & 0x02 )\n\t\t{\n\t\t\tio.bold = 0x04;\n\t\t}\n\t\tif ( stylebyte & 0x04 )\n\t\t{\n\t\t\tio.italic = 0x02;\n\t\t}\n\t\tif ( stylebyte & 0x08 )\n\t\t{\n\t\t\tio.mono |= 0x01;\n\t\t}\n\t\tthis.format();\n\t},\n\n\t// Set true colours\n\tset_true_colour: function(foreground, background)\n\t{\n\t\tconst Glk = this.Glk\n\t\tif (Glk.glk_gestalt(0x1100, 0))\n\t\t{\n\t\t\tlet fg, bg\n\t\t\tif (foreground === 0xFFFE)\n\t\t\t{\n\t\t\t\tfg = -2\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (foreground === 0xFFFF)\n\t\t\t\t{\n\t\t\t\t\tfg = -1\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfg = convert_true_colour(foreground)\n\t\t\t\t}\n\t\t\t\tthis.io.fg = fg\n\t\t\t}\n\n\t\t\tif (background === 0xFFFE)\n\t\t\t{\n\t\t\t\tbg = -2\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (background === 0xFFFF)\n\t\t\t\t{\n\t\t\t\t\tbg = -1\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tbg = convert_true_colour(background)\n\t\t\t\t}\n\t\t\t\tthis.io.bg = bg\n\t\t\t}\n\n\t\t\t// Set the colours for each open window\n\t\t\tGlk.garglk_set_zcolors_stream(this.mainwin.str, fg, bg)\n\t\t\tif (this.upperwin)\n\t\t\t{\n\t\t\t\tGlk.garglk_set_zcolors_stream(this.upperwin.str, fg, bg)\n\t\t\t}\n\t\t}\n\t},\n\n\tset_window: function( window )\n\t{\n\t\tthis.io.currentwin = window;\n\t\t\n\t\t// Focusing the upper window resets the cursor to the top left;\n\t\t// it also opens the upper window if it's not open\n\t\tif ( window )\n\t\t{\n\t\t\tthis.set_cursor( 0, 0 );\n\t\t}\n\n\t\tthis.Glk.glk_set_window( this.upperwin && window ? this.upperwin : this.mainwin );\n\t\tthis.format();\n\t},\n\n\tsplit_window: function( lines )\n\t{\n\t\tvar Glk = this.Glk,\n\t\tio = this.io,\n\t\trow = io.row, col = io.col,\n\t\toldheight = io.height,\n\t\tstr;\n\t\tio.height = lines;\n\n\t\t// Erase existing lines if we are expanding into existing rows\n\t\tif ( this.upperwin && lines > oldheight )\n\t\t{\n\t\t\tstr = Glk.glk_window_get_stream( this.upperwin );\n\t\t\twhile ( oldheight < lines )\n\t\t\t{\n\t\t\t\tGlk.glk_window_move_cursor( this.upperwin, 0, oldheight++ );\n\t\t\t\tGlk.glk_put_jstring_stream( str, Array( io.width + 1 ).join( ' ' ) );\n\t\t\t}\n\t\t\tGlk.glk_window_move_cursor( this.upperwin, col, row );\n\t\t}\n\n\t\t// Don't decrease the height of the window yet, only increase\n\t\tif ( lines > io.maxheight )\n\t\t{\n\t\t\tio.maxheight = lines;\n\n\t\t\t// Set the height of the window\n\t\t\t// Create the window if it doesn't exist\n\t\t\tif ( !this.upperwin )\n\t\t\t{\n\t\t\t\tif (this.io.bg >= 0)\n\t\t\t\t{\n\t\t\t\t\tGlk.glk_stylehint_set(4, 0, 8, this.io.bg)\n\t\t\t\t}\n\t\t\t\tthis.upperwin = Glk.glk_window_open( this.mainwin, 0x12, io.maxheight, 4, 203 );\n\t\t\t\tif (this.Glk.glk_gestalt(0x1100, 0))\n\t\t\t\t{\n\t\t\t\t\tGlk.garglk_set_zcolors_stream(this.upperwin.str, this.io.fg, this.io.bg)\n\t\t\t\t}\n\t\t\t\tGlk.glk_stylehint_clear(4, 0, 8)\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tGlk.glk_window_set_arrangement( Glk.glk_window_get_parent( this.upperwin ), 0x12, io.maxheight, null );\n\t\t\t}\n\t\t\tio.glkheight = io.maxheight\n\t\t}\n\n\t\tif ( lines )\n\t\t{\n\t\t\t// Reset the cursor if it is now outside the window\n\t\t\tif ( io.row >= lines )\n\t\t\t{\n\t\t\t\tthis.set_cursor( 0, 0 );\n\t\t\t}\n\t\t\t// 8.6.1.1.2: In version three the upper window is always cleared\n\t\t\tif ( this.version3 )\n\t\t\t{\n\t\t\t\tGlk.glk_window_clear( this.upperwin );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Update the header after restarting or restoring\n\tupdate_header: function()\n\t{\n\t\tvar ram = this.ram;\n\n\t\t// Reset the Xorshift seed\n\t\tthis.xorshift_seed = 0;\n\n\t\t// Update the screen size variables - in version 3 does not actually set the header variables\n\t\tthis.update_screen_size()\n\n\t\t// For version 3 we only set Flags 1\n\t\tif ( this.version3 )\n\t\t{\n\t\t\treturn ram.setUint8( 0x01,\n\t\t\t\t( ram.getUint8( 0x01 ) & 0x8F ) // Keep all except bits 4-6\n\t\t\t\t| ( this.statuswin ? 0x20 : 0x10 ) // If status win is available then set 0x20 for the upper win also being available, otherwise 0x10 for the status win itself\n\t\t\t\t| 0x40 // Variable pitch font is default - Or can we tell from options if the font is fixed pitch?\n\t\t\t);\n\t\t}\n\t\t\n\t\t// Flags 1\n\t\tram.setUint8( 0x01,\n\t\t\t(this.Glk.glk_gestalt(0x1100, 0) ? 1 : 0) // Check if colour is supported\n\t\t\t| (ram.getUint8(0x01) & 0x02) // Preserve bit 1: Even though this is not specified for versions 4-5/8, it is used by Inform. See https://intfiction.org/t/online-if-game-hosting-at-borogove-io/52617/14\n\t\t\t| 0x1C // Bold, italic and mono are supported\n\t\t\t| 0x00 // Timed input not supported yet\n\t\t);\n\t\t\n\t\t// Flags 2: Clear bits 3, 5, 7: no character graphics, mouse or sound effects\n\t\t// This is really a word, but we only care about the lower byte\n\t\tram.setUint8( 0x11, ram.getUint8( 0x11 ) & 0x57 );\n\t\t\n\t\t// Font height/width in \"units\"\n\t\tif ( this.version > 4 )\n\t\t{\n\t\t\tram.setUint16( 0x26, 0x0101 )\n\t\t}\n\t\t\n\t\t// Colours\n\t\t//ram.setUint8( 0x2C, isNaN( this.options.bg ) ? 1 : this.options.bg );\n\t\t//ram.setUint8( 0x2D, isNaN( this.options.fg ) ? 1 : this.options.fg );\n\t\t//this.extension_table( 5, this.options.fg_true );\n\t\t//this.extension_table( 6, this.options.bg_true );\n\t\t\n\t\t// Z Machine Spec revision\n\t\tram.setUint16( 0x32, 0x0102 );\n\t\t\n\t\t// Clear flags three, we don't support any of that stuff\n\t\tthis.extension_table( 4, 0 );\n\t},\n\n\tupdate_screen_size: function()\n\t{\n\t\tconst Glk = this.Glk\n\t\tconst height_box = new Glk.RefBox()\n\t\tconst width_box = new Glk.RefBox()\n\t\tconst tempwin = Glk.glk_window_open( this.mainwin, 0x12, 0, 4, 0 )\n\t\tlet height = 0\n\t\tlet width = 0\n\n\t\t// The main window is proportional, so its width may not be accurate\n\t\t// If the upper or status window is present, use its width, or else try to make a temp window\n\t\t// The height is the total of all windows\n\n\t\tGlk.glk_window_get_size( this.mainwin, width_box, height_box )\n\t\theight = height_box.get_value()\n\n\t\tif ( this.upperwin )\n\t\t{\n\t\t\tGlk.glk_window_get_size( this.upperwin, width_box, height_box )\n\t\t\theight += height_box.get_value()\n\t\t}\n\t\tif ( this.statuswin )\n\t\t{\n\t\t\tGlk.glk_window_get_size( this.statuswin, width_box, height_box )\n\t\t\theight += height_box.get_value()\n\t\t}\n\t\tif ( tempwin )\n\t\t{\n\t\t\tGlk.glk_window_get_size( tempwin, width_box, 0 )\n\t\t\tGlk.glk_window_close( tempwin )\n\t\t}\n\n\t\t// Use whichever width was available\n\t\twidth = width_box.get_value()\n\n\t\t// Cap the dimensions\n\t\t// Height is capped to 254 as 255 means infinite, which breaks some games\n\t\theight = Math.min( height, 254 )\n\t\twidth = this.io.width = Math.min( width, 255 )\n\n\t\t// Update the header\n\t\tif ( this.version > 3 )\n\t\t{\n\t\t\tthis.ram.setUint8( 0x20, height )\n\t\t\tthis.ram.setUint8( 0x21, width )\n\t\t}\n\t\tif ( this.version > 4 )\n\t\t{\n\t\t\tthis.ram.setUint16( 0x22, width )\n\t\t\tthis.ram.setUint16( 0x24, height )\n\t\t}\n\n\t\t// Fix the cursor if it is outside the window\n\t\tif ( this.io.col >= width )\n\t\t{\n\t\t\tthis.io.col = width - 1\n\t\t}\n\t},\n\t\n\t// Output the version 3 status line\n\tv3_status: function()\n\t{\n\t\tif ( !this.statuswin )\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tvar Glk = this.Glk,\n\t\tstr = Glk.glk_window_get_stream( this.statuswin ),\n\t\tmemory = this.m,\n\t\twidth = this.io.width,\n\t\thours_score = memory.getUint16( this.globals + 2 ),\n\t\tmins_turns = memory.getUint16( this.globals + 4 ),\n\t\tproptable = memory.getUint16( this.objects + 9 * memory.getUint16( this.globals ) + 7 ),\n\t\tshortname = '' + this.decode( proptable + 1, memory.getUint8( proptable ) * 2 ),\n\t\trhs;\n\n\t\t// Handle the turns/score or time\n\t\tif ( memory.getUint8( 0x01 ) & 0x02 )\n\t\t{\n\t\t\trhs = 'Time: ' + ( hours_score % 12 === 0 ? 12 : hours_score % 12 ) + ':' + ( mins_turns < 10 ? '0' : '' ) + mins_turns + ' ' + ( hours_score > 11 ? 'PM' : 'AM' );\n\t\t}\n\t\telse\n\t\t{\n\t\t\trhs = 'Score: ' + hours_score + ' Turns: ' + mins_turns;\n\t\t}\n\n\t\t// Print a blank line in reverse\n\t\tGlk.glk_window_move_cursor( this.statuswin, 0, 0 );\n\t\tGlk.glk_put_jstring_stream( str, Array( width + 1 ).join( ' ' ) );\n\n\t\t// Trim the shortname if necessary\n\t\tGlk.glk_window_move_cursor( this.statuswin, 0, 0 );\n\t\tGlk.glk_put_jstring_stream( str, ' ' + shortname.slice( 0, width - rhs.length - 4 ) );\n\n\t\t// Print the right hand side\n\t\tGlk.glk_window_move_cursor( this.statuswin, width - rhs.length - 1, 0 );\n\t\tGlk.glk_put_jstring_stream( str, rhs );\n\t},\n\n};\n", "/*\n\nZ-Machine disassembler - disassembles zcode into an AST\n=======================================================\n\nCopyright (c) 2011 The ifvms.js team\nBSD licenced\nhttp://github.com/curiousdannii/ifvms.js\n\n*/\n\n/*\n\nNote:\n\tNothing is done to check whether an instruction actually has a valid number of operands. Extras will usually be ignored while missing operands may throw errors at either the code building stage or when the JIT code is called.\n\nTODO:\n\tIf we diassessemble part of what we already have before, can we just copy/slice the context?\n\n*/\n\nvar AST = require( '../common/ast.js' );\n\nmodule.exports.disassemble = function()\n{\n\tvar pc, offset, // Set in the loop below\n\tmemory = this.m,\n\topcodes = this.opcodes,\n\ttemp,\n\tcode,\n\topcode_class,\n\toperands_type, // The types of the operands, or -1 for var instructions\n\toperands,\n\n\t// Create the context for this code fragment\n\tcontext = new AST.RoutineContext( this, this.pc );\n\n\t// Utility function to unpack the variable form operand types byte\n\tfunction get_var_operand_types( operands_byte, operands_type )\n\t{\n\t\tfor ( var i = 0; i < 4; i++ )\n\t\t{\n\t\t\toperands_type.push( (operands_byte & 0xC0) >> 6 );\n\t\t\toperands_byte <<= 2;\n\t\t}\n\t}\n\n\t// Set the context's root context to be itself, and add it to the list of subcontexts\n\t//context.root = context;\n\t//context.contexts[0] = context;\n\n\t// Run through until we can no more\n\twhile ( 1 )\n\t{\n\t\t// This instruction\n\t\toffset = pc = this.pc;\n\t\tcode = memory.getUint8( pc++ );\n\n\t\t// Extended instructions\n\t\tif ( code === 190 )\n\t\t{\n\t\t\toperands_type = -1;\n\t\t\tcode = memory.getUint8( pc++ ) + 1000;\n\t\t}\n\n\t\telse if ( code & 0x80 )\n\t\t{\n\t\t\t// Variable form instructions\n\t\t\tif ( code & 0x40 )\n\t\t\t{\n\t\t\t\toperands_type = -1;\n\t\t\t\t// 2OP instruction with VAR parameters\n\t\t\t\tif ( !(code & 0x20) )\n\t\t\t\t{\n\t\t\t\t\tcode &= 0x1F;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Short form instructions\n\t\t\telse\n\t\t\t{\n\t\t\t\toperands_type = [ (code & 0x30) >> 4 ];\n\t\t\t\t// Clear the operand type if 1OP, keep for 0OPs\n\t\t\t\tif ( operands_type[0] < 3 )\n\t\t\t\t{\n\t\t\t\t\tcode &= 0xCF;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Long form instructions\n\t\telse\n\t\t{\n\t\t\toperands_type = [ code & 0x40 ? 2 : 1, code & 0x20 ? 2 : 1 ];\n\t\t\tcode &= 0x1F;\n\t\t}\n\n\t\t// Check for missing opcodes\n\t\tif ( !opcodes[code] )\n\t\t{\n\t\t\tthis.log( '' + context );\n\t\t\tthis.stop = 1;\n\t\t\tthrow new Error( 'Unknown opcode #' + code + ' at pc=' + offset );\n\t\t}\n\n\t\t// Variable for quicker access to the opcode flags\n\t\topcode_class = opcodes[code].prototype;\n\n\t\t// Variable form operand types\n\t\tif ( operands_type === -1 )\n\t\t{\n\t\t\toperands_type = [];\n\t\t\tget_var_operand_types( memory.getUint8(pc++), operands_type );\n\n\t\t\t// VAR_LONG opcodes have two operand type bytes\n\t\t\tif ( code === 236 || code === 250 )\n\t\t\t{\n\t\t\t\tget_var_operand_types( memory.getUint8(pc++), operands_type );\n\t\t\t}\n\t\t}\n\n\t\t// Load the operands\n\t\toperands = [];\n\t\ttemp = 0;\n\t\twhile ( temp < operands_type.length )\n\t\t{\n\t\t\t// Large constant\n\t\t\tif ( operands_type[temp] === 0 )\n\t\t\t{\n\t\t\t\toperands.push( new AST.Operand( this, memory.getUint16(pc) ) );\n\t\t\t\tpc += 2;\n\t\t\t}\n\n\t\t\t// Small constant\n\t\t\tif ( operands_type[temp] === 1 )\n\t\t\t{\n\t\t\t\toperands.push( new AST.Operand( this, memory.getUint8(pc++) ) );\n\t\t\t}\n\n\t\t\t// Variable operand\n\t\t\tif ( operands_type[temp++] === 2 )\n\t\t\t{\n\t\t\t\toperands.push( new AST.Variable( this, memory.getUint8(pc++) ) );\n\t\t\t}\n\t\t}\n\n\t\t// Check for a store variable\n\t\tif ( opcode_class.storer )\n\t\t{\n\t\t\toperands.push( new AST.Variable( this, memory.getUint8(pc++) ) );\n\t\t}\n\n\t\t// Check for a branch address\n\t\t// If we don't calculate the offset now we won't be able to tell the difference between 0x40 and 0x0040\n\t\tif ( opcode_class.brancher )\n\t\t{\n\t\t\ttemp = memory.getUint8( pc++ );\n\t\t\toperands.push( [\n\t\t\t\ttemp & 0x80, // iftrue\n\t\t\t\ttemp & 0x40 ?\n\t\t\t\t\t// single byte address\n\t\t\t\t\ttemp & 0x3F :\n\t\t\t\t\t// word address, but first get the second byte of it\n\t\t\t\t\t( temp << 8 | memory.getUint8( pc++ ) ) << 18 >> 18,\n\t\t\t] );\n\t\t}\n\n\t\t// Check for a text literal\n\t\tif ( opcode_class.printer )\n\t\t{\n\t\t\t// Just use the address as an operand, the text will be decoded at run time\n\t\t\toperands.push( pc );\n\n\t\t\t// Continue until we reach the stop bit\n\t\t\t// (or the end of the file, which will stop memory access errors, even though it must be a malformed storyfile)\n\t\t\twhile ( pc < this.eof )\n\t\t\t{\n\t\t\t\ttemp = memory.getUint8( pc );\n\t\t\t\tpc += 2;\n\n\t\t\t\t// Stop bit\n\t\t\t\tif ( temp & 0x80 )\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update the engine's pc\n\t\tthis.pc = pc;\n\n\t\t// Create the instruction\n\t\tcontext.ops.push( new opcodes[code]( this, context, code, offset, pc, operands ) );\n\n\t\t// Check for the end of a large if block\n\t\ttemp = 0;\n\t\t/*if ( context.targets.indexOf( pc ) >= 0 )\n\t\t{\n\t\t\tif ( DEBUG )\n\t\t\t{\n\t\t\t\t// Skip if we must\n\t\t\t\tif ( !debugflags.noidioms )\n\t\t\t\t{\n\t\t\t\t\ttemp = idiom_if_block( context, pc );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttemp = idiom_if_block( context, pc );\n\t\t\t}\n\t\t}*/\n\n\t\t// We can't go any further if we have a final stopper :(\n\t\tif ( opcode_class.stopper && !temp )\n\t\t{\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn context;\n};\n", "/*\n\nZVM - the ifvms.js Z-Machine (versions 3-5, 8)\n==============================================\n\nCopyright (c) 2017 The ifvms.js team\nMIT licenced\nhttps://github.com/curiousdannii/ifvms.js\n\n*/\n\n/*\n\nThis file is the public API of ZVM, which is based on the API of Quixe:\nhttps://github.com/erkyrath/quixe/wiki/Quixe-Without-GlkOte#quixes-api\n\nZVM willfully ignores the standard in these ways:\n\tNon-buffered output is not supported\n\tSaving tables is not supported (yet?)\n\tNo interpreter number or version is set\n\nAny other non-standard behaviour should be considered a bug\n\n*/\n\n'use strict';\n\nvar utils = require( './common/utils.js' ),\nfile = require( './common/file.js' ),\n\ndefault_options = {\n\tstack_len: 100 * 1000,\n\tundo_len: 1000 * 1000,\n},\n\napi = {\n\n\tinit: function()\n\t{\n\t\t// Create this here so that it won't be cleared on restart\n\t\tthis.jit = {};\n\t\t\n\t\t// The Quixe API expects the start function to be named init\n\t\tthis.init = this.start;\n\t},\n\n\tprepare: function( storydata, options )\n\t{\n\t\t// If we are not given a glk option then we cannot continue\n\t\tif ( !options.Glk )\n\t\t{\n\t\t\tthrow new Error( 'A reference to Glk is required' );\n\t\t}\n\t\tthis.Glk = options.Glk;\n\t\tthis.data = storydata;\n\t\tthis.options = utils.extend( {}, default_options, options );\n\t},\n\n\tstart: function()\n\t{\n\t\tvar Glk = this.Glk,\n\t\tdata;\n\t\ttry\n\t\t{\n\t\t\t// Identify the format and version number of the data file we were given\n\t\t\tdata = file.identify( this.data );\n\t\t\tdelete this.data;\n\t\t\tif ( !data || data.format !== 'ZCOD' )\n\t\t\t{\n\t\t\t\tthrow new Error( 'This is not a Z-Code file' );\n\t\t\t}\n\t\t\tif ( [ 3, 4, 5, 8 ].indexOf( data.version ) < 0 )\n\t\t\t{\n\t\t\t\tthrow new Error( 'Unsupported Z-Machine version: ' + data.version );\n\t\t\t}\n\t\t\t\n\t\t\t// Load the storyfile we are given into our MemoryView (an enhanced DataView)\n\t\t\tthis.m = utils.MemoryView( data.data );\n\t\t\t\n\t\t\t// Make a seperate MemoryView for the ram, and store the original ram\n\t\t\tthis.staticmem = this.m.getUint16( 0x0E );\n\t\t\tthis.ram = utils.MemoryView( this.m, 0, this.staticmem );\n\t\t\tthis.origram = this.m.getUint8Array( 0, this.staticmem );\n\n\t\t\t// Cache the game signature\n\t\t\tlet signature = ''\n\t\t\tlet i = 0\n\t\t\twhile ( i < 0x1E )\n\t\t\t{\n\t\t\t\tsignature += ( this.origram[i] < 0x10 ? '0' : '' ) + this.origram[i++].toString( 16 )\n\t\t\t}\n\t\t\tthis.signature = signature\n\n\t\t\t// Handle loading and clearing autosaves\n\t\t\tlet autorestored\n\t\t\tconst Dialog = this.options.Dialog\n\t\t\tif ( Dialog )\n\t\t\t{\n\t\t\t\tif ( this.options.clear_vm_autosave )\n\t\t\t\t{\n\t\t\t\t\tDialog.autosave_write( signature, null )\n\t\t\t\t}\n\t\t\t\telse if ( this.options.do_vm_autosave )\n\t\t\t\t{\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tconst snapshot = Dialog.autosave_read( signature )\n\t\t\t\t\t\tif ( snapshot )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.do_autorestore( snapshot )\n\t\t\t\t\t\t\tautorestored = 1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (ex)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.log('Autorestore failed, deleting it: ' + ex)\n\t\t\t\t\t\tDialog.autosave_write( signature, null )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Initiate the engine, run, and wait for our first Glk event\n\t\t\tif ( !autorestored )\n\t\t\t{\n\t\t\t\tthis.restart();\n\t\t\t\tthis.run();\n\t\t\t}\n\t\t\tif ( !this.quit )\n\t\t\t{\n\t\t\t\tthis.glk_event = new Glk.RefStruct();\n\t\t\t\tif ( !this.glk_blocking_call )\n\t\t\t\t{\n\t\t\t\t\tGlk.glk_select( this.glk_event );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.glk_event.push_field( this.glk_blocking_call );\n\t\t\t\t}\n\t\t\t}\n\t\t\tGlk.update()\n\t\t}\n\t\tcatch ( e )\n\t\t{\n\t\t\tGlk.fatal_error( e );\n\t\t\tconsole.log( e );\n\t\t}\n\t},\n\n\tresume: function( resumearg )\n\t{\n\t\tvar Glk = this.Glk,\n\t\tglk_event = this.glk_event,\n\t\tevent_type,\n\t\trun;\n\t\t\n\t\ttry\n\t\t{\n\t\t\tevent_type = glk_event.get_field( 0 );\n\t\t\t\n\t\t\t// Process the event\n\t\t\tif ( event_type === 2 )\n\t\t\t{\n\t\t\t\tthis.handle_char_input( glk_event.get_field( 2 ) );\n\t\t\t\trun = 1;\n\t\t\t}\n\t\t\tif ( event_type === 3 )\n\t\t\t{\n\t\t\t\tthis.handle_line_input( glk_event.get_field( 2 ), glk_event.get_field( 3 ) );\n\t\t\t\trun = 1;\n\t\t\t}\n\n\t\t\t// Arrange events\n\t\t\tif ( event_type === 5 )\n\t\t\t{\n\t\t\t\tthis.update_screen_size()\n\t\t\t}\n\n\t\t\t// glk_fileref_create_by_prompt handler\n\t\t\tif ( event_type === 'fileref_create_by_prompt' )\n\t\t\t{\n\t\t\t\trun = this.handle_create_fileref( resumearg );\n\t\t\t}\n\t\t\t\n\t\t\tthis.glk_blocking_call = null;\n\t\t\tif ( run )\n\t\t\t{\n\t\t\t\tthis.run();\n\t\t\t}\n\t\t\t\n\t\t\t// Wait for another event\n\t\t\tif ( !this.quit )\n\t\t\t{\n\t\t\t\tthis.glk_event = new Glk.RefStruct();\n\t\t\t\tif ( !this.glk_blocking_call )\n\t\t\t\t{\n\t\t\t\t\tGlk.glk_select( this.glk_event );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.glk_event.push_field( this.glk_blocking_call );\n\t\t\t\t}\n\t\t\t}\n\t\t\tGlk.update()\n\t\t}\n\t\tcatch ( e )\n\t\t{\n\t\t\tGlk.fatal_error( e );\n\t\t\tconsole.log( e );\n\t\t}\n\t},\n\t\n\tget_signature: function()\n\t{\n\t\treturn this.signature\n\t},\n\n\t// Run\n\trun: function()\n\t{\n\t\tvar pc,\n\t\tresult;\n\n\t\t// Stop when ordered to\n\t\tthis.stop = 0;\n\t\twhile ( !this.stop )\n\t\t{\n\t\t\tpc = this.pc;\n\t\t\tif ( !this.jit[pc] )\n\t\t\t{\n\t\t\t\tthis.compile();\n\t\t\t}\n\t\t\tresult = this.jit[pc]( this );\n\n\t\t\t// Return from a VM func if the JIT function returned a result\n\t\t\tif ( !isNaN( result ) )\n\t\t\t{\n\t\t\t\tthis.ret( result );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Compile a JIT routine\n\tcompile: function()\n\t{\n\t\tvar context = this.disassemble();\n\t\t\n\t\t// Compile the routine with new Function()\n\t\tthis.jit[context.pc] = new Function( 'e', '' + context );\n\n\t\tif ( context.pc < this.staticmem )\n\t\t{\n\t\t\tthis.log( 'Caching a JIT function in dynamic memory: ' + context.pc );\n\t\t}\n\t},\n\n},\n\nVM = utils.Class.subClass( utils.extend(\n\tapi,\n\trequire( './zvm/runtime.js' ),\n\trequire( './zvm/text.js' ),\n\trequire( './zvm/io.js' ),\n\trequire( './zvm/disassembler.js' )\n) );\n\nmodule.exports = VM;\n", "/*\n\nZVM Glk dispatch layer\n======================\n\nCopyright (c) 2023 The ifvms.js team\nMIT licenced\nhttps://github.com/curiousdannii/ifvms.js\n\n*/\n\nconst dummyArgInt = {\n\tserialize: () => ({}),\n}\n\nclass ZVMDispatch\n{\n\tconstructor()\n\t{\n\t\tthis.class_map = {\n\t\t\t'fileref': {},\n\t\t\t'stream': {},\n\t\t\t'window': {},\n\t\t}\n\t\tthis.last_used_id = 101\n\t}\n\n\tinit(options)\n\t{\n\t\tthis.vm = options.vm\n\t}\n\n\tcheck_autosave()\n\t{\n\t\treturn !this.vm.glk_blocking_call\n\t}\n\n\tclass_obj_from_id( clas, val )\n\t{\n\t\treturn this.class_map[clas][val]\n\t}\n\n\tclass_register( clas, obj, usedisprock )\n\t{\n\t\tif ( usedisprock )\n\t\t{\n\t\t\tif ( obj.disprock !== usedisprock )\n\t\t\t{\n\t\t\t\tthrow new Error( 'class_register: object is not already registered' )\n\t\t\t}\n\t\t\tif ( this.last_used_id <= usedisprock )\n\t\t\t{\n\t\t\t\tthis.last_used_id = usedisprock + 1\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif ( obj.disprock )\n\t\t\t{\n\t\t\t\tthrow new Error( 'class_register: object is already registered' )\n\t\t\t}\n\t\t\tobj.disprock = this.last_used_id++\n\t\t}\n\t\tthis.class_map[clas][obj.disprock] = obj\n\t}\n\n\tclass_unregister( clas, obj )\n\t{\n\t\tif ( !obj.disprock || this.class_map[clas][obj.disprock] == null )\n\t\t{\n\t\t\tthrow new Error( 'class_unregister: object is not registered' )\n\t\t}\n\t\tdelete this.class_map[clas][obj.disprock]\n\t\tobj.disprock = null\n\t}\n\n\tget_retained_array( arr )\n\t{\n\t\treturn {\n\t\t\targ: dummyArgInt,\n\t\t\tarr: arr.slice(),\n\t\t\tlen: arr.length,\n\t\t}\n\t}\n\n\tprepare_resume()\n\t{}\n\n\tretain_array()\n\t{}\n\n\tset_vm( vm )\n\t{\n\t\tthis.vm = vm\n\t}\n\n\tunretain_array()\n\t{}\n}\n\n// Export the class and an instance\nif ( typeof module === 'object' && module.exports )\n{\n\tmodule.exports = ZVMDispatch\n}\nif ( typeof window !== 'undefined' )\n{\n\twindow.GiDispa = new ZVMDispatch()\n}", "// Export ZVM engine\n\nimport ZVM from '../upstream/ifvms.js/src/zvm.js'\nimport ZVMDispatch from '../upstream/ifvms.js/src/zvm/dispatch.js'\n\nexport {ZVM, ZVMDispatch}"],
- "mappings": "qhBAAA,IAAAA,EAAAC,EAAA,CAAAC,GAAAC,IAAA,cAcA,SAASC,GACT,CAEC,QADIC,EAAM,UAAU,CAAC,EAAG,EAAI,EAAGC,EAAKC,EAC5B,EAAI,UAAU,QACtB,CACCD,EAAM,UAAU,GAAG,EACnB,IAAMC,KAAQD,EAEbD,EAAIE,CAAI,EAAID,EAAIC,CAAI,CAEtB,CACA,OAAOF,CACR,CAMA,SAASG,GACT,CAAC,CAEDA,EAAM,SAAW,SAAUC,EAC3B,CACC,SAASC,GACT,CACM,KAAK,MAET,KAAK,KAAK,MAAO,KAAM,SAAU,CAEnC,CACA,OAAAA,EAAS,UAAYN,EAAQ,OAAO,OAAQ,KAAK,SAAU,EAAGK,CAAM,EACpEC,EAAS,SAAW,KAAK,SACzBA,EAAS,MAAQA,EAAS,UAAU,MAAQ,KAAK,UAC1CA,CACR,EAIA,SAASC,GAAYC,EAAQC,EAAYC,EACzC,CAEC,OAAK,OAAOF,GAAW,SAEtBA,EAAS,IAAI,YAAaA,CAAO,EAIxBA,EAAO,SAKhBC,GAAc,EAST,OAAOC,EAAe,MAE1BA,EAAaF,EAAO,WAAaC,GAKlCA,GAAcD,EAAO,WAGrBA,EAASA,EAAO,QAIVR,EAAQ,IAAI,SAAUQ,EAAQC,EAAYC,CAAW,EAAG,CAC9D,cAAe,SAAUC,EAAOC,EAChC,CAGC,OAAAD,GAAS,KAAK,WAEP,IAAI,WAAY,KAAK,OAAO,MAAOA,EAAOA,EAAQC,CAAO,CAAE,CACnE,EACA,eAAgB,SAAUD,EAAOC,EACjC,CAGC,OAAAD,GAAS,KAAK,WAGPE,EAAoB,IAAI,WAAY,KAAK,OAAQF,EAAOC,EAAS,CAAE,CAAE,CAC7E,EACA,cAAe,SAAUD,EAAOG,EAChC,CACMA,aAAgB,cAEpBA,EAAO,IAAI,WAAYA,CAAK,GAE3B,IAAI,WAAY,KAAK,OAAQ,KAAK,WAAY,KAAK,UAAW,EAAI,IAAKA,EAAMH,CAAM,CACtF,EAIA,UAAW,SAAUI,EACrB,CACC,OAAO,OAAO,aAAc,KAAK,SAAUA,CAAM,EAAG,KAAK,SAAUA,EAAQ,CAAE,EAAG,KAAK,SAAUA,EAAQ,CAAE,EAAG,KAAK,SAAUA,EAAQ,CAAE,CAAE,CACxI,EACA,UAAW,SAAUA,EAAOC,EAC5B,CACC,KAAK,SAAUD,EAAOC,EAAK,WAAY,CAAE,CAAE,EAC3C,KAAK,SAAUD,EAAQ,EAAGC,EAAK,WAAY,CAAE,CAAE,EAC/C,KAAK,SAAUD,EAAQ,EAAGC,EAAK,WAAY,CAAE,CAAE,EAC/C,KAAK,SAAUD,EAAQ,EAAGC,EAAK,WAAY,CAAE,CAAE,CAChD,CACD,CAAE,CACH,CAGA,SAASC,GAAOC,EAChB,CACC,OAAOA,GAAS,IAAM,EACvB,CACA,SAASC,GAAQD,EACjB,CACC,OAAOA,EAAQ,KAChB,CAGA,SAASL,EAAoBO,EAC7B,CAGC,QAFI,EAAI,EAAGC,EAAID,EAAM,OACrBE,EAAS,IAAI,YAAaD,EAAI,CAAE,EACxB,EAAIA,GAEXC,EAAO,EAAI,CAAC,EAAIF,EAAM,GAAG,GAAK,EAAIA,EAAM,GAAG,EAE5C,OAAOE,CACR,CAEAvB,EAAO,QAAU,CAChB,OAAQC,EACR,MAAOI,EACP,WAAYG,GACZ,MAAOU,GACP,MAAOE,GACP,mBAAoBN,CACrB,ICjKA,IAAAU,EAAAC,EAAA,CAAAC,GAAAC,KAAA,cAaA,IAAIC,EAAQ,IACZC,EAAaD,EAAM,WAInBE,EAAMF,EAAM,MAAM,SAAS,CAC1B,KAAM,SAAUG,EAChB,CAIC,GAHA,KAAK,KAAO,GACZ,KAAK,OAAS,CAAC,EAEVA,EACL,CACC,IAAIC,EAAOH,EAAYE,CAAK,EAC5BE,EAAI,GAAIC,EAAQC,EAGhB,GAAKH,EAAK,UAAW,CAAE,IAAM,OAE5B,MAAM,IAAI,MAAO,iBAAkB,EAOpC,IAHA,KAAK,KAAOA,EAAK,UAAW,CAAE,EAC9BE,EAASF,EAAK,UAAW,CAAE,EAAI,EAEvBC,EAAIC,GACZ,CAGC,GAFAC,EAAeH,EAAK,UAAWC,EAAI,CAAE,EAEhCE,EAAe,GAAOA,EAAeF,EAAMC,EAE/C,MAAM,IAAI,MAAO,wBAAyB,EAG3C,KAAK,OAAO,KAAK,CAChB,KAAMF,EAAK,UAAWC,CAAE,EACxB,OAAQA,EACR,KAAMD,EAAK,cAAeC,EAAI,EAAGE,CAAa,CAC/C,CAAC,EAEDF,GAAK,EAAIE,EACJA,EAAe,GAEnBF,GAEF,CACD,CACD,EAEA,MAAO,UACP,CAMC,QAJIG,EAAa,GAAI,EAAI,EAAGC,EAAQ,GACpCC,EAAKC,EAGG,EAAI,KAAK,OAAO,QAGlB,KAAK,OAAO,CAAC,EAAE,KAAK,SAExB,KAAK,OAAO,CAAC,EAAE,KAAO,KAAK,OAAO,CAAC,EAAE,KAAK,QAE3C,KAAK,OAAO,CAAC,EAAE,OAAS,KAAK,OAAO,CAAC,EAAE,KAAK,YAAc,KAAK,OAAO,CAAC,EAAE,KAAK,OAC9EH,GAAc,EAAI,KAAK,OAAO,GAAG,EAAE,OAC9BA,EAAa,GAEjBA,IAWF,IAPAE,EAAMT,EAAYO,CAAW,EAC7BE,EAAI,UAAW,EAAG,MAAO,EACzBA,EAAI,UAAW,EAAGF,EAAa,CAAE,EACjCE,EAAI,UAAW,EAAG,KAAK,IAAK,EAG5B,EAAI,EACI,EAAI,KAAK,OAAO,QAEvBC,EAAQ,KAAK,OAAO,GAAG,EACvBD,EAAI,UAAWD,EAAOE,EAAM,IAAK,EACjCD,EAAI,UAAWD,EAAQ,EAAGE,EAAM,MAAO,EACvCD,EAAI,cAAeD,EAAQ,EAAGE,EAAM,IAAK,EACzCF,GAAS,EAAIE,EAAM,OACdF,EAAQ,GAEZA,IAIF,OAAOC,EAAI,MACZ,CACD,CAAC,EAEDE,EAAQV,EAAI,SAAS,CACpB,KAAM,SAAUC,EAChB,CAEC,GADA,KAAK,MAAM,KAAK,KAAM,KAAMA,CAAK,EAC5BA,EACL,CACC,GAAK,KAAK,OAAS,OAElB,MAAM,IAAI,MAAO,kBAAmB,EAIrC,GAAK,KAAK,OAAO,CAAC,EAAE,OAAS,OAE5B,MAAM,IAAI,MAAO,sCAAuC,EAIzD,QAFIC,EAAOH,EAAY,KAAK,OAAO,CAAC,EAAE,IAAK,EAC3CI,EAAI,EACIA,EAAI,KAAK,OAAO,CAAC,EAAE,KAAK,QAChC,CACC,GAAKD,EAAK,UAAWC,CAAE,IAAM,QAAUD,EAAK,UAAWC,EAAI,CAAE,IAAM,EACnE,CACC,KAAK,KAAO,KAAK,OAAO,OAAQ,SAAUM,EAC1C,CACC,OAAOA,EAAM,SAAWP,EAAK,UAAWC,EAAI,CAAE,CAC/C,CAAC,EAAE,CAAC,EACJ,MACD,CACAA,GAAK,EACN,CACD,CACD,CACD,CAAC,EAEDQ,GAAUX,EAAI,SAAS,CAEtB,KAAM,SAAUC,EAChB,CAEC,GADA,KAAK,MAAM,KAAK,KAAM,KAAMA,CAAK,EAC5BA,EACL,CAEC,GAAK,KAAK,OAAS,OAElB,MAAM,IAAI,MAAO,wBAAyB,EAO3C,QAHI,EAAI,EACRW,EAAMC,EAAYX,EAEV,EAAI,KAAK,OAAO,QAEvBU,EAAO,KAAK,OAAO,CAAC,EAAE,KACtBC,EAAa,KAAK,OAAO,GAAG,EAAE,KAGzBD,IAAS,QAAUA,IAAS,QAEhC,KAAK,OAASC,EACd,KAAK,WAAeD,IAAS,QAEpBA,IAAS,OAElB,KAAK,OAASC,EAILD,IAAS,SAElBV,EAAOH,EAAYc,EAAW,MAAO,EACrC,KAAK,QAAUX,EAAK,UAAW,CAAE,EACjC,KAAK,OAASA,EAAK,cAAe,EAAG,CAAE,EAEvC,KAAK,SAAWA,EAAK,UAAW,CAAE,EAElC,KAAK,GAAKA,EAAK,UAAW,CAAE,EAAI,SAGnC,CACD,EAGA,MAAO,UACP,CAEC,KAAK,KAAO,OAGZ,IAAIY,EAAOf,EAAY,EAAG,EAC1B,OAAAe,EAAK,UAAW,EAAG,KAAK,OAAQ,EAChCA,EAAK,cAAe,EAAG,KAAK,MAAO,EACnCA,EAAK,UAAW,EAAG,KAAK,EAAG,EAC3BA,EAAK,UAAW,EAAG,KAAK,QAAS,EAGjC,KAAK,OAAS,CACb,CAAE,KAAM,OAAQ,KAAMA,CAAK,EAC3B,CAAE,KAAQ,KAAK,WAAa,OAAS,OAAU,KAAM,KAAK,MAAO,EACjE,CAAE,KAAM,OAAQ,KAAM,KAAK,MAAO,CACnC,EAGO,KAAK,MAAM,MAAM,KAAM,IAAK,CACpC,CACD,CAAC,EAGD,SAASC,GAAUC,EACnB,CACC,IAAId,EAAOH,EAAYiB,CAAO,EAC9BC,EACAC,EACAC,EAqCA,GAlCKjB,EAAK,UAAW,CAAE,IAAM,QAAUA,EAAK,UAAW,CAAE,IAAM,QAE9De,EAAQ,IAAIP,EAAOM,CAAO,EACrBC,EAAM,OAEVC,EAASD,EAAM,KAAK,KACpBD,EAASC,EAAM,KAAK,KACfC,IAAW,SAEfhB,EAAOH,EAAYiB,CAAO,EAC1BG,EAAUjB,EAAK,UAAW,CAAE,GAExBgB,IAAW,SAEfC,EAAUH,EAAO,CAAC,KAKXd,EAAK,UAAW,CAAE,IAAM,QAEjCgB,EAAS,OACTC,EAAUjB,EAAK,UAAW,CAAE,IAK5BiB,EAAUjB,EAAK,SAAU,CAAE,EACtBiB,EAAU,GAAKA,EAAU,IAE7BD,EAAS,SAINA,GAAUC,EAEd,MAAO,CACN,OAAQD,EACR,QAASC,EACT,KAAMH,CACP,CAEF,CAEAnB,GAAO,QAAU,CAChB,IAAKG,EACL,MAAOU,EACP,QAASC,GACT,SAAUI,EACX,IClRA,IAAAK,EAAAC,EAAA,CAAAC,GAAAC,KAAA,cA8BA,IAAIC,GAAQ,IACZC,EAAQD,GAAM,MACdE,GAAMF,GAAM,MAKZG,GAAUF,EAAM,SAAS,CACxB,KAAM,SAAUG,EAAQC,EACxB,CACC,KAAK,EAAID,EACT,KAAK,EAAIC,CACV,EACA,SAAU,UACV,CACC,OAAO,KAAK,CACb,EAGA,IAAK,UACL,CACC,OAAOH,GAAK,KAAK,CAAE,CACpB,CACD,CAAC,EAKDI,GAAWH,GAAQ,SAAS,CAE3B,SAAU,UACV,CACC,IAAII,EAAW,KAAK,EAGpB,OAAK,KAAK,SAEF,cAAgBA,EAAW,IAI9BA,IAAa,EAGV,YAGH,EAAEA,EAAW,GAEV,KAAOA,EAAW,IAGnB,kBAAqB,KAAK,EAAE,SAAYA,EAAW,IAAO,GAAM,GACxE,EAGA,MAAO,SAAUF,EACjB,CACC,IAAIE,EAAW,KAAK,EAGpB,OAAK,KAAK,SAEF,cAAgBA,EAAW,IAAMF,EAAQ,IAI5C,KAAK,UAEF,cAAgBE,EAAW,IAAMF,EAAQ,IAI5CE,IAAa,EAGV,KAAOF,EAAQ,eAGlB,EAAEE,EAAW,GAEV,KAAOA,EAAW,KAAOF,EAG1B,oBAAuB,KAAK,EAAE,SAAYE,EAAW,IAAO,GAAM,IAAMF,EAAQ,GACxF,EAGA,IAAK,UACL,CACC,MAAO,SAAW,KAAO,GAC1B,CACD,CAAC,EAIDG,EAASP,EAAM,SAAS,CACvB,KAAM,SAAUG,EAAQK,EAASC,EAAMC,EAAIC,EAAMC,EACjD,CACC,KAAK,EAAIT,EACT,KAAK,QAAUK,EACf,KAAK,KAAOC,EACZ,KAAK,GAAKC,EACV,KAAK,OAAS,CAAE,KAAK,GAAK,IAAM,KAAK,IAAK,EAC1C,KAAK,KAAOC,EACZ,KAAK,SAAWC,EAGX,KAAK,MAET,KAAK,KAAK,CAEZ,EAGA,SAAU,UACV,CACC,OAAO,KAAK,MAAM,GAAM,KAAK,KAAO,KAAK,KAAK,MAAO,KAAM,KAAK,QAAS,EAAI,GAC9E,EAGA,KAAM,SAAUC,EAChB,CACC,OAAO,KAAK,SAAS,KAAMA,CAAO,CACnC,EAGA,MAAO,UACP,CACC,MAAO,MAAQ,KAAK,OAAO,KAAK,EAAI,MACrC,CACD,CAAC,EAGDC,EAAUP,EAAO,SAAS,CACzB,QAAS,CACV,CAAC,EAGDQ,GAASD,EAAQ,SAAS,CACzB,KAAM,UACN,CACC,KAAK,SAAW,KAAK,KACrB,KAAK,KAAO,KAAK,OAClB,EAEA,QAAS,UACT,CACC,MAAO,iBAAmB,KAAK,KAAO,IAAM,KAAK,SAAS,MAAO,KAAM,SAAU,CAClF,CACD,CAAC,EAEDE,GAAeD,GAAO,SAAS,CAC9B,OAAQ,EAER,KAAM,UACN,CACC,KAAK,OAAS,KAAK,SAAS,IAAI,EAChC,KAAK,SAAW,KAAK,KACrB,KAAK,KAAO,KAAK,OAClB,CACD,CAAC,EAGDE,GAAgBjB,EAAM,SAAS,CAC9B,KAAM,SAAUkB,EAAKT,EACrB,CACC,KAAK,IAAMS,GAAO,CAAC,EACnB,KAAK,KAAOT,GAAQ,IACrB,EAEA,SAAU,UACV,CAIC,QAHIU,EAAI,EACRD,EAAM,CAAC,EACPE,EACQD,EAAI,KAAK,IAAI,QAEpBC,EAAK,KAAK,IAAID,GAAG,EAEjBD,EAAI,KACHE,EAAG,MACAA,EAAG,OAAS,GAAK,MAASA,EAAG,KAAK,MAAOA,EAAIA,EAAG,QAAS,GAAMA,EAAG,OAAS,GAAK,KAClFA,CACF,EAED,OAAS,KAAK,OAAS,MAAQ,KAAQF,EAAI,KAAM,KAAK,IAAK,GAAM,KAAK,OAAS,KAAO,IACvF,CACD,CAAC,EAGDG,GAAWd,EAAO,SAAS,CAE1B,SAAU,EAEV,QAAS,KAGT,KAAM,UACN,CACC,IAAIe,EACJC,EAGAC,EAAW,KAAK,SAAS,IAAI,EAC7BC,EAASD,EAAS,CAAC,EACnB,KAAK,OAASA,EAAS,CAAC,EAGnBC,IAAW,GAAKA,IAAW,EAE/BH,EAAS,SAAWG,EAAS,KAI7BA,GAAU,KAAK,KAAO,EAGtB,KAAK,QAAQ,QAAQ,KAAMA,CAAO,EAClCH,EAAS,QAAUG,GAGpB,KAAK,OAASH,EAAS,UACvB,KAAK,OAASG,EACd,KAAK,KAAO,IAAIR,GAAe,CAAC,IAAI,CAAE,EAajC,KAAK,QAAQ,IAAI,SAErBM,EAAO,KAAK,QAAQ,IAAI,IAAI,EAEWA,EAAK,SAAWE,GAGtD,KAAK,KAAK,IAAI,QAASF,EAAK,IAAK,EACjC,KAAK,OAASA,EAAK,OACnB,KAAK,OAAO,KAAM,KAAK,GAAK,IAAM,KAAK,IAAK,GAI5C,KAAK,QAAQ,IAAI,KAAMA,CAAK,EAG/B,EAGA,SAAU,UACV,CACC,IAAID,EAAS,KAAK,OAGlB,OAAKA,aAAkBI,IAGjB,KAAK,EAAE,QAAQ,QAEnBJ,EAAO,QAAU,KAAK,SAGvBA,EAASA,GAAWA,EAAO,QAAU,WAAa,IAG7C,KAAK,OAAO,IAAI,OAAS,IAE7BA,EAAS;AAAA,EAAOA,EAAS;AAAA,EACpB,KAAK,EAAE,QAAQ,QAEnBA,GAAU,KAAK,QAAQ,UAMnB,KAAK,MAAM,EAAI,KAAK,QAAU,KAAK,KAAO,KAAOA,EAAS,GAClE,CACD,CAAC,EAGDK,GAAiBN,GAAS,SAAS,CAClC,OAAQ,EAGR,KAAM,UACN,CACCM,GAAe,MAAM,KAAK,KAAM,IAAK,EACrC,KAAK,OAAS,KAAK,SAAS,IAAI,EAChC,KAAK,OAAO,UAAY,EAGxB,KAAK,SAAW,KAAK,KACrB,KAAK,KAAO,KAAK,OAClB,EAEA,QAAS,UACT,CACC,OAAO,KAAK,OAAO,MAAO,KAAK,SAAS,MAAO,KAAM,SAAU,CAAE,CAClE,CACD,CAAC,EAGDC,GAASrB,EAAO,SAAS,CAExB,OAAQ,EAGR,KAAM,UACN,CACC,KAAK,OAAS,KAAK,SAAS,IAAI,CACjC,EAGA,SAAU,UACV,CACC,IAAIsB,EAAOD,GAAO,MAAM,SAAS,KAAM,IAAK,EAI5C,OAAO,KAAK,OAAS,KAAK,OAAO,MAAOC,CAAK,EAAIA,CAClD,CACD,CAAC,EAGDC,GAAShB,EAAQ,SAAS,CAEzB,OAAQ,CAAE,EAAG,EAAG,EAGhB,SAAU,UACV,CAEC,OAAO,KAAK,MAAM,EAAI,UAAY,KAAK,SAAS,MAAM,EAAI,IAAM,KAAK,OAAO,EAAI,IAAM,KAAK,KAAO,KAAO,KAAK,KAAK,EAAI,IACxH,CACD,CAAC,EAGDiB,GAAeD,GAAO,SAAS,CAE9B,OAAQ,EAER,KAAM,UACN,CAEC,KAAK,OAAS,KAAK,SAAS,IAAI,CACjC,CACD,CAAC,EAGDJ,EAAU1B,EAAM,SAAS,CACxB,KAAM,SAAUG,EAAQO,EACxB,CACC,KAAK,EAAIP,EACT,KAAK,GAAKO,EACV,KAAK,IAAM,CAAC,EACZ,KAAK,IAAM,CAAC,EACZ,KAAK,KAAO,CAAC,EACb,KAAK,QAAU,CAAC,EACXP,EAAO,QAAQ,QAEnB,KAAK,OAAS,GAEhB,EAEA,SAAU,UACV,CACC,OAAK,KAAK,EAAE,QAAQ,OAGd,KAAK,UAET,KAAK,OAAS,KAAK,QAAQ,OAAS,MAG9B,KAAK,IAAI,KAAM,EAAG,GAAM,KAAK,IAAI,OAAS,EAAI,KAAK,OAAS,IAAO,KAAK,IAAI,KAAM;AAAA,EAAQ,KAAK,MAAO,EAAI,KAAK,KAAK,KAAM,EAAG,GAM7H,KAAK,IAAI,KAAM,EAAG,EAAI,KAAK,IAAI,KAAM,GAAI,EAAI,KAAK,KAAK,KAAM,EAAG,CAEzE,CACD,CAAC,EAGD6B,GAAiBN,EAAQ,SAAS,CACjC,SAAU,UACV,CAIC,YAAK,IAAI,QAAS;AAAA,CAAyB,EACpCM,GAAe,MAAM,SAAS,KAAM,IAAK,CACjD,CACD,CAAC,EAID,SAASC,GAAgBjC,EAAOkC,EAAMC,EACtC,CACC,OAAAA,EAAQA,GAAS,CAAC,EACbD,IASJC,EAAM,KAAOD,GAGPlC,EAAM,SAAUmC,CAAM,CAC9B,CAEArC,GAAO,QAAU,CAChB,QAASI,GACT,SAAUG,GACV,OAAQE,EACR,QAASO,EACT,OAAQC,GACR,aAAcC,GACd,cAAeC,GACf,SAAUI,GACV,eAAgBM,GAChB,OAAQC,GACR,OAAQE,GACR,aAAcC,GACd,QAASL,EACT,eAAgBM,GAChB,eAAgBC,EACjB,ICvdA,IAAAG,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAqBA,IAAIC,EAAM,IACVC,EAAWD,EAAI,SACfE,EAASF,EAAI,OACbG,EAAUH,EAAI,QACdI,EAASJ,EAAI,OACbK,EAAeL,EAAI,aACnBM,EAAWN,EAAI,SACfO,EAAiBP,EAAI,eACrBQ,EAASR,EAAI,OACbS,EAAST,EAAI,OACbU,EAAeV,EAAI,aACnBW,EAAiBX,EAAI,eAGrBY,GAAc,SAAUC,EAAI,CAAE,MAAO,GAAKA,CAAG,EAC7CC,EAAY,IAAIb,EAAUH,GAAK,EAAG,CAAE,EACpCiB,GAAeJ,EAAgBL,EAAU,UAAW,CAAE,MAAO,EAAG,CAAE,EAClEU,GAAML,EAAgBH,EAAQ,SAAUK,EAAI,CAAE,MAAO,UAAYA,EAAI,GAAK,CAAE,EAO5EI,EAAWT,EAAO,SAAS,CAC1B,OAAQ,EAER,KAAM,UACN,CACC,IAAIU,EAAW,KAAK,SACpBC,EAAMD,EAAS,CAAC,EAChBE,EAAWD,aAAelB,EAG1BiB,EAAS,CAAC,EAAI,IAAIjB,EAAU,KAAK,EAAGmB,EAAWD,EAAMA,EAAI,CAAE,GACtDC,GAAYD,EAAI,IAAM,KAE1BD,EAAS,CAAC,EAAE,SAAW,GAIxB,KAAK,OAAS,KAAK,OAAS,IAAMA,EAAS,IAAI,EAAIA,EAAS,MAAM,EAG7DA,EAAS,SAAW,GAExBA,EAAS,KAAMJ,CAAU,CAE3B,EAEA,KAAMF,EACP,CAAC,EAEDS,GAASnB,EAAO,SAAS,CACxB,KAAM,SAAUoB,EAChB,CACC,IAAIC,EAASD,EAAS,EAAI,EAC1BE,EAAW,KAAK,KAAO,EAAI,EAAI,GAI/B,OAAKF,aAAoBrB,GAAYsB,EAAS,GAEtC,YAAcD,EAAW,IAAME,EAAW,KAGzCD,EAAS,EAAI,cAAgB,OAASA,EAAS,MAAUC,IAAa,EAAI,KAAO,KAC3F,CACD,CAAC,EAGDC,GAAgBtB,EAAQ,SAAS,CAChC,SAAU,EAEV,SAAU,UACV,CACC,MAAO,eAAkB,KAAK,OAAS,IAAM,OAAS,WAAc,KAAQ,KAAK,GAAK,GAAM,GAC7F,CACD,CAAC,EAEDuB,GAAaf,EAAgBN,EAAc,UAAW,CAAE,MAAO,cAAiB,KAAK,KAAO,GAAM,GAAK,CAAE,EACzGsB,GAAUhB,EAAgBN,EAAc,UAAW,CAAE,MAAO,WAAc,KAAK,KAAO,GAAM,GAAK,CAAE,EAKnGN,GAAO,QAAU,SAAU6B,EAC3B,CAEA,MAAO,CAEE,EAAGjB,EAAgBL,EAAU,UAAW,CAAE,OAAO,UAAU,SAAW,EAAI,KAAK,KAAM,KAAM,EAAI,SAAW,KAAK,KAAK,EAAI,GAAK,CAAE,EAC/H,EAAGK,EAAgBL,EAAU,SAAUO,EAAGgB,EAAI,CAAE,OAAOhB,EAAE,IAAI,EAAI,IAAMgB,EAAE,IAAI,CAAG,CAAE,EAClF,EAAGlB,EAAgBL,EAAU,SAAUO,EAAGgB,EAAI,CAAE,OAAOhB,EAAE,IAAI,EAAI,IAAMgB,EAAE,IAAI,CAAG,CAAE,EAE7E,EAAGlB,EAAgBL,EAAU,SAAUgB,EAAUQ,EAAQ,CAAE,MAAO,kBAAoBR,EAAW,SAAWQ,EAAM,IAAI,CAAG,CAAE,EAC3H,EAAGnB,EAAgBL,EAAU,SAAUgB,EAAUQ,EAAQ,CAAE,MAAO,kBAAoBR,EAAW,QAAUQ,EAAM,IAAI,CAAG,CAAE,EAC9H,EAAGnB,EAAgBL,EAAU,UAAW,CAAE,MAAO,SAAW,KAAK,KAAK,EAAI,GAAK,CAAE,EAChF,EAAGK,EAAgBL,EAAU,UAAW,CAAE,MAAO,UAAY,KAAK,KAAK,EAAI,GAAK,CAAE,EACpF,EAAGK,EAAgBH,EAAQ,UAAW,CAAE,OAAO,KAAK,KAAM,GAAI,CAAG,CAAE,EAClE,EAAGG,EAAgBH,EAAQ,UAAW,CAAE,OAAO,KAAK,KAAM,GAAI,CAAG,CAAE,EAC7D,GAAIG,EAAgBL,EAAU,UAAW,CAAE,MAAO,eAAiB,KAAK,KAAK,EAAI,GAAK,CAAE,EACzF,GAAIK,EAAgBT,EAAQ,UAAW,CAAE,MAAO,cAAgB,KAAK,KAAK,EAAI,GAAK,CAAE,EACnF,GAAIS,EAAgBT,EAAQ,UAAW,CAAE,MAAO,gBAAkB,KAAK,KAAK,EAAI,GAAK,CAAE,EAC5F,GAAIe,EACC,GAAIN,EAAgBT,EAAQ,UAAW,CAAE,MAAO,gBAAkB,KAAK,KAAK,EAAI,GAAK,CAAE,EAC5F,GAAIS,EAAgBH,EAAQ,SAAUuB,EAAOC,EAAQ,CAAE,MAAO,uBAAyBD,EAAQ,MAAQC,EAAM,IAAI,EAAI,IAAM,CAAE,EAC7H,GAAIrB,EAAgBH,EAAQ,SAAUuB,EAAOC,EAAQ,CAAE,MAAO,sBAAwBD,EAAQ,IAAMC,EAAM,IAAI,EAAI,IAAM,CAAE,EACvH,GAAIrB,EAAgBH,EAAQ,UAAW,CAAE,MAAO,cAAgB,KAAK,KAAK,EAAI,GAAK,CAAE,EAChF,GAAIG,EAAgBH,EAAQ,UAAW,CAAE,MAAO,eAAiB,KAAK,KAAK,EAAI,GAAK,CAAE,EACtF,GAAIG,EAAgBH,EAAQ,UAAW,CAAE,MAAO,eAAiB,KAAK,KAAM,KAAM,EAAI,GAAK,CAAE,EACvG,GAAIG,EAAgBH,EAAQ,UAAW,CAAE,MAAO,SAAW,KAAK,KAAM,GAAI,EAAI,GAAK,CAAE,EACrF,GAAIG,EAAgBH,EAAQ,UAAW,CAAE,MAAO,SAAW,KAAK,KAAM,GAAI,EAAI,GAAK,CAAE,EACrF,GAAIG,EAAgBH,EAAQ,UAAW,CAAE,MAAO,SAAW,KAAK,KAAM,GAAI,EAAI,GAAK,CAAE,EACrF,GAAIG,EAAgBH,EAAQ,SAAUK,EAAGgB,EAAI,CAAE,MAAO,kBAAoBhB,EAAE,IAAI,EAAI,IAAMgB,EAAE,IAAI,EAAI,IAAM,CAAE,EAC5G,GAAIlB,EAAgBH,EAAQ,SAAUK,EAAGgB,EAAI,CAAE,MAAO,SAAWhB,EAAE,IAAI,EAAI,IAAMgB,EAAE,IAAI,EAAI,GAAK,CAAE,EAC9F,GAAInB,EACJ,GAAID,EACD,GAAIE,EAAgBT,EAAQ,UAAW,CAAE,MAAO,gBAAkB,KAAK,KAAK,EAAI,GAAK,CAAE,EAC5F,GAAIS,EAAgBR,EAAS,SAAU2B,EAAOG,EAAS,CAAE,MAAO,2BAA6BA,EAAS,sCAAwCH,CAAO,CAAE,EAC1J,IAAKnB,EAAgBL,EAAU,SAAUO,EAAI,CAAE,OAAOA,EAAI,MAAQ,CAAE,EAC3D,IAAKF,EAAgBJ,EAAgB,SAAU2B,EAAM,CAAE,MAAO,iBAAmBA,EAAM,GAAK,CAAE,EAChG,IAAKvB,EAAgBJ,EAAgB,SAAU2B,EAAM,CAAE,MAAO,eAAiBA,EAAM,GAAK,CAAE,EAC3F,IAAKvB,EAAgBH,EAAQ,SAAU0B,EAAM,CAAE,MAAO,gBAAkBA,EAAM,GAAK,CAAE,EAChF,IAAKvB,EAAgBH,EAAQ,SAAUK,EAAI,CAAE,MAAO,kBAAoBA,EAAI,GAAK,CAAE,EAC/F,IAAKQ,GACL,IAAKA,GACE,IAAKV,EAAgBT,EAAQ,SAAUiC,EAAO,CAAE,MAAO,aAAeA,EAAO,GAAK,CAAE,EACvF,IAAKzB,EACF,IAAKC,EAAgBT,EAAQ,SAAUgC,EAAM,CAAE,MAAO,gBAAkBA,EAAM,GAAK,CAAE,EACtF,IAAKvB,EAAgBT,EAAQ,SAAUgC,EAAM,CAAE,MAAO,aAAeA,EAAM,GAAK,CAAE,EACxF,IAAKvB,EAAgBR,EAAS,SAAUU,EAAI,CAAE,MAAO,UAAYA,CAAG,CAAE,EACrE,IAAKF,EAAgBR,EAAS,SAAUU,EAAI,CAAE,MAAO,QAAUA,EAAE,IAAI,EAAI,KAAQ,KAAK,KAAO,EAAK,CAAE,EAC7F,IAAKF,EAAgBT,EAAQ,SAAUiC,EAAO,CAAE,MAAO,aAAeA,EAAO,IAAM,KAAK,EAAE,eAAiB,GAAK,CAAE,EACzH,IAAKlB,EAAS,SAAU,CAAE,OAAQ,CAAE,CAAE,EACjD,IAAKW,EAAU,EACGZ,GACIP,EACV,IAAKE,EAAgBR,EAAS,UAAW,CAAE,MAAO,UAAY,CAAE,EAC/D,IAAKQ,EAAgBR,EAAS,UAAW,CAAE,MAAO,UAAY,CAAE,EAEjE,IAAKQ,EAAgBT,EAAQ,SAAUkC,EAAO,CAAE,MAAO,aAAeA,EAAO,GAAK,EAAG,CAAE,QAAS,CAAE,CAAE,EAChG,IAAKzB,EAAgBR,EAAS,SAAUiC,EAAO,CAAE,MAAO,aAAeA,EAAO,0BAA4B,EAAG,CAAE,QAAS,CAAE,CAAE,EAClI,IAAKlC,EACG,IAAK0B,EAAU,EAChCH,GACAE,GACmB,IAAKC,EAAU,EAClCH,GACAC,GACa,IAAKf,EAAgBR,EAAS,UAAW,CAAE,MAAO,aAAe,CAAE,EAChE,IAAKQ,EAAgBR,EAAS,SAAUU,EAAI,CAAE,MAAO,UAAYA,CAAG,EAAG,CAAE,KAAM,UAAW,CAAE,KAAK,SAAS,KAAMC,CAAU,CAAG,CAAE,CAAE,EAClJ,IAAKc,EAAU,EACGjB,EAAgBT,EAAQ,UAAW,CAAE,MAAO,WAAa,CAAE,EACzDS,EAAgBH,EAAQ,UAAW,CAAE,MAAO,mBAAqB,CAAE,EAC5E,IAAKG,EAAgBP,EAAQ,UAAW,CAAE,MAAO,2BAA6B,CAAE,EAC5E,IAAKO,EAAgBT,EAAQ,UAAW,CAAE,MAAO,eAAiB,CAAE,EACnF,IAAK0B,EAAU,EACSjB,EAAgBR,EAAS,UAAW,CAAE,MAAO,QAAU,KAAK,KAAO,gBAAkB,CAAE,EACzED,EACzB,IAAKa,GACL,IAAKA,GACJ,IAAKL,EACN,IAAKC,EAAgBT,EAAQ,SAAU6B,EAAOC,EAAOF,EAAQ,CAAE,MAAO,yBAA2BC,EAAQ,MAAQC,EAAM,IAAI,EAAI,KAAOF,EAAQ,GAAK,CAAE,EACrJ,IAAKnB,EAAgBT,EAAQ,SAAU6B,EAAOC,EAAOF,EAAQ,CAAE,MAAO,wBAA0BC,EAAQ,IAAMC,EAAM,IAAI,EAAI,KAAOF,EAAQ,GAAK,CAAE,EAChJ,IAAKnB,EAAgBT,EAAQ,UAAW,CAAE,MAAO,cAAgB,KAAK,KAAK,EAAI,GAAK,CAAE,EAC1F,IAAK0B,EAAU,EACzBjB,EAAgBP,EAAQ,UAAW,CAAE,MAAO,YAAc,KAAK,KAAK,EAAI,GAAK,CAAE,EAC/EO,EAAgBN,EAAc,UAAW,CAAE,MAAO,UAAY,KAAK,OAAO,EAAI,IAAM,KAAK,KAAK,EAAI,GAAK,CAAE,EACzF,IAAKM,EAAgBT,EAAQ,SAAUW,EAAI,CAAE,MAAO,aAAeA,EAAI,GAAK,CAAE,EAC/E,IAAKF,EAAgBT,EAAQ,SAAUW,EAAI,CAAE,MAAO,aAAeA,EAAE,IAAI,EAAI,GAAK,CAAE,EACvF,IAAKF,EAAgBH,EAAQ,SAAUK,EAAI,CAAE,MAAO,YAAcA,EAAE,IAAI,EAAI,GAAK,CAAE,EACrF,IAAKF,EAAgBH,EAAQI,GAAa,CAAE,KAAM,UAAW,CAAE,KAAK,OAASE,CAAW,EAAG,OAAQ,CAAE,CAAE,EACvG,IAAKG,EACG,IAAKN,EAAgBT,EAAQ,SAAUmC,EAAQ,CAAE,MAAO,kBAAoBA,EAAQ,GAAK,CAAE,EAC7F,IAAK1B,EAAgBT,EAAQ,SAAUoC,EAAO,CAAE,MAAO,gBAAkBA,EAAO,GAAK,CAAE,EACzF,IAAK5B,EACD,IAAKC,EAAgBT,EAAQ,SAAUqC,EAAM,CAAE,MAAO,kBAAoBA,EAAI,IAAI,EAAI,GAAK,CAAE,EAC/F,IAAK5B,EAAgBT,EAAQ,SAAUW,EAAI,CAAE,MAAO,gBAAkBA,EAAI,GAAK,CAAE,EACjF,IAAKF,EAAgBT,EAAQ,SAAUsC,EAAKC,EAAM,CAAE,MAAO,gBAAkBD,EAAM,MAAQC,EAAM,KAAO,CAAE,EAC1G,IAAK9B,EAAgBT,EAAQ,SAAUiC,EAAO,CAAE,MAAO,gBAAkBA,EAAO,GAAK,CAAE,EACnF,IAAKxB,EAAgBT,EAAQ,SAAUwC,EAAY,CAAE,MAAO,eAAiBA,EAAY,GAAK,CAAE,EACnG,IAAKxC,EACH,IAAKS,EAAgBR,EAAS,UAAW,CAAE,MAAO,QAAU,KAAK,KAAO,oBAAsB,KAAK,KAAK,EAAI,GAAK,CAAE,EACpH,IAAKQ,EAAgBP,EAAQ,UAAW,CAAE,MAAO,kBAAoB,KAAK,KAAK,EAAI,GAAK,CAAE,EAC1F,IAAKF,EACR,IAAKS,EAAgBN,EAAc,UAAW,CAAE,MAAO,eAAiB,KAAK,OAAO,EAAI,KAAQ,KAAK,KAAK,GAAK,KAAQ,GAAK,CAAE,EAC7H,IAAKM,EAAgBJ,EAAgB,UAAW,CAAE,MAAO,gBAAkB,KAAK,KAAK,EAAI,GAAK,CAAE,EAChG,IAAKS,GACR,IAAKP,EACJ,IAAKA,EACL,IAAKE,EAAgBT,EAAQ,UAAW,CAAE,MAAO,cAAgB,KAAK,KAAK,EAAI,GAAK,CAAE,EACnF,IAAKS,EAAgBT,EAAQ,UAAW,CAAE,MAAO,iBAAmB,KAAK,KAAK,EAAI,GAAK,CAAE,EAC1F,IAAKS,EAAgBT,EAAQ,UAAW,CAAE,MAAO,gBAAkB,KAAK,KAAK,EAAI,GAAK,CAAE,EACvF,IAAKS,EAAgBT,EAAQ,UAAW,CAAE,MAAO,iBAAmB,KAAK,KAAK,EAAI,GAAK,CAAE,EACrF,IAAKS,EAAgBL,EAAU,SAAUqC,EAAM,CAAE,MAAO,uCAAyCA,EAAM,MAAQ,CAAE,EAC5H,IAAMhB,GACH,KAAMD,GACJ,KAAMf,EAAgBH,EAAQ,SAAUK,EAAGgB,EAAI,CAAE,MAAO,qBAAuBhB,EAAI,IAAMgB,EAAE,IAAI,EAAI,IAAM,CAAE,EAC3G,KAAMlB,EAAgBH,EAAQ,SAAUK,EAAGgB,EAAI,CAAE,MAAO,qBAAuBhB,EAAE,IAAI,EAAI,IAAMgB,EAAE,IAAI,EAAI,IAAM,CAAE,EAClH,KAAMlB,EAAgBH,EAAQ,SAAUoC,EAAO,CAAE,MAAO,cAAgBA,EAAO,GAAK,CAAE,EACrF,KAAMjC,EAAgBH,EAAQ,UAAW,CAAE,MAAO,eAAiB,KAAK,KAAO,IAAM,KAAK,OAAO,EAAI,GAAK,CAAE,EAEzG,KAAMG,EAAgBT,EAAQ,UAAW,CAAE,MAAO,4BAA8B,EAAG,CAAE,OAAQ,CAAE,CAAE,EAChG,KAAMS,EAAgBT,EAAQ,SAAUW,EAAI,CAAE,MAAO,aAAeA,EAAI,GAAK,CAAE,EAE/E,KAAMF,EAAgBH,EAAQ,UAAW,CAAE,MAAO,EAAG,CAAE,EACrD,KAAMG,EAAgBT,EAAQ,UAAW,CAAE,MAAO,qBAAuB,KAAK,KAAK,EAAI,GAAK,CAAE,EACnG,KAAMA,EAAO,SAAU,CAAE,SAAU,CAAE,CAAE,EAC1C,KAAMS,EAAgBH,EAAQ,UAAW,CAAE,MAAO,aAAe,KAAK,KAAK,EAAI,GAAK,CAAE,CAGpG,CAEA,IC3OA,IAAAqC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAoBA,IAAMC,GAAO,IACPC,EAAQ,IACRC,GAASD,EAAM,OACfE,GAAMF,EAAM,MACZG,GAAMH,EAAM,MAGlB,SAASI,EAAOC,EAChB,CACC,IAAMC,EAAUD,GAAO,OAAOA,GAAQ,SAAWD,EAAOC,CAAI,EAAIA,EAC1DE,EAAS,CAAC,EAEhB,GAAK,MAAM,QAASF,CAAI,EAEvB,OAAOA,EAAI,IAAKC,CAAQ,EAGzB,QAAUE,KAAQH,EAEZG,IAAS,UAAYA,IAAS,QAElCD,EAAOC,CAAI,EAAIF,EAASD,EAAIG,CAAI,CAAE,GAGpC,OAAOD,CACR,CAGA,IAAME,GAAgB,UACtB,CACC,IAAIC,EAAiB,IAAI,WAAY,CAAE,EACvCC,EAAkB,IAAI,YAAaD,EAAe,MAAO,EACzD,OAAAC,EAAgB,CAAC,EAAI,EACdD,EAAe,CAAC,IAAM,CAC9B,EAAG,EAEH,SAASE,EAAsBC,EAAMC,EAAOC,EAAKC,EACjD,CACC,GAAKP,IAAgB,CAACO,EAErB,KAAQF,EAAQC,GAEfF,EAAK,UAAWC,EAAOD,EAAK,UAAWC,EAAO,CAAE,CAAE,EAClDA,GAAS,CAGZ,CAEAhB,GAAO,QAAU,CAEhB,UAAW,SAAUmB,EAAQC,EAC7B,CACC,OAAOA,EAAS,EAAID,GAAUC,EAASD,GAAU,CAACC,CACnD,EAGA,KAAM,SAAUC,EAAMC,EAAQC,EAAMC,EACpC,CAEC,GAAKH,IAAS,EAEb,OAAKC,GAAU,GAEd,KAAK,SAAUA,EAAQ,CAAE,EAEnB,KAAK,GAAKC,EAIlB,KAAK,GAAKF,EAAO,KAAK,eACtB,IAAII,EAAe,KAAK,EAAE,SAAU,KAAK,IAAK,EAE9CC,EAAQ,KAAK,MACbC,EAAI,EAGJC,EAAW,KAAK,SAkBhB,IAjBAF,EAAM,UAAWE,EAAW,EAAG,KAAK,EAAG,EACvC,KAAK,OAAO,KAAMA,CAAS,EAG3BA,EAAW,KAAK,SAAW,KAAK,EAAE,WAAa,KAAK,GAAK,EAEzDF,EAAM,UAAWE,EAAUL,GAAQ,CAAE,EAErCG,EAAM,SAAUE,EAAW,GAAKN,GAAU,EAAI,EAAI,IAASG,CAAa,EAExEC,EAAM,SAAUE,EAAW,EAAGN,GAAU,EAAIA,EAAS,CAAE,EAEvDI,EAAM,SAAUE,EAAW,GAAK,GAAKJ,EAAK,QAAW,CAAE,EAGvD,KAAK,YAAY,EACjB,KAAK,GAAK,EACFG,EAAIF,GAEX,KAAK,EAAEE,CAAC,EAAIA,EAAIH,EAAK,OAASA,EAAKG,CAAC,EAAM,KAAK,QAAU,EAAI,KAAK,EAAE,UAAW,KAAK,GAAKA,EAAI,CAAE,EAAI,EACnGA,IAEI,KAAK,QAAU,IAEnB,KAAK,IAAMF,EAAe,EAE5B,EAEA,WAAY,SAAUI,EAAQC,EAC9B,CACC,IAAIT,EAAO,KAAK,SAAY,KAAK,SAAW,EAAI,IAAOQ,EAAWC,EAAY,EAAM,EACpF,KAAK,IAAI,SAAUT,EAAM,KAAK,EAAE,SAAUA,CAAK,EAAI,EAAG,KAAQS,EAAY,EAAI,CAC/E,EAEA,WAAY,SAAUC,EAAOC,EAAQC,EACrC,CACCA,EAAO7B,GAAK6B,CAAK,EACjB,IAAIC,EAAM,KAAK,IACfP,EAAI,EACJQ,EAAeF,EAAO,EAItB,GAHAA,EAAO,KAAK,IAAKA,CAAK,EAGjBD,IAAW,EAChB,CACC,KAAQL,EAAIM,GAEXC,EAAI,SAAUH,EAAQJ,IAAK,CAAE,EAE9B,MACD,CAEA,GAAKQ,EAEJ,KAAQR,EAAIM,GAEXC,EAAI,SAAUF,EAASL,EAAG,KAAK,EAAE,SAAUI,EAAQJ,GAAI,CAAE,OAK1DO,EAAI,cAAeF,EAAQ,KAAK,EAAE,cAAeD,EAAOE,CAAK,CAAE,CAEjE,EAEA,eAAgB,SAAUG,EAC1B,CACC,IAAMC,EAAM,KAAK,IAGjBA,EAAI,iBAAkBD,EAAS,GAAI,EAGnC,KAAK,GAAKA,EAAS,GACnB,IAAME,EAAU,IAAID,EAAI,OACpB9B,EACJ,KAAQA,EAAM8B,EAAI,mBAAoB9B,EAAK+B,CAAQ,GAE7CA,EAAQ,QAAU,MAEtB,KAAK,QAAU/B,EACVA,EAAI,UAER6B,EAAS,UAAU,OAAS7B,EAAI,UAG7B+B,EAAQ,QAAU,MAEtB,KAAK,UAAY/B,GAEb+B,EAAQ,QAAU,MAEtB,KAAK,SAAW/B,GAIlB,IADAA,EAAM,KACEA,EAAM8B,EAAI,mBAAoB9B,EAAK+B,CAAQ,GAE7CA,EAAQ,QAAU,MAEtB,KAAK,GAAG,QAAQ,CAAC,EAAE,IAAM/B,GAErB+B,EAAQ,QAAU,MAEtB,KAAK,GAAG,QAAQ,CAAC,EAAE,IAAM/B,GAK3B,KAAK,QAAQ,CAAC,EACd,KAAK,aAAa,KAAK,QAAQ,OAAO,UAAY,IAAI,WAAW6B,EAAS,GAAG,EAAI,WAAW,KAAKA,EAAS,GAAG,EAAG,CAAC,EAGjH,KAAK,UAAYA,EAAS,UAC1B,KAAK,cAAgBA,EAAS,aAC/B,EAEA,YAAa,SAAUG,EACvB,CACC,GAAK,CAAC,KAAK,QAAQ,OAElB,MAAM,IAAI,MAAO,mCAAoC,EAGtD,IAAIH,EAAW,KACf,IAAOG,GAAQ,IAAO,EACtB,CACC,IAAML,EAAM,KAAK,UAAU,KAAK,GAAI,CAAC,EACrCE,EAAW,CACV,IAAK,KAAK,IAAI,cAAc,EAC5B,GAAI9B,EAAO,KAAK,EAAG,EACnB,IAAK,KAAK,QAAQ,OAAO,UAAY4B,EAAM,MAAM,KAAK,IAAI,WAAWA,CAAG,CAAC,EACzE,UAAW5B,EAAO,KAAK,SAAU,EACjC,cAAe,KAAK,aACrB,CACD,CAEA,KAAK,QAAQ,OAAO,eAAgB,KAAK,UAAW8B,CAAS,CAC9D,EAEA,YAAa,SAAUI,EAAOC,EAAQC,EAAMC,EAC5C,CACC,KAAK,IAAI,cAAeA,EAAQ,KAAK,OAAQ,KAAK,EAAE,cAAeH,EAAQE,EAAMD,CAAO,CAAE,CAAE,CAC7F,EAGA,gBAAiB,SAAUG,EAAMC,EACjC,CACC,IAAIxB,EAAO,KAAK,UAChB,GAAK,CAACA,GAAQuB,EAAO,KAAK,gBAEzB,MAAO,GAGR,GADAvB,GAAQ,EAAIuB,EACPC,IAAU,OAEd,OAAO,KAAK,EAAE,UAAWxB,CAAK,EAE/B,KAAK,IAAI,UAAWA,EAAMwB,CAAM,CACjC,EAGA,UAAW,SAAUhB,EAAQiB,EAAUC,EACvC,CACC,IAAIC,EAAS,KAAK,EAClBC,EAAW,KAAK,SAEhBC,EAAoBC,EACpBC,EAAgB,EAGhBC,EAAaL,EAAO,UAAW,KAAK,SAAYC,EAAW,EAAI,IAAOpB,GAAWoB,EAAW,EAAI,GAAK,EAMrG,IAHAI,GAAcL,EAAO,SAAUK,CAAW,EAAI,EAAI,IAIlD,CAKC,GAJAH,EAAqBF,EAAO,SAAUK,CAAW,EACjDF,EAAgBD,GAAuBD,EAAW,GAAO,IAGpDG,IAAkBL,EAEtB,OAAOI,EAGR,GAAKA,IAAkBL,EAGtB,OAAOO,GAAe,CAACJ,GAAYC,EAAqB,IAAO,EAAI,GAGpE,GAAKC,EAAgBL,EAEpB,MAAO,GAIRM,EAAgBD,EAGXF,EAEJI,IAAgBH,GAAsB,GAAM,EAIvCA,EAAqB,KAEzBC,EAAgBH,EAAO,SAAUK,EAAa,CAAE,EAAI,GACpDA,GAAcF,EAAgBA,EAAgB,EAAI,IAIlDE,GAAcH,EAAqB,GAAO,EAAI,CAGjD,CACD,EAGA,QAAS,SAAUI,EACnB,CACC,OAASA,EACT,CACC,IAAK,GACJ,MAAO,IACT,CACA,MAAO,EACR,EAGA,UAAW,SAAU/C,EACrB,CACC,OAAK,KAAK,SAEF,KAAK,EAAE,SAAU,KAAK,QAAU,EAAIA,EAAM,CAAE,EAI5C,KAAK,EAAE,UAAW,KAAK,QAAU,GAAKA,EAAM,EAAG,CAExD,EAEA,YAAa,SAAUA,EACvB,CACC,OAAK,KAAK,SAEF,KAAK,EAAE,SAAU,KAAK,QAAU,EAAIA,EAAM,CAAE,EAI5C,KAAK,EAAE,UAAW,KAAK,QAAU,GAAKA,EAAM,CAAE,CAEvD,EAEA,WAAY,SAAUA,EACtB,CACC,OAAK,KAAK,SAEF,KAAK,EAAE,SAAU,KAAK,QAAU,EAAIA,EAAM,CAAE,EAI5C,KAAK,EAAE,UAAW,KAAK,QAAU,GAAKA,EAAM,CAAE,CAEvD,EAEA,SAAU,SAAUsB,EAAQiB,EAC5B,CACC,IAAIE,EAAS,KAAK,EAGlB3B,EAAO,KAAK,UAAWQ,EAAQiB,CAAS,EACxCS,EAGA,OAAKlC,GAEJkC,EAAMP,EAAO,SAAU3B,EAAO,CAAE,EAEzB2B,GAAU,KAAK,SAAWO,GAAO,EAAIA,EAAM,IAAS,YAAc,UAAW,EAAGlC,CAAK,GAKtF2B,EAAO,UAAW,KAAK,WAAa,GAAMF,EAAW,EAAI,CACjE,EAIA,aAAc,SAAUzB,EACxB,CAEC,GAAKA,IAAS,EAEb,MAAO,GAGR,IAAIwB,EAAQ,KAAK,EAAE,SAAUxB,EAAO,CAAE,EAGtC,OAAK,KAAK,UAEAwB,GAAS,GAAM,EAIpBA,EAAQ,KAEZA,GAAS,GACFA,IAAU,EAAI,GAAKA,GAGpBA,EAAQ,GAAO,EAAI,CAC3B,EAGA,OAAQ,SAAUW,EAAQC,EAC1B,CACC,GAAKD,IAAW,EAEf,YAAK,EAAE,KAAK,GAAK,CAAC,GAAKC,EAChB,KAAK,EAAE,KAAK,GAAK,CAAC,EAE1B,GAAK,EAAED,EAAS,GAEf,YAAK,EAAEA,CAAM,GAAKC,EACX,KAAK,EAAED,CAAM,EAIpB,IAAIE,EAAS,KAAK,SAAYF,EAAS,IAAO,EAC9C,YAAK,IAAI,UAAWE,EAAQ,KAAK,EAAE,UAAWA,CAAO,EAAID,CAAO,EACzD,KAAK,IAAI,UAAWC,CAAO,CAEpC,EAGA,SAAU,SAAUC,EAAUd,EAC9B,CACC,OAAKc,IAAa,EAEZ,UAAU,OAAS,EAEhB,KAAK,EAAE,KAAK,GAAK,CAAC,EAAId,EAItB,KAAK,EAAE,KAAK,GAAK,CAAC,EAGpB,KAAK,SAAUc,EAAUd,CAAM,CACvC,EAEA,WAAY,SAAUtC,EAAKqD,EAC3B,CAEC,KAAK,WAAYrD,CAAI,EAErB,KAAK,WAAYA,EAAKqD,EAAMA,EAAMrD,EAAKA,EAAK,KAAK,UAAWqD,CAAK,CAAE,CACpE,EAGA,IAAK,UACL,CAIC,QAHIjC,EAAI,EAGAA,EAAI,UAAU,QAErB,GAAK,UAAUA,GAAG,IAAM,UAAU,CAAC,EAElC,MAAO,EAGV,EAEA,IAAK,SAAUkC,EAAOC,EACtB,CACC,OAAO,KAAK,WAAYD,CAAM,IAAMC,CACrC,EAEA,IAAK,SAAUC,EACf,CACM,KAAK,QAAQ,QAEjB,KAAK,QAAQ,OAAO,IAAKA,CAAQ,CAEnC,EAEA,UAAW,SAAU5C,EAAQC,EAC7B,CACC,OAAOA,EAAS,EAAID,GAAUC,EAASD,IAAW,CAACC,CACpD,EAEA,YAAa,UACb,CACC,IAAIK,EAAe,KAAK,MAAM,SAAU,KAAK,SAAW,CAAE,EAAI,GAC9D,KAAK,EAAI,IAAI,YAAa,KAAK,MAAM,OAAQ,KAAK,SAAW,EAAGA,CAAa,EAC7E,KAAK,EAAI,IAAI,YAAa,KAAK,MAAM,OAAQ,KAAK,SAAW,EAAIA,EAAe,CAAE,CACnF,EAEA,SAAU,SAAUI,EAAQiB,EAAUD,EACtC,CAEC,IAAIxB,EAAO,KAAK,UAAWQ,EAAQiB,CAAS,EAC5CS,EAEKlC,IAEJkC,EAAM,KAAK,EAAE,SAAUlC,EAAO,CAAE,EAGhC,KAAK,KAAO,KAAK,SAAWkC,GAAO,EAAIA,EAAM,IAAS,YAAc,UAAW,EAAGlC,EAAMwB,CAAM,EAEhG,EAEA,OAAQ,SAAUmB,EAClB,CACC,IAAIC,EAAO,KAAK,cAGhB,OAAKD,EAAQ,GAEZ,KAAK,cAAgBA,EACd,GAIHC,IAAS,EAEN,EAAM,KAAK,OAAO,EAAID,EAAU,GAOxCC,GAAUA,GAAQ,GAClBA,GAAUA,GAAQ,GAClB,KAAK,cAAkBA,GAAUA,GAAQ,EAClC,GAAQA,EAAO,OAAWD,EAClC,EAEA,WAAY,SAAUzD,EACtB,CACC,IAAIuD,EAAS,KAAK,WAAYvD,CAAI,EAClC2D,EACAC,EACAC,EAGA,GAAKN,IAAW,EAShB,GAJAI,EAAgB,KAAK,UAAWJ,CAAO,EACvCK,EAAkB,KAAK,YAAa5D,CAAI,EAGnC2D,IAAkB3D,EAEtB,KAAK,WAAYA,EAAK,EAAGuD,EAAQK,CAAgB,MAIlD,CAEC,KAECC,EAAe,KAAK,YAAaF,CAAc,EAC1CE,IAAiB7D,GAItB2D,EAAgBE,EAEjB,KAAK,WAAY7D,EAAK,EAAG,EAAG,EAAG2D,EAAeC,CAAgB,CAC/D,CACD,EAGA,QAAS,SAASE,EAClB,CACC,IAAInC,EAAM,KAAK,IACfoC,EAAUpC,EAAI,SAAU,CAAK,EAC7Be,EAAWqB,IAAY,EACvBC,EAAiBtB,EAAW,EAAMqB,IAAY,EAAI,EAAI,EACtDE,EAAStC,EAAI,SAAU,EAAK,EAC5BuC,EAAoBvC,EAAI,UAAW,EAAK,EACxCwC,EAAcJ,EAAU,EAAMpC,EAAI,UAAW,EAAK,EAAI,EACtDR,EAAQxB,EAAM,WAAY,KAAK,QAAQ,SAAU,EAGjDgC,EAAI,cAAe,EAAG,KAAK,OAAQ,EACnCA,EAAI,SAAU,GAAMsC,CAAO,EAE3BrE,GAAQ,KAAM,CAGb,MAAOuB,EACP,SAAU,EACV,OAAQ,CAAC,EACT,EAAG,IAAI,YAAaA,EAAM,OAAQ,CAAE,EACpC,GAAI,EACJ,EAAG,CAAC,EACJ,KAAM,CAAC,EACP,SAAU,EAEV,kBAAmB,KAGnB,QAAS4C,EACT,SAAUrB,EACV,GAAIf,EAAI,UAAW,CAAK,EACxB,WAAYuC,EACZ,QAASA,GAAsBxB,EAAW,GAAK,KAC/C,QAASf,EAAI,UAAW,EAAK,EAE7B,KAAOA,EAAI,UAAW,EAAK,GAAK,OAAUqC,EAC1C,UAAWG,EACX,gBAAiBA,EAAYxC,EAAI,UAAWwC,CAAU,EAAI,EAG1D,eAAgBH,EAGhB,QAAS,KAA2BD,CAAQ,CAE7C,CAAC,EAED,KAAK,UAAU,EACVD,GAEJ,KAAK,QAAQ,EAId,KAAK,cAAc,CACpB,EAGA,QAAS,SAAUM,EACnB,CACC,KAAK,GAAKA,EACV,KAAK,yBAAyB,CAC7B,KAAM,UACN,KAAM,EACN,MAAO,CACR,CAAC,CACF,EAEA,aAAc,SAAUC,EAAMP,EAC9B,CACC,IAAInC,EAAM,KAAK,IACf2C,EAAU,IAAI5E,GAAK,QAAS2E,CAAK,EACjCE,EAAOD,EAAQ,OACfnD,EAAQ,KAAK,MACb8C,EAAStC,EAAI,SAAU,EAAK,EAC5B6C,EACApD,EAAI,EAAGqD,EAAI,EAGX,GAAK9C,EAAI,UAAW,CAAK,IAAM2C,EAAQ,SAAW3C,EAAI,UAAW,EAAK,IAAM2C,EAAQ,SAEnF,MAAO,GAER,KAAQlD,EAAI,GAEX,GAAKO,EAAI,SAAU,GAAOP,CAAE,IAAMkD,EAAQ,OAAOlD,GAAG,EAEnD,MAAO,GAQT,GALAA,EAAI,EAIJO,EAAI,cAAe,EAAG,KAAK,OAAQ,EAC9B2C,EAAQ,WAEZ,KAAQlD,EAAImD,EAAK,QAEhBC,EAAOD,EAAKnD,GAAG,EAEVoD,IAAS,EAEbC,GAAK,EAAIF,EAAKnD,GAAG,EAIjBO,EAAI,SAAU8C,EAAGD,EAAO,KAAK,QAAQC,GAAG,CAAE,OAM5C9C,EAAI,cAAe,EAAG4C,CAAK,EAS5B,IANA5C,EAAI,SAAU,GAAMsC,CAAO,EAG3B9C,EAAM,cAAe,EAAGmD,EAAQ,MAAO,EACvC,KAAK,OAAS,CAAC,EACflD,EAAI,EACIA,EAAIkD,EAAQ,OAAO,YAE1B,KAAK,SAAWlD,EAChB,KAAK,OAAO,KAAMA,CAAE,EAEpBb,EAAsBY,EAAOsD,EAAIrD,EAAI,EAAGqD,IAAOtD,EAAM,SAAUC,EAAI,CAAE,EAAI,IAAS,EAAG0C,CAAc,EACnGvD,EAAsBY,EAAOsD,EAAGA,GAAKtD,EAAM,UAAWC,EAAI,CAAE,EAAI,EAAG0C,CAAc,EACjF1C,EAAIqD,EAEL,YAAK,OAAO,IAAI,EAChB,KAAK,GAAKtD,EAAM,UAAW,KAAK,SAAW,CAAE,EAC7C,KAAK,YAAY,EAEjB,KAAK,GAAKmD,EAAQ,GAClB,KAAK,cAAc,EAGd,KAAK,UAET,KAAK,aAAc,CAAE,EAGf,CACR,EAEA,aAAc,UACd,CACC,GAAK,KAAK,KAAK,SAAW,EAEzB,MAAO,GAGR,IAAII,EAAQ,KAAK,KAAK,IAAI,EAC1B,YAAK,SAAWA,EAAM,SACtB,KAAK,GAAKA,EAAM,GAChB,KAAK,UAAcA,EAAM,IAAI,WAAaA,EAAM,MAAM,WAGtDA,EAAM,IAAI,EAAI,EAAI,KAAK,EAAE,SAAU,EAAK,EACxC,KAAK,IAAI,cAAe,EAAGA,EAAM,GAAI,EAGrC,KAAK,OAASA,EAAM,OACpB,KAAK,GAAKA,EAAM,GAChB,KAAK,MAAM,cAAe,EAAGA,EAAM,KAAM,EACzC,KAAK,YAAY,EAEjB,KAAK,SAAUA,EAAM,IAAK,CAAE,EACrB,CACR,EAGA,IAAK,SAAUC,EACf,CACC,IAAIxD,EAAQ,KAAK,MAGjBE,EAAW,KAAK,SAChBN,EAASI,EAAM,SAAUE,EAAW,CAAE,EAAI,GAAO,GAAKF,EAAM,SAAUE,EAAW,CAAE,EACnF,KAAK,GAAKF,EAAM,UAAWE,CAAS,GAAK,EAGzCA,EAAW,KAAK,SAAW,KAAK,OAAO,IAAI,EAC3C,KAAK,YAAY,EACjB,KAAK,GAAKF,EAAM,UAAWE,EAAW,CAAE,EAGnCN,GAAU,GAEd,KAAK,SAAUA,EAAQ4D,GAAU,CAAE,CAErC,EAGA,KAAM,SAAUP,EAChB,CACC,KAAK,GAAKA,EACV,KAAK,yBAAyB,CAC7B,KAAM,OACN,KAAM,EACN,MAAO,CACR,CAAC,CACF,EAEA,UAAW,SAAUA,EAAIQ,EACzB,CACC,IAAInC,EAAS,KAAK,EAClB6B,EAAU,IAAI5E,GAAK,QACnByB,EAAQxB,EAAM,WAAY,KAAK,MAAM,OAAO,MAAM,CAAE,EACpDkF,EAAS,EACTzD,EAAGqD,EACHpD,EAAW,KAAK,SAChByD,EASA,GANAR,EAAQ,QAAU7B,EAAO,UAAW,CAAK,EACzC6B,EAAQ,OAAS7B,EAAO,cAAe,GAAM,CAAE,EAC/C6B,EAAQ,SAAW7B,EAAO,UAAW,EAAK,EAC1C6B,EAAQ,GAAKF,EAGRQ,EAEJN,EAAQ,OAAS,KAAK,EAAE,cAAe,EAAG,KAAK,SAAU,MAG1D,CACC,IAAMS,EAAiB,CAAC,EAExB,IADAT,EAAQ,WAAa,EACflD,EAAI,EAAGA,EAAI,KAAK,UAAWA,IAEhC0D,EAAQrC,EAAO,SAAUrB,CAAE,EAAI,KAAK,QAAQA,CAAC,EACxC0D,IAAU,EAET,EAAED,IAAW,MAEjBE,EAAe,KAAM,EAAG,GAAI,EAC5BF,EAAS,IAKLA,IAEJE,EAAe,KAAM,EAAGF,EAAS,CAAE,EACnCA,EAAS,GAEVE,EAAe,KAAMD,CAAM,GAG7BR,EAAQ,OAASS,CAClB,CAOA,GAHA5D,EAAM,UAAWE,EAAW,EAAG,KAAK,EAAG,EAGlCjB,IAAgB,CAACwE,EACtB,CACC,IAAMI,EAAS,KAAK,OAAO,MAAM,EAEjC,IADAA,EAAO,KAAM3D,CAAS,EAChBD,EAAI,EAAGA,EAAI4D,EAAO,OAAQ5D,IAE/BC,EAAW2D,EAAO5D,CAAC,EACnBb,EAAsBY,EAAOsD,EAAIpD,EAAW,EAAGoD,IAAOtD,EAAM,SAAUE,EAAW,CAAE,EAAI,IAAS,CAAE,EAClGd,EAAsBY,EAAOsD,EAAGA,GAAKtD,EAAM,UAAWE,EAAW,CAAE,EAAI,CAAE,CAE3E,CACA,OAAAiD,EAAQ,OAASnD,EAAM,cAAe,EAAG,KAAK,SAAW,GAAMA,EAAM,SAAUE,EAAW,CAAE,EAAI,IAAS,EAAI,KAAK,GAAK,CAAE,EAElHiD,EAAQ,MAAM,CACtB,EAEA,qBAAsB,SAAUW,EAChC,CACC,IAAIxC,EAAS,KAAK,EAClBX,EAAM,KAAK,IACX6C,EAAS,EACTO,EAAS,CAAC,EACVV,EAAMW,EAAQhC,EAET8B,IAGC,KAAK,aAAa,OAAS,QAE/BnD,EAAI,sBAAuBmD,EAAK,IAAI,WAAY,KAAK,UAAW,KAAK,EAAG,CAAE,CAAE,EAC5EN,EAAS,IAKTO,EAAS,IAAI,WAAY,IAAM,IAAK,EACpCpD,EAAI,sBAAuBmD,EAAKC,CAAO,EACvCP,EAAS,KAAK,aAAcO,EAAO,MAAO,GAE3CpD,EAAI,iBAAkBmD,CAAI,GAItB,KAAK,UAGTT,EAAO/B,EAAO,SAAU,KAAK,IAAK,EAClC0C,EAASX,EAAO,IAChBrB,EAASqB,EAAO,GAEfA,EAAO,IAELA,GAAQ,EAAI/B,EAAO,SAAU,KAAK,IAAK,IAAO,IAAM,GAElD,CAACkC,GAAW,CAACQ,IAEZhC,IAAW,GAAKA,IAAW,EAE/B,KAAK,IAAKA,CAAO,EAIjB,KAAK,IAAMA,EAAS,IAMtB,KAAK,SAAUV,EAAO,SAAU,KAAK,IAAK,EAAGkC,CAAO,CAEtD,EAEA,UAAW,SAAUP,EAAIhB,EACzB,CAEC,IAAIsB,EACJ,OAAK,KAAK,SAAW,KAAK,QAAQ,WAEjCA,EAAQ,KAAK,KAAK,MAAM,EACxB,KAAK,UAAcA,EAAM,IAAI,WAAaA,EAAM,MAAM,YAEvDA,EAAQ,CACP,SAAU,KAAK,SACf,OAAQ,KAAK,OAAO,MAAM,EAC1B,GAAIN,EACJ,IAAK,KAAK,EAAE,cAAe,EAAG,KAAK,SAAU,EAC7C,GAAI,KAAK,GACT,MAAO,KAAK,MAAM,cAAe,EAAG,KAAK,EAAE,WAAa,KAAK,GAAK,CAAE,EACpE,IAAKhB,CACN,EACA,KAAK,UAAcsB,EAAM,IAAI,WAAaA,EAAM,MAAM,WACtD,KAAK,KAAK,KAAMA,CAAM,EACf,CACR,EAEA,WAAY,SAAUU,EAAKtE,EAAMoB,EAAQmD,EACzC,CACCA,EAAOA,GAAQ,IACf,IAAIC,EAAaD,EAAO,IAAO,YAAc,WAI7C,IAHAA,GAAQ,IACRnD,EAASpB,EAAOoB,EAASmD,EAEjBvE,EAAOoB,GACf,CACC,GAAK,KAAK,EAAEoD,CAAU,EAAGxE,CAAK,IAAMsE,EAEnC,OAAOtE,EAERA,GAAQuE,CACT,CACA,MAAO,EACR,EAEA,SAAU,SAAU/D,EAAQC,EAC5B,CACC,IAAIT,EAAO,KAAK,SAAY,KAAK,SAAW,EAAI,IAAOQ,EAAWC,EAAY,EAAM,EACpF,KAAK,IAAI,SAAUT,EAAM,KAAK,EAAE,SAAUA,CAAK,EAAI,KAAQS,EAAY,CAAE,CAC1E,EAEA,WAAY,SAAUvB,EAAKuF,EAAWhC,EAAQD,EAAOkC,EAAQC,EAC7D,CACC,IAAI9D,EAAM,KAAK,IACf+D,EAAU,KAAK,QAEV,KAAK,UAGT/D,EAAI,SAAU+D,EAAU,EAAI1F,EAAM,EAAGuF,CAAU,EAE1ChC,GAEJ5B,EAAI,SAAU+D,EAAU,EAAInC,EAAS,EAAGD,CAAM,EAG1CkC,GAEJ7D,EAAI,SAAU+D,EAAU,EAAIF,EAAS,EAAGC,CAAO,IAMhD9D,EAAI,UAAW+D,EAAU,GAAK1F,EAAM,EAAGuF,CAAU,EAE5ChC,GAEJ5B,EAAI,UAAW+D,EAAU,GAAKnC,EAAS,GAAID,CAAM,EAG7CkC,GAEJ7D,EAAI,UAAW+D,EAAU,GAAKF,EAAS,EAAGC,CAAO,EAGpD,EAEA,KAAM,SAAUE,EAAQC,EACxB,CACC,OAASD,EAASC,KAAWA,CAC9B,EAEA,UAAW,SAAUtE,EAAQC,EAC7B,CACC,OAAS,KAAK,EAAE,SAAU,KAAK,SAAY,KAAK,SAAW,EAAI,IAAOD,EAAWC,EAAY,EAAM,CAAE,GAAKA,EAAY,EAAM,GAC7H,EAGA,SAAU,SAAU6B,EAAUd,EAC9B,CACC,IAAIuD,EAAYvD,IAAU,OAC1Ba,EACA,GAAKC,IAAa,EAEjB,GAAKyC,EAEJ,KAAK,EAAE,KAAK,IAAI,EAAIvD,MAIpB,QAAO,KAAK,EAAE,EAAE,KAAK,EAAE,UAGf,EAAEc,EAAW,GAEtB,GAAKyC,EAEJ,KAAK,EAAEzC,CAAQ,EAAId,MAInB,QAAO,KAAK,EAAEc,CAAQ,UAKvBD,EAAS,KAAK,SAAYC,EAAW,IAAO,EACvCyC,EAEJ,KAAK,IAAI,UAAW1C,EAAQb,CAAM,MAIlC,QAAO,KAAK,EAAE,UAAWa,CAAO,EAGlC,OAAOb,CACR,EAGA,IAAKzC,GACL,IAAKC,EAEN,ICjiCA,IAAAgG,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAkBAA,GAAO,QAAU,CAEhB,UAAW,UACX,CACC,IAAIC,EAAO,KACXC,EAAS,KAAK,EAEdC,EAAkB,KAAK,QAAU,GAAOD,EAAO,UAAW,EAAK,EAC/DE,EAAe,KAAK,gBAAiB,CAAE,EACvCC,EAAcD,GAAgBF,EAAO,SAAUE,GAAe,EAE9D,KAAK,UAAYF,EAAO,UAAW,EAAK,EAGxC,SAASI,EAAeC,EACxB,CAGC,QAFIC,EAAY,CAAC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,EAC3BC,EAAI,EACIA,EAAI,IAEXD,EAAYC,EAAI,GAAO,CAAC,EAAEA,EAAI,EAAE,EAAIF,EAAME,GAAI,EAG/CD,EAAU,CAAC,EAAE,CAAC,EAAI,GAClBP,EAAK,UAAYO,CAClB,CAGA,SAASE,EAAcH,EACvB,CAIC,QAHII,EAAQ,CAAE,GAAI,IAAK,EACvBC,EAAU,CAAE,GAAI,EAAG,EACnBH,EAAI,EACIA,EAAIF,EAAK,QAEhBI,EAAM,IAAMF,CAAC,EAAI,OAAO,aAAcF,EAAKE,CAAC,CAAE,EAC9CG,EAAQL,EAAKE,CAAC,CAAC,EAAI,IAAMA,IAG1B,IADAA,EAAI,GACIA,EAAI,KAEXE,EAAMF,CAAC,EAAI,OAAO,aAAcA,CAAE,EAClCG,EAAQH,CAAC,EAAIA,IAEdR,EAAK,cAAgBU,EACrBV,EAAK,sBAAwBW,CAC9B,CAGAN,EAAeH,EAAgBD,EAAO,cAAeC,EAAe,EAAG,EAEpE,KAAK,cAAe,mFAAqF,CAAE,CAAE,EAGhHO,EAAcN,EAAeF,EAAO,eAAgBE,EAAcC,CAAY,EAE3E,KAAK,cAAe,SAAU,uNAAwN,EAAG,CAAE,CAAE,EAGhQ,KAAK,aAAe,CAAC,EACrB,KAAK,KAAOH,EAAO,UAAW,CAAK,EACnC,KAAK,WAAY,KAAK,IAAK,CAQ5B,EAGA,OAAQ,SAAUW,EAAMC,EACxB,CACC,IAAIZ,EAAS,KAAK,EAElBa,EAAaF,EACbG,EACAC,EAAS,CAAC,EACVR,EAAI,EACJS,EACAC,EAAW,EACXC,EAAS,CAAC,EACVC,EAAc,CAAC,EACfC,EACAC,EAAe,EAGf,GAAK,KAAK,IAAIV,CAAI,EAEjB,OAAO,KAAK,IAAIA,CAAI,EAQrB,IAHAC,EAASA,EAASA,EAASD,EAAO,KAAK,IAG/BA,EAAOC,IAEdE,EAAOd,EAAO,UAAWW,CAAK,EAC9BA,GAAQ,EAERI,EAAO,KAAMD,GAAQ,GAAK,GAAMA,GAAQ,EAAI,GAAMA,EAAO,EAAK,EAGzD,EAAAA,EAAO,SAAZ,CAOD,KAAQP,EAAIQ,EAAO,QAElBC,EAAQD,EAAOR,GAAG,EAIbS,IAAU,EAEdE,EAAO,KAAM,EAAG,EAGPF,EAAQ,GAEjBI,EAAW,EACXF,EAAO,KAAM,EAAG,EAChBC,EAAY,KAAM,qBAAwB,IAAOH,EAAQ,GAAMD,EAAOR,GAAG,GAAM,UAAW,GAGjFS,EAAQ,EAEjBC,EAAWD,EAGFC,IAAa,GAAKD,IAAU,EAGhCT,EAAI,EAAIQ,EAAO,QAEnBG,EAAO,KAAMH,EAAOR,GAAG,GAAK,EAAIQ,EAAOR,GAAG,CAAE,EAIpCS,EAAQ,IAEjBE,EAAO,KAAM,KAAK,UAAUD,CAAQ,EAAGD,EAAQ,CAAE,CAAE,EAIpDC,EAAWA,EAAW,EAAI,EAAIA,EAAW,EAGlCV,EAAI,IAAQ,IAElBA,GAAKc,EACLA,EAAe,GAIjB,OAAAH,EAAS,KAAK,cAAeA,EAAQC,CAAY,EAE5CC,IAEJF,EAAS,CACR,SAAY,SAAU,UAAYA,EAAO,QAAS,MAAO,MAAO,EAAE,QAAS,KAAM,KAAM,EAAE,QAAS,MAAO,KAAM,EAAE,QAAS,UAAW,GAAI,EAAI,GAAI,EAAI,KAAM,IAAK,CACjK,GAGIL,GAAc,KAAK,YAEvB,KAAK,IAAIA,CAAU,EAAIK,GAEjBA,CACR,EAGA,OAAQ,SAAUI,EAClB,CAUC,QATIhB,EAAY,KAAK,UACrBiB,EAAS,CAAC,EACVC,EAAW,KAAK,SAAW,EAAI,EAC/BjB,EAAI,EACJkB,EACAX,EACAI,EAAS,CAAC,EAGFK,EAAO,OAASC,GAEvBC,EAAQH,EAAMf,GAAG,EAEZkB,IAAU,GAEdF,EAAO,KAAM,CAAE,GAGJT,EAAOR,EAAU,CAAC,EAAE,QAASmB,CAAM,IAAO,EAErDF,EAAO,KAAMT,EAAO,CAAE,GAEXA,EAAOR,EAAU,CAAC,EAAE,QAASmB,CAAM,IAAO,EAErDF,EAAO,KAAM,EAAGT,EAAO,CAAE,GAEdA,EAAOR,EAAU,CAAC,EAAE,QAASmB,CAAM,IAAO,EAErDF,EAAO,KAAM,EAAGT,EAAO,CAAE,EAGhBW,IAAU,OAEnBF,EAAO,KAAM,CAAE,EAKfA,EAAO,KAAM,EAAG,EAAGE,GAAS,EAAGA,EAAQ,EAAK,EAO9C,IAJAF,EAAO,OAASC,EAGhBjB,EAAI,EACIA,EAAIiB,GAEXN,EAAO,KAAMK,EAAOhB,GAAG,GAAK,EAAIgB,EAAOhB,CAAC,GAAK,GAAKgB,EAAOhB,GAAG,EAAI,IAAU,EAAIgB,EAAOhB,GAAG,CAAE,EAE3F,OAAAW,EAAQA,EAAO,OAAS,CAAE,GAAK,IACxBA,CACR,EAGA,cAAe,SAAUI,EAAOI,EAChC,CAMC,QALInB,EAAI,EAAGoB,EAAIL,EAAM,OACrBM,EACAC,EAAI,EACJX,EAAS,GAEDX,EAAIoB,GAEXC,EAAQN,EAAMf,GAAG,EAEZqB,IAAU,KAEdV,GAAUQ,EAAMG,GAAG,IAGbD,EAAQ,KAAK,cAAcA,CAAK,KAEtCV,GAAUU,GAGZ,OAAOV,CACR,EAGA,cAAe,SAAUY,EAAMC,EAC/B,CAEC,QADIC,EAAQ,CAAC,EAAGzB,EAAI,EAAGoB,EAAIG,EAAK,OAAQF,EAChCrB,EAAIoB,GAEXC,EAAQE,EAAK,WAAYvB,GAAI,EAEvBwB,IAELH,EAAQ,KAAK,sBAAsBA,CAAK,GAAK,IAE9CI,EAAM,KAAMJ,CAAM,EAEnB,OAAOI,CACR,EAGA,WAAY,SAAUrB,EACtB,CACC,IAAIX,EAAS,KAAK,EAElBiC,EAAatB,EACbuB,EAAO,CAAC,EACRC,EACAC,EAGAC,EAAiBrC,EAAO,SAAUW,GAAO,EAYzC,IARAuB,EAAK,WAAa,MAAM,UAAU,MAAM,KAAMlC,EAAO,cAAeW,EAAM0B,CAAe,CAAE,EAE3F1B,GAAQ0B,EAGRF,EAAYnC,EAAO,SAAUW,GAAO,EACpCyB,EAAUzB,EAAO,EAAIwB,EAAYnC,EAAO,UAAWW,CAAK,EACxDA,GAAQ,EACAA,EAAOyB,GAEdF,EAAM,MAAM,UAAU,SAAS,KAAMlC,EAAO,cAAeW,EAAM,KAAK,SAAW,EAAI,CAAE,CAAE,CAAE,EAAIA,EAC/FA,GAAQwB,EAET,YAAK,aAAaF,CAAU,EAAIC,EAEzBA,CACR,EAGA,KAAM,SAAUI,EAChB,CACC,OAAO,KAAK,OAAQ,KAAK,EAAE,UAAW,KAAK,UAAY,EAAIA,CAAQ,EAAI,CAAE,CAC1E,EAGA,SAAU,SAAUC,EAASC,EAAWC,EAAYC,EACpD,CAECD,EAAaA,GAAc,KAAK,KAGhCA,EAAa,KAAK,aAAaA,CAAU,GAAK,KAAK,WAAYA,CAAW,EAE1E,IAAIzC,EAAS,KAAK,EAClB2C,EAAM,KAAK,IACXC,EAAe,IACfrC,EAAI,EACJsC,EACAC,EAAaL,EAAW,WACxBM,EACAC,EAAQ,CAAC,EACTC,EACAC,EACAC,EAAY,EASZ,IANK,KAAK,QAAU,IAEnBP,EAAe5C,EAAO,SAAUuC,EAAUhC,GAAI,EAAI,GAI3CA,EAAIqC,IAEXC,EAAS7C,EAAO,SAAUuC,EAAUhC,CAAE,EACjCsC,IAAW,IAINA,IAAW,IAAMC,EAAW,QAASD,CAAO,GAAK,GAErDA,IAAW,IAEfG,EAAM,KAAM,CAAE,CAACH,CAAM,EAAGtC,CAAE,CAAE,EAE7BwC,EAAO,OAIDA,IAELC,EAAM,KAAM,CAAE,CAAC,EAAGzC,CAAE,CAAE,EACtBwC,EAAOC,EAAOA,EAAM,OAAS,CAAE,EAAE,CAAC,GAEnCD,EAAK,KAAMF,CAAO,GAEnBtC,IAKD,IADA0C,EAAY,KAAK,IAAKD,EAAM,OAAQhD,EAAO,SAAUwC,CAAU,CAAE,EACzDW,EAAYF,GAEnBC,EAAWT,EAAW,GAAK,KAAK,OAAQO,EAAMG,CAAS,EAAE,CAAC,CAAE,CAAC,GAGxD,CAACT,GAAQQ,KAGbP,EAAI,UAAWH,EAAY,EAAIW,EAAY,EAAGD,GAAY,CAAE,EAC5DP,EAAI,SAAUH,EAAY,EAAIW,EAAY,EAAGH,EAAMG,CAAS,EAAE,CAAC,EAAE,MAAO,EACxER,EAAI,SAAUH,EAAY,EAAIW,EAAY,EAAGH,EAAMG,CAAS,EAAE,CAAC,CAAE,GAElEA,IAIDR,EAAI,SAAUH,EAAY,EAAGW,CAAU,CACxC,CAED,ICxZA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAwBA,IAAMC,GAAQ,IACRC,GAAMD,GAAM,MAIZE,GAAkB,UACxB,CAeC,QAdIC,EAAQ,CACX,WAAY,EACZ,WAAY,GACZ,WAAY,GACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,GACb,EACA,EAAI,EACI,EAAI,IAEXA,EAAO,WAAa,CAAE,EAAI,IAAM,IAEjC,OAAOA,CACR,EAAG,EAIGC,GAAiB,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,CAAC,EAG/C,SAASC,GAAoBC,EAC7B,CACC,IAAMC,EAAW,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAClF,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAG1E,OAAQA,EAASD,EAAS,EAAI,GAAK,GAAOC,GAAUD,EAAS,MAAW,CAAC,GAAK,EAAMC,GAAUD,EAAS,QAAW,EAAE,CACrH,CAGA,IAAME,GAAW,CAChB,MACA,MACA,EACA,GACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,KACD,EAEAT,GAAO,QAAU,CAEhB,QAAS,UACT,CACC,KAAK,GAAK,CACT,QAAS,EACT,KAAM,EACN,OAAQ,EACR,GAAI,GACJ,GAAI,GAIJ,KAAM,KAAK,EAAE,SAAU,EAAK,EAAI,EAGhC,WAAY,KAAK,EAAE,SAAU,EAAK,EAAI,EAGtC,QAAS,CAAE,EAAG,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,CAAE,EAE5B,WAAY,EAKZ,OAAQ,EACR,UAAW,EACX,UAAW,EACX,WAAY,EACZ,MAAO,EACP,IAAK,EACL,IAAK,CACN,EAKA,KAAK,aAAa,CACnB,EAEA,WAAY,SAAUU,EACtB,CACC,GAAKA,IAAU,EACf,CACC,IAAIC,EAAK,KAAK,GACdC,EAAMD,EAAG,IACTE,EAAMF,EAAG,IACT,KAAK,OAAQ,MAAOA,EAAG,MAAQA,EAAG,IAAM,CAAE,EAAE,KAAM,GAAI,CAAE,EACxD,KAAK,WAAYC,EAAKC,CAAI,CAC3B,CACD,EAEA,aAAc,SAASC,EACvB,CACKA,EAAS,IAEZ,KAAK,IAAI,iBAAiB,KAAK,OAAO,EAClC,KAAK,GAAG,IAAM,EAEjB,KAAK,IAAI,kBAAkB,EAAG,EAAG,EAAG,KAAK,GAAG,EAAE,EAEtC,KAAK,GAAG,KAAO,IAEvB,KAAK,IAAI,oBAAoB,EAAG,EAAG,CAAC,GAGlCA,IAAW,IAEVA,IAAW,IAEd,KAAK,aAAa,CAAC,EAEhB,KAAK,WAER,KAAK,IAAI,iBAAiB,KAAK,QAAQ,EACvC,KAAK,WAAW,EAAG,CAAC,GAGvB,EAEA,yBAA0B,SAAUC,EACpC,CACM,OAAOA,EAAK,IAAQ,MAExBA,EAAK,IAAM,GAEZ,KAAK,aAAeA,EACpB,KAAK,kBAAoB,2BACzB,KAAK,IAAI,6BAA8BA,EAAK,MAAOA,EAAK,KAAMA,EAAK,MAAQ,CAAE,CAC9E,EAGA,iBAAkB,UAClB,CACC,IAAIC,EAAM,KAAK,IACfL,EAAK,KAAK,GAGNA,EAAG,YAAcA,EAAG,YAEvBA,EAAG,UAAYA,EAAG,QAEd,KAAK,WAEJA,EAAG,YAAc,GAErBK,EAAI,iBAAkB,KAAK,QAAS,EACpC,KAAK,SAAW,MAERL,EAAG,YAAcA,EAAG,WAE5BK,EAAI,2BAA4BA,EAAI,sBAAuB,KAAK,QAAS,EAAG,GAAML,EAAG,UAAW,IAAK,EAEtGA,EAAG,UAAYA,EAAG,WAEnBA,EAAG,WAAaA,EAAG,UACnBA,EAAG,UAAYA,EAAG,MACnB,EAEA,OAAQ,UACR,CACC,KAAK,IAAI,cAAcN,GAAe,CAAC,CAAC,KAAK,GAAG,KAAO,KAAK,GAAG,OAAS,KAAK,GAAG,IAAI,CAAC,EACjF,KAAK,IAAI,YAAY,KAAQ,CAAC,GAEjC,KAAK,IAAI,wBAAwB,KAAK,GAAG,OAAO,CAElD,EAEA,WAAY,SAAUY,EACtB,CACC,KAAK,IAAI,UAAWA,EAAO,KAAK,GAAG,IAAM,CAAE,EAC3C,KAAK,IAAI,UAAWA,EAAQ,EAAG,KAAK,GAAG,IAAM,CAAE,CAChD,EAGA,kBAAmB,SAAUC,EAC7B,CACC,IAAIC,EAAU,KAAK,GAAG,QAAQ,CAAC,EAC/BC,EAAOjB,GAAgBe,CAAS,GAAK,KAAK,sBAAuBA,CAAS,GAAK,GAC/E,KAAK,SAAU,KAAK,UAAU,OAAQE,CAAK,EAGtCD,EAAQ,OAAS,IAErBA,EAAQ,OAASC,GAEbD,EAAQ,OAAS,GAErB,KAAK,IAAI,wBAAyBA,EAAQ,IAAKC,CAAK,CAEtD,EAGA,sBAAuB,SAAUC,EACjC,CACC,IAAIL,EAAM,KAAK,IACfD,EAAO,KAAK,aACZO,EAEA,OAAKD,IAECN,EAAK,QAETO,EAAMN,EAAI,yBAA0BK,EAAMN,EAAK,KAAMA,EAAK,MAAQ,CAAE,EAIpEO,EAAMN,EAAI,qBAAsBK,EAAMN,EAAK,KAAMA,EAAK,MAAQ,CAAE,EAEjEC,EAAI,oBAAqBK,CAAK,IAE1BN,EAAK,OAAS,WAAaA,EAAK,OAAS,SAE7C,KAAK,qBAAsBO,CAAI,EAE3BP,EAAK,OAAS,iBAElB,KAAK,GAAG,QAAQ,CAAC,EAAIO,GAEjBP,EAAK,OAAS,iBAElB,KAAK,sBAAuBO,CAAI,EAI1BP,EAAK,GACb,EAGA,kBAAmB,SAAUQ,EAAKC,EAClC,CACC,IAAIC,EAAM,KAAK,IACfC,EAAU,KAAK,UACfC,EAAU,KAAK,GAAG,QAGlBC,EAAU,OAAO,aAAa,MAAO,KAAMF,EAAQ,OAAO,MAAO,EAAGH,CAAI,CAAE,EAAI;AAAA,EAC9EM,EAAW,KAAK,cAAeD,EAAQ,MAAO,EAAG,EAAG,EAAE,YAAY,CAAE,EAK/DD,EAAQ,CAAC,EAAE,OAAS,IAExBA,EAAQ,CAAC,EAAE,OAASC,GAEhBD,EAAQ,CAAC,EAAE,OAAS,GAExB,KAAK,IAAI,uBAAwBA,EAAQ,CAAC,EAAE,IAAKC,CAAQ,EAGrDD,EAAQ,CAAC,EAAE,OAAS,IAExBA,EAAQ,CAAC,EAAE,OAASC,GAEhBD,EAAQ,CAAC,EAAE,OAAS,GAExB,KAAK,IAAI,uBAAwBA,EAAQ,CAAC,EAAE,IAAKC,CAAQ,EAIrD,KAAK,QAAU,GAGnBC,EAAS,KAAM,CAAE,EAGjBJ,EAAI,cAAeC,EAAQ,QAAU,EAAGG,CAAS,IAKjDJ,EAAI,SAAUC,EAAQ,QAAU,EAAGH,CAAI,EAGvCE,EAAI,cAAeC,EAAQ,QAAU,EAAGG,CAAS,EAGjD,KAAK,SAAUH,EAAQ,OAAQ,MAAOF,CAAW,EAAI,GAAKA,CAAW,GAGjEE,EAAQ,WAGZ,KAAK,SAAUA,EAAQ,QAASA,EAAQ,SAAU,CAEpD,EAEA,aAAc,SAAUI,EACxB,CACC,IAAInB,EAAK,KAAK,GACTmB,GAAU,CAACnB,EAAG,QAAQ,CAAC,GAE3B,KAAK,yBAAyB,CAC7B,KAAM,eACN,KAAM,EACN,KAAM,IACN,QAAS,EACT,MAAO,GACR,CAAC,EAEG,CAACmB,GAAUnB,EAAG,QAAQ,CAAC,IAE3B,KAAK,IAAI,iBAAkBA,EAAG,QAAQ,CAAC,CAAE,EACzCA,EAAG,QAAQ,CAAC,EAAI,EAElB,EAGA,aAAc,UACd,CACC,IAAMK,EAAM,KAAK,IAEjB,GAAK,KAAK,QAqDTA,EAAI,oBAAoB,EAAG,EAAG,CAAC,EAC3B,KAAK,IAAI,YAAY,KAAQ,CAAC,GAEjCA,EAAI,0BAA0B,KAAK,QAAQ,IAAK,KAAK,GAAG,GAAI,KAAK,GAAG,EAAE,EAEvEA,EAAI,iBAAiB,KAAK,OAAO,EAC7B,KAAK,WAERA,EAAI,iBAAiB,KAAK,QAAQ,EAClC,KAAK,SAAW,UA7DlB,CAKC,IAAMe,EAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,EAC7C,QAASC,EAAI,EAAGA,EAAI,EAAGA,IAGtBhB,EAAI,kBAAkB,EAAGe,EAAgBC,CAAC,EAAG,EAAG,CAAC,EACjDhB,EAAI,kBAAkB,EAAGe,EAAgBC,CAAC,EAAG,EAAG,CAAC,EACjDhB,EAAI,kBAAkB,EAAGe,EAAgBC,CAAC,EAAG,EAAG,CAAC,EAEjDhB,EAAI,kBAAkB,EAAGe,EAAgBC,CAAC,EAAG,EAAG,CAAC,EAMlDhB,EAAI,kBAAkB,EAAG,EAAG,EAAG,CAAC,EAEhCA,EAAI,kBAAkB,EAAG,EAAG,EAAG,CAAC,EAEhCA,EAAI,kBAAkB,EAAG,EAAG,EAAG,CAAC,EAChCA,EAAI,kBAAkB,EAAG,EAAG,EAAG,CAAC,EAEhCA,EAAI,kBAAkB,EAAG,EAAG,EAAG,CAAC,EAEhCA,EAAI,kBAAkB,EAAG,EAAG,EAAG,CAAC,EAChCA,EAAI,kBAAkB,EAAG,EAAG,EAAG,CAAC,EAEhCA,EAAI,kBAAkB,EAAG,GAAI,EAAG,CAAC,EACjCA,EAAI,kBAAkB,EAAG,GAAI,EAAG,CAAC,EAEjCA,EAAI,kBAAkB,EAAG,EAAG,EAAG,CAAC,EAChCA,EAAI,kBAAkB,EAAG,EAAG,EAAG,CAAC,EAChCA,EAAI,kBAAkB,EAAG,EAAG,EAAG,CAAC,EAEhC,KAAK,QAAUA,EAAI,gBAAgB,EAAG,EAAG,EAAG,EAAG,GAAG,EAClDA,EAAI,eAAe,KAAK,OAAO,EAC3B,KAAK,WAER,KAAK,UAAYA,EAAI,gBAAgB,KAAK,QAAS,GAAM,EAAG,EAAG,GAAG,EAC9D,KAAK,WAAa,KAAK,IAAI,YAAY,KAAQ,CAAC,GAEnDA,EAAI,+BAA+BA,EAAI,sBAAsB,KAAK,SAAS,EAAG,CAAC,EAGlF,CAgBD,EAGA,cAAe,SAAUc,EAAQG,EAAMC,EACvC,CACC,IAAIT,EAAM,KAAK,IACfE,EAAU,KAAK,GAAG,QAClBZ,EAAMoB,EACNL,EAAS5B,GAAK4B,CAAO,EAGhBA,IAAW,IAEfH,EAAQ,CAAC,EAAI,GAETG,IAAW,KAEfH,EAAQ,CAAC,EAAI,GAITG,IAAW,GAAK,CAACH,EAAQ,CAAC,EAAE,OAEhC,KAAK,yBAAyB,CAC7B,KAAM,gBACN,KAAM,EACN,KAAM,IACN,IAAK,CAACO,EACN,IAAK,EACL,QAAS,EACT,MAAO,GACR,CAAC,EACDP,EAAQ,CAAC,EAAE,MAAQ,GACnBA,EAAQ,CAAC,EAAE,KAAO,EACZO,IAEL,KAAK,KAAO,IAGTJ,IAAW,KAEfL,EAAI,SAAU,GAAQA,EAAI,SAAU,EAAK,EAAI,GAAO,EAC/CE,EAAQ,CAAC,EAAE,OAAS,GAExB,KAAK,IAAI,iBAAkBA,EAAQ,CAAC,EAAE,GAAI,EAE3CA,EAAQ,CAAC,EAAE,KAAO,KAAK,GAAG,WAAa,GAInCG,IAAW,GAEfH,EAAQ,CAAC,EAAE,QAAS,CAAEM,EAAM,EAAG,CAAE,EAE7BH,IAAW,KAEff,EAAOY,EAAQ,CAAC,EAAE,MAAM,EACxBQ,EAAO,KAAK,cAAepB,EAAK,CAAC,CAAE,EACnCU,EAAI,UAAWV,EAAK,CAAC,EAAGoB,EAAK,MAAO,EACpCV,EAAI,cAAeV,EAAK,CAAC,EAAI,EAAGoB,CAAK,GAIjCL,IAAW,GAAK,CAACH,EAAQ,CAAC,EAAE,OAEhC,KAAK,yBAAyB,CAC7B,KAAM,gBACN,KAAM,EACN,KAAM,IACN,IAAK,EACL,QAAS,EACT,MAAO,GACR,CAAC,EACDA,EAAQ,CAAC,EAAE,MAAQ,GACnBA,EAAQ,CAAC,EAAE,KAAO,EAClB,KAAK,KAAO,GAERG,IAAW,KAEVH,EAAQ,CAAC,EAAE,OAAS,GAExB,KAAK,IAAI,iBAAkBA,EAAQ,CAAC,EAAE,GAAI,EAE3CA,EAAQ,CAAC,EAAE,KAAO,EAEpB,EAEA,sBAAuB,SAAUL,EACjC,CACC,IAAIG,EAAM,KAAK,IACfE,EAAU,KAAK,GAAG,QAClBZ,EAAO,KAAK,aAEPA,EAAK,MAAQ,IAEjBU,EAAI,SAAU,GAAQA,EAAI,SAAU,EAAK,EAAI,KAAWH,EAAM,EAAI,EAAI,EACjEA,GAEJK,EAAQ,CAAC,EAAE,KAAO,EAClBA,EAAQ,CAAC,EAAE,IAAML,EACjB,KAAK,GAAG,WAAa,EAChBK,EAAQ,CAAC,EAAE,OAEf,KAAK,IAAI,uBAAwBA,EAAQ,CAAC,EAAE,IAAKA,EAAQ,CAAC,EAAE,KAAM,GAKnEA,EAAQ,CAAC,EAAE,KAAO,KAAK,GAAG,WAAa,GAIpCZ,EAAK,MAAQ,IAEZO,GAEJK,EAAQ,CAAC,EAAE,KAAO,EAClBA,EAAQ,CAAC,EAAE,IAAML,EACZK,EAAQ,CAAC,EAAE,OAEf,KAAK,IAAI,uBAAwBA,EAAQ,CAAC,EAAE,IAAKA,EAAQ,CAAC,EAAE,KAAM,GAKnEA,EAAQ,CAAC,EAAE,KAAO,EAGrB,EAGA,OAAQ,SAAUQ,EAClB,CACC,IAAInB,EAAM,KAAK,IACfL,EAAK,KAAK,GACVqB,EAAI,EAGJ,GAAKrB,EAAG,QAAQ,CAAC,EAAE,OAElBA,EAAG,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,GAAKwB,UAKvBA,EAAOA,EAAK,QAAS,MAAO;AAAA,CAAK,GAI1B,KAAK,EAAE,SAAU,EAAK,EAAI,KAAWxB,EAAG,YAE9C,KAAK,cAAeA,EAAG,WAAa,GAAK,EAAG,EAAG,CAAE,GAK3C,KAAK,EAAE,SAAU,EAAK,EAAI,MAAaA,EAAG,KAAO,KAEvDA,EAAG,MAAQ,EACX,KAAK,OAAO,GAIRA,EAAG,YAAc,KAAK,SAI1B,KAAQqB,EAAIG,EAAK,QAAUxB,EAAG,IAAMA,EAAG,QAEtCK,EAAI,gBAAiBmB,EAAKH,GAAG,CAAE,EAC/BrB,EAAG,MACEA,EAAG,MAAQA,EAAG,QAElBA,EAAG,IAAM,EACTA,EAAG,YAIKA,EAAG,aAERA,EAAG,QAAQ,CAAC,GAEhBK,EAAI,gBAAiBmB,CAAK,EAGtBxB,EAAG,QAAQ,CAAC,EAAE,OAAS,IAE3BA,EAAG,QAAQ,CAAC,EAAE,OAASwB,GAEnBxB,EAAG,QAAQ,CAAC,EAAE,OAAS,GAE3BK,EAAI,uBAAwBL,EAAG,QAAQ,CAAC,EAAE,IAAKwB,CAAK,EAIxD,EAGA,MAAO,SAAUC,EAAMC,EACvB,CACC,IAAIC,EAAWC,EAwBf,GArBKH,IAAS,IAEbG,EAASF,GAGLD,IAAS,IAEbG,EAAS,OAAO,aAAcF,CAAI,GAG9BD,IAAS,IAEbG,EAAS,KAAK,IAAKF,CAAI,GAAK,KAAK,OAAQA,CAAI,GAGzCD,IAAS,IAEbE,EAAY,KAAK,EAAE,UAAW,KAAK,SAAY,KAAK,SAAW,EAAI,IAAOD,GAAQ,KAAK,SAAW,EAAI,GAAK,EAC3GE,EAAS,KAAK,OAAQD,EAAY,EAAG,KAAK,EAAE,SAAUA,CAAU,EAAI,CAAE,GAGlEF,IAAS,EACd,CACC,GAAK,CAAC,KAAK,cAAeC,CAAI,EAE7B,OAEDE,EAAS,KAAK,cAAeF,CAAI,CAClC,CACA,KAAK,OAAQ,GAAKE,CAAO,CAC1B,EAEA,YAAa,SAAUC,EAAOC,EAAOC,EAAQC,EAC7C,CACCD,EAASA,GAAU,EACnBC,EAAOA,GAAQ,EAEf,QADIX,EAAI,EACAA,IAAMU,GAEb,KAAK,OAAQ,KAAK,cAAe,KAAK,EAAE,cAAeF,EAAOC,CAAM,CAAE,GAAMT,EAAIU,EAAS,KAAO,GAAK,EACrGF,GAASC,EAAQE,CAEnB,EA+EA,KAAM,SAAUC,EAAQT,EAAMU,EAAOC,EAAMC,EAC3C,CACC,IAAIxB,EAAM,KAAK,EAAE,SAAUY,CAAK,EAChCa,EAAa,EACbC,EACAC,EA6BA,GA3BK,KAAK,UAET,KAAK,UAAU,EAIZ,KAAK,QAAU,GAElB3B,IAOD0B,EAAS,MAAO1B,CAAI,EACpB0B,EAAO,KAAM,CAAE,EACf,KAAK,UAAY,CAChB,OAAQA,EACR,QAASd,EACT,UAAWU,EACX,QAASE,EACT,OAAQH,EACR,KAAME,CACP,EAGK,KAAK,GAAG,QAAQ,CAAC,EACtB,CAQC,GAPAI,EAAoB,KAAK,IAAI,wBAAyB,KAAK,GAAG,QAAQ,CAAC,EAAGD,CAAO,EAG5EA,EAAOC,EAAoB,CAAC,IAAM,IAEtCA,IAEIA,EAEJ,YAAK,OAAQ,OAAO,aAAa,MAAO,KAAMD,EAAO,MAAO,EAAGC,CAAkB,CAAE,EAAI;AAAA,CAAK,EAC5F,KAAK,kBAAmBA,CAAkB,EACnC,KAAK,KAAO,EAInB,KAAK,aAAc,CAAE,CAEvB,CAGA,KAAK,IAAI,2BAA4B,KAAK,GAAG,WAAa,KAAK,SAAW,KAAK,QAASD,EAAQD,CAAW,EAC3G,KAAK,iBAAiB,CACvB,EAGA,UAAW,SAAUJ,EAAQO,EAAKL,EAAMC,EACxC,CAEC,GAAK,KAAK,GAAG,QAAQ,CAAC,EACtB,CACC,IAAI3B,EAAO,KAAK,IAAI,wBAAyB,KAAK,GAAG,QAAQ,CAAC,CAAE,EAEhE,GAAKA,IAAS,GAEb,KAAK,aAAc,CAAE,MAIrB,aAAK,SAAUwB,EAAQxB,CAAK,EACrB,KAAK,KAAO,CAErB,CAEA,KAAK,UAAY,CAChB,QAAS2B,EACT,OAAQH,EACR,KAAME,CACP,EACA,KAAK,IAAI,2BAA4B,KAAK,GAAG,WAAa,KAAK,SAAW,KAAK,OAAQ,EACvF,KAAK,iBAAiB,CACvB,EAEA,WAAY,SAASM,EAAYC,EACjC,CACC,KAAK,gBAAgB5C,GAAS2C,CAAU,EAAG3C,GAAS4C,CAAU,CAAC,CAChE,EAGA,WAAY,SAAUzC,EAAKC,EAC3B,CACC,IAAIF,EAAK,KAAK,GAGRA,EAAG,aAKJC,GAAOD,EAAG,QAId,KAAK,aAAcC,EAAM,CAAE,EAEvB,KAAK,UAAYA,GAAO,GAAKC,GAAO,GAAKA,EAAMF,EAAG,QAEtD,KAAK,IAAI,uBAAwB,KAAK,SAAUE,EAAKD,CAAI,EACzDD,EAAG,IAAMC,EACTD,EAAG,IAAME,GAEX,EAEA,SAAU,SAAUyC,EACpB,CACC,IAAIC,EAAY,KAAK,GAAG,KAAO,EAAO,EAAI,EAC1C,OAAKD,IAAS,EAENC,EAGHD,IAAS,GAAKA,IAAS,EAEpB,GAEHA,IAASC,IAEb,KAAK,GAAG,MAAQ,EAChB,KAAK,OAAO,GAENA,EACR,EAGA,UAAW,SAAUC,EACrB,CACC,IAAI7C,EAAK,KAAK,GAGT6C,IAAc,IAElB7C,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAAS,EACnCA,EAAG,MAAQ,KAEP6C,EAAY,IAEhB7C,EAAG,QAAU,GAET6C,EAAY,IAEhB7C,EAAG,KAAO,GAEN6C,EAAY,IAEhB7C,EAAG,OAAS,GAER6C,EAAY,IAEhB7C,EAAG,MAAQ,GAEZ,KAAK,OAAO,CACb,EAGA,gBAAiB,SAASyC,EAAYC,EACtC,CACC,IAAMrC,EAAM,KAAK,IACjB,GAAIA,EAAI,YAAY,KAAQ,CAAC,EAC7B,CACC,IAAIyC,EAAIC,EACJN,IAAe,MAElBK,EAAK,IAIDL,IAAe,MAElBK,EAAK,GAILA,EAAKnD,GAAoB8C,CAAU,EAEpC,KAAK,GAAG,GAAKK,GAGVJ,IAAe,MAElBK,EAAK,IAIDL,IAAe,MAElBK,EAAK,GAILA,EAAKpD,GAAoB+C,CAAU,EAEpC,KAAK,GAAG,GAAKK,GAId1C,EAAI,0BAA0B,KAAK,QAAQ,IAAKyC,EAAIC,CAAE,EAClD,KAAK,UAER1C,EAAI,0BAA0B,KAAK,SAAS,IAAKyC,EAAIC,CAAE,CAEzD,CACD,EAEA,WAAY,SAAU5C,EACtB,CACC,KAAK,GAAG,WAAaA,EAIhBA,GAEJ,KAAK,WAAY,EAAG,CAAE,EAGvB,KAAK,IAAI,eAAgB,KAAK,UAAYA,EAAS,KAAK,SAAW,KAAK,OAAQ,EAChF,KAAK,OAAO,CACb,EAEA,aAAc,SAAU6C,EACxB,CACC,IAAI3C,EAAM,KAAK,IACfL,EAAK,KAAK,GACVC,EAAMD,EAAG,IAAKE,EAAMF,EAAG,IACvBiD,EAAYjD,EAAG,OACfW,EAIA,GAHAX,EAAG,OAASgD,EAGP,KAAK,UAAYA,EAAQC,EAC9B,CAEC,IADAtC,EAAMN,EAAI,sBAAuB,KAAK,QAAS,EACvC4C,EAAYD,GAEnB3C,EAAI,uBAAwB,KAAK,SAAU,EAAG4C,GAAY,EAC1D5C,EAAI,uBAAwBM,EAAK,MAAOX,EAAG,MAAQ,CAAE,EAAE,KAAM,GAAI,CAAE,EAEpEK,EAAI,uBAAwB,KAAK,SAAUH,EAAKD,CAAI,CACrD,CAGK+C,EAAQhD,EAAG,YAEfA,EAAG,UAAYgD,EAIT,KAAK,SAeV3C,EAAI,2BAA4BA,EAAI,sBAAuB,KAAK,QAAS,EAAG,GAAML,EAAG,UAAW,IAAK,GAbjG,KAAK,GAAG,IAAM,GAEjBK,EAAI,kBAAkB,EAAG,EAAG,EAAG,KAAK,GAAG,EAAE,EAE1C,KAAK,SAAWA,EAAI,gBAAiB,KAAK,QAAS,GAAML,EAAG,UAAW,EAAG,GAAI,EAC1E,KAAK,IAAI,YAAY,KAAQ,CAAC,GAEjCK,EAAI,0BAA0B,KAAK,SAAS,IAAK,KAAK,GAAG,GAAI,KAAK,GAAG,EAAE,EAExEA,EAAI,oBAAoB,EAAG,EAAG,CAAC,GAMhCL,EAAG,UAAYA,EAAG,WAGdgD,IAGChD,EAAG,KAAOgD,GAEd,KAAK,WAAY,EAAG,CAAE,EAGlB,KAAK,UAET3C,EAAI,iBAAkB,KAAK,QAAS,EAGvC,EAGA,cAAe,UACf,CACC,IAAIS,EAAM,KAAK,IASf,GANA,KAAK,cAAgB,EAGrB,KAAK,mBAAmB,EAGnB,KAAK,SAET,OAAOA,EAAI,SAAU,EAClBA,EAAI,SAAU,CAAK,EAAI,KACrB,KAAK,UAAY,GAAO,IAC1B,EACH,EAIDA,EAAI,SAAU,GACZ,KAAK,IAAI,YAAY,KAAQ,CAAC,EAAI,EAAI,GACpCA,EAAI,SAAS,CAAI,EAAI,EACtB,GACA,CACH,EAIAA,EAAI,SAAU,GAAMA,EAAI,SAAU,EAAK,EAAI,EAAK,EAG3C,KAAK,QAAU,GAEnBA,EAAI,UAAW,GAAM,GAAO,EAU7BA,EAAI,UAAW,GAAM,GAAO,EAG5B,KAAK,gBAAiB,EAAG,CAAE,CAC5B,EAEA,mBAAoB,UACpB,CACC,IAAMT,EAAM,KAAK,IACX6C,EAAa,IAAI7C,EAAI,OACrB8C,EAAY,IAAI9C,EAAI,OACpB+C,EAAU/C,EAAI,gBAAiB,KAAK,QAAS,GAAM,EAAG,EAAG,CAAE,EAC7D0B,EAAS,EACTD,EAAQ,EAMZzB,EAAI,oBAAqB,KAAK,QAAS8C,EAAWD,CAAW,EAC7DnB,EAASmB,EAAW,UAAU,EAEzB,KAAK,WAET7C,EAAI,oBAAqB,KAAK,SAAU8C,EAAWD,CAAW,EAC9DnB,GAAUmB,EAAW,UAAU,GAE3B,KAAK,YAET7C,EAAI,oBAAqB,KAAK,UAAW8C,EAAWD,CAAW,EAC/DnB,GAAUmB,EAAW,UAAU,GAE3BE,IAEJ/C,EAAI,oBAAqB+C,EAASD,EAAW,CAAE,EAC/C9C,EAAI,iBAAkB+C,CAAQ,GAI/BtB,EAAQqB,EAAU,UAAU,EAI5BpB,EAAS,KAAK,IAAKA,EAAQ,GAAI,EAC/BD,EAAQ,KAAK,GAAG,MAAQ,KAAK,IAAKA,EAAO,GAAI,EAGxC,KAAK,QAAU,IAEnB,KAAK,IAAI,SAAU,GAAMC,CAAO,EAChC,KAAK,IAAI,SAAU,GAAMD,CAAM,GAE3B,KAAK,QAAU,IAEnB,KAAK,IAAI,UAAW,GAAMA,CAAM,EAChC,KAAK,IAAI,UAAW,GAAMC,CAAO,GAI7B,KAAK,GAAG,KAAOD,IAEnB,KAAK,GAAG,IAAMA,EAAQ,EAExB,EAGA,UAAW,UACX,CACC,GAAM,KAAK,UAKX,KAAIzB,EAAM,KAAK,IACfM,EAAMN,EAAI,sBAAuB,KAAK,SAAU,EAChDgD,EAAS,KAAK,EACdvB,EAAQ,KAAK,GAAG,MAChBwB,EAAcD,EAAO,UAAW,KAAK,QAAU,CAAE,EACjDE,EAAaF,EAAO,UAAW,KAAK,QAAU,CAAE,EAChD1B,EAAY0B,EAAO,UAAW,KAAK,QAAU,EAAIA,EAAO,UAAW,KAAK,OAAQ,EAAI,CAAE,EACtFG,EAAY,GAAK,KAAK,OAAQ7B,EAAY,EAAG0B,EAAO,SAAU1B,CAAU,EAAI,CAAE,EAC9E8B,EAGKJ,EAAO,SAAU,CAAK,EAAI,EAE9BI,EAAM,UAAaH,EAAc,KAAO,EAAI,GAAKA,EAAc,IAAO,KAAQC,EAAa,GAAK,IAAM,IAAOA,EAAa,KAAQD,EAAc,GAAK,KAAO,MAI5JG,EAAM,UAAYH,EAAc,YAAcC,EAI/ClD,EAAI,uBAAwB,KAAK,UAAW,EAAG,CAAE,EACjDA,EAAI,uBAAwBM,EAAK,MAAOmB,EAAQ,CAAE,EAAE,KAAM,GAAI,CAAE,EAGhEzB,EAAI,uBAAwB,KAAK,UAAW,EAAG,CAAE,EACjDA,EAAI,uBAAwBM,EAAK,IAAM6C,EAAU,MAAO,EAAG1B,EAAQ2B,EAAI,OAAS,CAAE,CAAE,EAGpFpD,EAAI,uBAAwB,KAAK,UAAWyB,EAAQ2B,EAAI,OAAS,EAAG,CAAE,EACtEpD,EAAI,uBAAwBM,EAAK8C,CAAI,EACtC,CAED,IC1qCA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAqBA,IAAIC,EAAM,IAEVD,GAAO,QAAQ,YAAc,UAC7B,CACC,IAAIE,EAAIC,EACRC,EAAS,KAAK,EACdC,EAAU,KAAK,QACfC,EACAC,EACAC,EACAC,EACAC,EAGAC,EAAU,IAAIV,EAAI,eAAgB,KAAM,KAAK,EAAG,EAGhD,SAASW,EAAuBC,EAAeJ,EAC/C,CACC,QAAUK,EAAI,EAAGA,EAAI,EAAGA,IAEvBL,EAAc,MAAOI,EAAgB,MAAS,CAAE,EAChDA,IAAkB,CAEpB,CAOA,OACA,CA6CC,GA3CAV,EAASD,EAAK,KAAK,GACnBK,EAAOH,EAAO,SAAUF,GAAK,EAGxBK,IAAS,KAEbE,EAAgB,GAChBF,EAAOH,EAAO,SAAUF,GAAK,EAAI,KAGxBK,EAAO,IAGXA,EAAO,IAEXE,EAAgB,GAETF,EAAO,KAEbA,GAAQ,MAOTE,EAAgB,EAAGF,EAAO,KAAS,CAAE,EAEhCE,EAAc,CAAC,EAAI,IAEvBF,GAAQ,OAQVE,EAAgB,CAAEF,EAAO,GAAO,EAAI,EAAGA,EAAO,GAAO,EAAI,CAAE,EAC3DA,GAAQ,IAIJ,CAACF,EAAQE,CAAI,EAEjB,WAAK,IAAK,GAAKI,CAAQ,EACvB,KAAK,KAAO,EACN,IAAI,MAAO,mBAAqBJ,EAAO,UAAYJ,CAAO,EAsBjE,IAlBAK,EAAeH,EAAQE,CAAI,EAAE,UAGxBE,IAAkB,KAEtBA,EAAgB,CAAC,EACjBG,EAAuBR,EAAO,SAASF,GAAI,EAAGO,CAAc,GAGvDF,IAAS,KAAOA,IAAS,MAE7BK,EAAuBR,EAAO,SAASF,GAAI,EAAGO,CAAc,GAK9DC,EAAW,CAAC,EACZJ,EAAO,EACCA,EAAOG,EAAc,QAGvBA,EAAcH,CAAI,IAAM,IAE5BI,EAAS,KAAM,IAAIT,EAAI,QAAS,KAAMG,EAAO,UAAUF,CAAE,CAAE,CAAE,EAC7DA,GAAM,GAIFO,EAAcH,CAAI,IAAM,GAE5BI,EAAS,KAAM,IAAIT,EAAI,QAAS,KAAMG,EAAO,SAASF,GAAI,CAAE,CAAE,EAI1DO,EAAcH,GAAM,IAAM,GAE9BI,EAAS,KAAM,IAAIT,EAAI,SAAU,KAAMG,EAAO,SAASF,GAAI,CAAE,CAAE,EA0BjE,GArBKM,EAAa,QAEjBE,EAAS,KAAM,IAAIT,EAAI,SAAU,KAAMG,EAAO,SAASF,GAAI,CAAE,CAAE,EAK3DM,EAAa,WAEjBF,EAAOF,EAAO,SAAUF,GAAK,EAC7BQ,EAAS,KAAM,CACdJ,EAAO,IACPA,EAAO,GAENA,EAAO,IAELA,GAAQ,EAAIF,EAAO,SAAUF,GAAK,IAAO,IAAM,EACnD,CAAE,GAIEM,EAAa,QAOjB,IAJAE,EAAS,KAAMR,CAAG,EAIVA,EAAK,KAAK,MAEjBI,EAAOF,EAAO,SAAUF,CAAG,EAC3BA,GAAM,EAGD,EAAAI,EAAO,OAAZ,CAgCF,GAxBA,KAAK,GAAKJ,EAGVS,EAAQ,IAAI,KAAM,IAAIN,EAAQE,CAAI,EAAG,KAAMI,EAASJ,EAAMJ,EAAQD,EAAIQ,CAAS,CAAE,EAGjFJ,EAAO,EAkBFE,EAAa,SAAW,CAACF,EAE7B,KAEF,CAEA,OAAOK,CACR,IC5NA,IAAAI,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cA2BA,IAAIC,EAAQ,IACZC,GAAO,IAEPC,GAAkB,CACjB,UAAW,IAAM,IACjB,SAAU,IAAO,GAClB,EAEAC,GAAM,CAEL,KAAM,UACN,CAEC,KAAK,IAAM,CAAC,EAGZ,KAAK,KAAO,KAAK,KAClB,EAEA,QAAS,SAAUC,EAAWC,EAC9B,CAEC,GAAK,CAACA,EAAQ,IAEb,MAAM,IAAI,MAAO,gCAAiC,EAEnD,KAAK,IAAMA,EAAQ,IACnB,KAAK,KAAOD,EACZ,KAAK,QAAUJ,EAAM,OAAQ,CAAC,EAAGE,GAAiBG,CAAQ,CAC3D,EAEA,MAAO,UACP,CACC,IAAIC,EAAM,KAAK,IACfC,EACA,GACA,CAIC,GAFAA,EAAON,GAAK,SAAU,KAAK,IAAK,EAChC,OAAO,KAAK,KACP,CAACM,GAAQA,EAAK,SAAW,OAE7B,MAAM,IAAI,MAAO,2BAA4B,EAE9C,GAAK,CAAE,EAAG,EAAG,EAAG,CAAE,EAAE,QAASA,EAAK,OAAQ,EAAI,EAE7C,MAAM,IAAI,MAAO,kCAAoCA,EAAK,OAAQ,EAInE,KAAK,EAAIP,EAAM,WAAYO,EAAK,IAAK,EAGrC,KAAK,UAAY,KAAK,EAAE,UAAW,EAAK,EACxC,KAAK,IAAMP,EAAM,WAAY,KAAK,EAAG,EAAG,KAAK,SAAU,EACvD,KAAK,QAAU,KAAK,EAAE,cAAe,EAAG,KAAK,SAAU,EAGvD,IAAIQ,EAAY,GACZC,EAAI,EACR,KAAQA,EAAI,IAEXD,IAAe,KAAK,QAAQC,CAAC,EAAI,GAAO,IAAM,IAAO,KAAK,QAAQA,GAAG,EAAE,SAAU,EAAG,EAErF,KAAK,UAAYD,EAGjB,IAAIE,EACEC,EAAS,KAAK,QAAQ,OAC5B,GAAKA,GAEJ,GAAK,KAAK,QAAQ,kBAEjBA,EAAO,eAAgBH,EAAW,IAAK,UAE9B,KAAK,QAAQ,eAEtB,GACA,CACC,IAAMI,EAAWD,EAAO,cAAeH,CAAU,EAC5CI,IAEJ,KAAK,eAAgBA,CAAS,EAC9BF,EAAe,EAEjB,OACOG,EACP,CACC,KAAK,IAAI,oCAAsCA,CAAE,EACjDF,EAAO,eAAgBH,EAAW,IAAK,CACxC,EAKIE,IAEL,KAAK,QAAQ,EACb,KAAK,IAAI,GAEJ,KAAK,OAEV,KAAK,UAAY,IAAIJ,EAAI,UACnB,KAAK,kBAMV,KAAK,UAAU,WAAY,KAAK,iBAAkB,EAJlDA,EAAI,WAAY,KAAK,SAAU,GAOjCA,EAAI,OAAO,CACZ,OACQ,EACR,CACCA,EAAI,YAAa,CAAE,EACnB,QAAQ,IAAK,CAAE,CAChB,CACD,EAEA,OAAQ,SAAUQ,EAClB,CACC,IAAIR,EAAM,KAAK,IACfS,EAAY,KAAK,UACjBC,EACAC,EAEA,GACA,CACCD,EAAaD,EAAU,UAAW,CAAE,EAG/BC,IAAe,IAEnB,KAAK,kBAAmBD,EAAU,UAAW,CAAE,CAAE,EACjDE,EAAM,GAEFD,IAAe,IAEnB,KAAK,kBAAmBD,EAAU,UAAW,CAAE,EAAGA,EAAU,UAAW,CAAE,CAAE,EAC3EE,EAAM,GAIFD,IAAe,GAEnB,KAAK,mBAAmB,EAIpBA,IAAe,6BAEnBC,EAAM,KAAK,sBAAuBH,CAAU,GAG7C,KAAK,kBAAoB,KACpBG,GAEJ,KAAK,IAAI,EAIJ,KAAK,OAEV,KAAK,UAAY,IAAIX,EAAI,UACnB,KAAK,kBAMV,KAAK,UAAU,WAAY,KAAK,iBAAkB,EAJlDA,EAAI,WAAY,KAAK,SAAU,GAOjCA,EAAI,OAAO,CACZ,OACQY,EACR,CACCZ,EAAI,YAAaY,CAAE,EACnB,QAAQ,IAAKA,CAAE,CAChB,CACD,EAEA,cAAe,UACf,CACC,OAAO,KAAK,SACb,EAGA,IAAK,UACL,CACC,IAAIC,EACJC,EAIA,IADA,KAAK,KAAO,EACJ,CAAC,KAAK,MAEbD,EAAK,KAAK,GACJ,KAAK,IAAIA,CAAE,GAEhB,KAAK,QAAQ,EAEdC,EAAS,KAAK,IAAID,CAAE,EAAG,IAAK,EAGtB,MAAOC,CAAO,GAEnB,KAAK,IAAKA,CAAO,CAGpB,EAGA,QAAS,UACT,CACC,IAAIC,EAAU,KAAK,YAAY,EAG/B,KAAK,IAAIA,EAAQ,EAAE,EAAI,IAAI,SAAU,IAAK,GAAKA,CAAQ,EAElDA,EAAQ,GAAK,KAAK,WAEtB,KAAK,IAAK,6CAA+CA,EAAQ,EAAG,CAEtE,CAED,EAEAC,GAAKtB,EAAM,MAAM,SAAUA,EAAM,OAChCG,GACA,KACA,KACA,KACA,IACD,CAAE,EAEFJ,GAAO,QAAUuB,KCzQjB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,IAAA,cAWA,IAAMC,GAAc,CACnB,UAAW,KAAO,CAAC,EACpB,EAEMC,EAAN,KACA,CACC,aACA,CACC,KAAK,UAAY,CAChB,QAAW,CAAC,EACZ,OAAU,CAAC,EACX,OAAU,CAAC,CACZ,EACA,KAAK,aAAe,GACrB,CAEA,KAAKC,EACL,CACC,KAAK,GAAKA,EAAQ,EACnB,CAEA,gBACA,CACC,MAAO,CAAC,KAAK,GAAG,iBACjB,CAEA,kBAAmBC,EAAMC,EACzB,CACC,OAAO,KAAK,UAAUD,CAAI,EAAEC,CAAG,CAChC,CAEA,eAAgBD,EAAME,EAAKC,EAC3B,CACC,GAAKA,EACL,CACC,GAAKD,EAAI,WAAaC,EAErB,MAAM,IAAI,MAAO,kDAAmD,EAEhE,KAAK,cAAgBA,IAEzB,KAAK,aAAeA,EAAc,EAEpC,KAEA,CACC,GAAKD,EAAI,SAER,MAAM,IAAI,MAAO,8CAA+C,EAEjEA,EAAI,SAAW,KAAK,cACrB,CACA,KAAK,UAAUF,CAAI,EAAEE,EAAI,QAAQ,EAAIA,CACtC,CAEA,iBAAkBF,EAAME,EACxB,CACC,GAAK,CAACA,EAAI,UAAY,KAAK,UAAUF,CAAI,EAAEE,EAAI,QAAQ,GAAK,KAE3D,MAAM,IAAI,MAAO,4CAA6C,EAE/D,OAAO,KAAK,UAAUF,CAAI,EAAEE,EAAI,QAAQ,EACxCA,EAAI,SAAW,IAChB,CAEA,mBAAoBE,EACpB,CACC,MAAO,CACN,IAAKP,GACL,IAAKO,EAAI,MAAM,EACf,IAAKA,EAAI,MACV,CACD,CAEA,gBACA,CAAC,CAED,cACA,CAAC,CAED,OAAQC,EACR,CACC,KAAK,GAAKA,CACX,CAEA,gBACA,CAAC,CACF,EAGK,OAAOT,GAAW,UAAYA,EAAO,UAEzCA,EAAO,QAAUE,GAEb,OAAO,OAAW,MAEtB,OAAO,QAAU,IAAIA,KCzGtB,IAAAQ,GAAgB,UAChBC,GAAwB",
- "names": ["require_utils", "__commonJSMin", "exports", "module", "extend", "old", "add", "name", "Class", "props", "newClass", "MemoryView", "buffer", "byteOffset", "byteLength", "start", "length", "Uint8toUint16Array", "data", "index", "text", "U2S16", "value", "S2U16", "array", "l", "result", "require_file", "__commonJSMin", "exports", "module", "utils", "MemoryView", "IFF", "data", "view", "i", "length", "chunk_length", "buffer_len", "index", "out", "chunk", "Blorb", "Quetzal", "type", "chunk_data", "ifhd", "identify", "buffer", "blorb", "format", "version", "require_ast", "__commonJSMin", "exports", "module", "utils", "Class", "U2S", "Operand", "engine", "value", "Variable", "variable", "Opcode", "context", "code", "pc", "next", "operands", "joiner", "Stopper", "Pauser", "PauserStorer", "BrancherLogic", "ops", "i", "op", "Brancher", "result", "prev", "brancher", "offset", "Context", "BrancherStorer", "Storer", "data", "Caller", "CallerStorer", "RoutineContext", "opcode_builder", "func", "flags", "require_opcodes", "__commonJSMin", "exports", "module", "AST", "Variable", "Opcode", "Stopper", "Pauser", "PauserStorer", "Brancher", "BrancherStorer", "Storer", "Caller", "CallerStorer", "opcode_builder", "simple_func", "a", "stack_var", "alwaysbranch", "not", "Indirect", "operands", "op0", "op0isVar", "Incdec", "variable", "varnum", "operator", "V3SaveRestore", "V45Restore", "V45Save", "version", "b", "value", "array", "index", "cookie", "obj", "addr", "text", "lines", "wind", "win", "row", "col", "stylebyte", "arg", "font", "require_runtime", "__commonJSMin", "exports", "module", "file", "utils", "extend", "U2S", "S2U", "clone", "obj", "recurse", "newobj", "prop", "littleEndian", "testUint8Array", "testUint16Array", "fix_stack_endianness", "view", "start", "end", "auto", "number", "places", "addr", "storer", "next", "args", "locals_count", "stack", "i", "frameptr", "object", "attribute", "first", "second", "size", "ram", "allowcorrupt", "snapshot", "Glk", "RockBox", "save", "zscii", "length", "from", "target", "word", "value", "property", "prev", "memory", "version3", "this_property_byte", "this_property", "last_property", "properties", "id", "len", "varnum", "change", "offset", "variable", "dest", "child", "parent", "message", "range", "seed", "older_sibling", "younger_sibling", "temp_younger", "autorestoring", "version", "addr_multipler", "flags2", "property_defaults", "extension", "pc", "data", "quetzal", "qmem", "temp", "j", "state", "result", "autosaving", "zeroes", "abyte", "compressed_mem", "frames", "str", "buffer", "iftrue", "key", "form", "memoryfunc", "newparent", "bigsis", "lilsis", "objects", "bitmap", "flag", "havevalue", "require_text", "__commonJSMin", "exports", "module", "self", "memory", "alphabet_addr", "unicode_addr", "unicode_len", "make_alphabet", "data", "alphabets", "i", "make_unicode", "table", "reverse", "addr", "length", "start_addr", "temp", "buffer", "zchar", "alphabet", "result", "resulttexts", "usesabbr", "unicodecount", "zscii", "zchars", "word_len", "achar", "texts", "l", "charr", "j", "text", "notable", "array", "addr_start", "dict", "entry_len", "endaddr", "seperators_len", "abbrnum", "bufaddr", "parseaddr", "dictionary", "flag", "ram", "bufferlength", "letter", "separators", "word", "words", "max_words", "dictword", "wordcount", "require_io", "__commonJSMin", "exports", "module", "utils", "U2S", "ZSCII_keyCodes", "codes", "style_mappings", "convert_true_colour", "colour", "from5to8", "zcolours", "value", "io", "row", "col", "window", "data", "Glk", "array", "charcode", "stream4", "code", "fref", "str", "len", "terminator", "ram", "options", "streams", "command", "response", "stream", "styles_to_reset", "i", "addr", "called_from_print", "text", "type", "val", "proptable", "result", "zscii", "width", "height", "skip", "storer", "parse", "time", "routine", "initiallen", "buffer", "input_stream1_len", "one", "foreground", "background", "font", "returnval", "stylebyte", "fg", "bg", "lines", "oldheight", "height_box", "width_box", "tempwin", "memory", "hours_score", "mins_turns", "shortname", "rhs", "require_disassembler", "__commonJSMin", "exports", "module", "AST", "pc", "offset", "memory", "opcodes", "temp", "code", "opcode_class", "operands_type", "operands", "context", "get_var_operand_types", "operands_byte", "i", "require_zvm", "__commonJSMin", "exports", "module", "utils", "file", "default_options", "api", "storydata", "options", "Glk", "data", "signature", "i", "autorestored", "Dialog", "snapshot", "ex", "resumearg", "glk_event", "event_type", "run", "e", "pc", "result", "context", "VM", "require_dispatch", "__commonJSMin", "exports", "module", "dummyArgInt", "ZVMDispatch", "options", "clas", "val", "obj", "usedisprock", "arr", "vm", "import_zvm", "import_dispatch"]
-}
diff --git a/IFComp/t/entry_processing.t b/IFComp/t/entry_processing.t
index 251d518d..09f9d6d5 100644
--- a/IFComp/t/entry_processing.t
+++ b/IFComp/t/entry_processing.t
@@ -25,7 +25,7 @@ sub file_contains ($$$) {
note('Testing naked Z-Code upload...');
ok( file_exists( 100, 'index.html' ), 'Generated an index.html file.', );
-ok( file_contains( 100, 'index.html', qr{/static/interpreter/main.js} ),
+ok( file_contains( 100, 'index.html', qr{/static/interpreter/web.js} ),
'Links to local parchment.',
);
is( $schema->resultset('Entry')->find(100)->platform,
@@ -40,7 +40,7 @@ is( $schema->resultset('Entry')->find(100)->play_file,
note('Testing naked Glulx upload...');
ok( file_exists( 101, 'index.html' ), 'Generated an index.html file.', );
-ok( file_contains( 101, 'index.html', qr{/static/interpreter/main.js} ),
+ok( file_contains( 101, 'index.html', qr{/static/interpreter/web.js} ),
'Links to local interpreter.',
);
is( $schema->resultset('Entry')->find(101)->platform,
@@ -177,7 +177,7 @@ is( $schema->resultset('Entry')->find(109)->platform,
'tads', 'Platform is correct. (tads)',
);
ok( file_exists( 109, 'index.html' ), 'Generated an index.html file.', );
-ok( file_contains( 109, 'index.html', qr{/static/interpreter/main.js} ),
+ok( file_contains( 109, 'index.html', qr{/static/interpreter/web.js} ),
'Links to local interpreter.',
);
ok( $schema->resultset('Entry')->find(109)->supports_transcripts,
diff --git a/LICENSE.md b/LICENSE.md
index 0ff96532..c8560fca 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -8,19 +8,13 @@ Except where otherwise noted, the software found in this repository is copyright
This software repository contains, in whole or in significant part, the following open-source projects, used under license. (See below for the full text of their respective licenses.)
-* [Emglken](https://github.com/curiousdannii/emglken) by Dannii Willis, via the MIT License
+* [Bocfel](https://cspiegel.github.io/bocfel/index.html) by Chris Spiegel, via the MIT License
-* [GlkOte](https://github.com/erkyrath/glkote) by Andrew Plotkin, via the MIT License
+* [Glulxe](https://github.com/erkyrath/glulxe) by Andrew Plotkin, via the MIT License
-* [Parchment](https://github.com/curiousdannii/parchment/tree/ifcomp) by Dannii Willis, via the MIT License
+* [Parchment](https://github.com/curiousdannii/parchment) by Dannii Willis, via the MIT License
-* [Quixe](https://github.com/erkyrath/quixe) by Andrew Plotkin, via the MIT License
-
-* [RemGlk](https://github.com/erkyrath/remglk) by Andrew Plotkin, via the MIT License
-
-* [TADS](https://github.com/cspiegel/terps/tree/master/tads) by Michael J. Roberts, via the GNU GPL v2.0 License
-
-* [ZVM](https://github.com/curiousdannii/ifvms.js) by Dannii Willis, via the MIT License
+* [TADS](https://github.com/tads-intfic/tads-runner) by Michael J. Roberts, via the GNU GPL v2.0 License
## Licenses used by included software