From 98651c2a141793360c9690c82061b1a2028f48f2 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 7 Dec 2025 17:44:37 +0100 Subject: [PATCH] webchat: bundle assets with rolldown --- .../Clawdis/Resources/WebChat/bootstrap.js | 122 + .../Clawdis/Resources/WebChat/index.html | 128 +- .../Resources/WebChat/lmstudio-sdk-stub.js | 19 + .../Clawdis/Resources/WebChat/pi-ai-stub.js | 55 +- .../Resources/WebChat/rolldown.config.mjs | 42 + .../Resources/WebChat/webchat.bundle.js | 195542 +++++++++++++++ .../Resources/WebChat/whatwg-fetch-stub.js | 2 + .../macos/Sources/Clawdis/WebChatServer.swift | 1 + package.json | 8 +- scripts/restart-mac.sh | 3 + 10 files changed, 195780 insertions(+), 142 deletions(-) create mode 100644 apps/macos/Sources/Clawdis/Resources/WebChat/bootstrap.js create mode 100644 apps/macos/Sources/Clawdis/Resources/WebChat/lmstudio-sdk-stub.js create mode 100644 apps/macos/Sources/Clawdis/Resources/WebChat/rolldown.config.mjs create mode 100644 apps/macos/Sources/Clawdis/Resources/WebChat/webchat.bundle.js create mode 100644 apps/macos/Sources/Clawdis/Resources/WebChat/whatwg-fetch-stub.js diff --git a/apps/macos/Sources/Clawdis/Resources/WebChat/bootstrap.js b/apps/macos/Sources/Clawdis/Resources/WebChat/bootstrap.js new file mode 100644 index 000000000..dad3765db --- /dev/null +++ b/apps/macos/Sources/Clawdis/Resources/WebChat/bootstrap.js @@ -0,0 +1,122 @@ +// Bundled entry point for the macOS WKWebView web chat. +// This replaces the inline module script in index.html so we can ship a single JS bundle. + +/* global window, document, crypto */ + +if (!globalThis.process) { + // Some vendor modules peek at process.env; provide a minimal stub for browser. + globalThis.process = { env: {} }; +} + +const logStatus = (msg) => { + try { + console.log(msg); + if (typeof window.__clawdisLog === "function") { + window.__clawdisLog(msg); + } + const el = document.getElementById("app"); + if (el && !el.dataset.booted) el.textContent = msg; + } catch { + // Ignore logging failures—never block bootstrap. + } +}; + +const getBootstrap = () => { + const bootstrap = window.__clawdisBootstrap || {}; + return { + initialMessages: Array.isArray(bootstrap.initialMessages) ? bootstrap.initialMessages : [], + sessionKey: typeof bootstrap.sessionKey === "string" ? bootstrap.sessionKey : "main", + }; +}; + +class NativeTransport { + constructor(sessionKey) { + this.sessionKey = sessionKey; + } + + async *run(messages, userMessage, cfg, signal) { + const result = await window.__clawdisSend({ + type: "chat", + payload: { text: userMessage.content?.[0]?.text ?? "", sessionKey: this.sessionKey }, + }); + const usage = { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 }, + }; + const assistant = { + role: "assistant", + content: [{ type: "text", text: result.text ?? "" }], + api: cfg.model.api, + provider: cfg.model.provider, + model: cfg.model.id, + usage, + stopReason: "stop", + timestamp: Date.now(), + }; + yield { type: "turn_start" }; + yield { type: "message_start", message: assistant }; + yield { type: "message_end", message: assistant }; + yield { type: "turn_end" }; + yield { type: "agent_end" }; + } +} + +const startChat = async () => { + const { initialMessages, sessionKey } = getBootstrap(); + + logStatus("boot: starting imports"); + const { Agent } = await import("./agent/agent.js"); + const { ChatPanel } = await import("./ChatPanel.js"); + const { AppStorage, setAppStorage } = await import("./storage/app-storage.js"); + const { getModel } = await import("@mariozechner/pi-ai"); + logStatus("boot: modules loaded"); + + const storage = new AppStorage(); + setAppStorage(storage); + + const agent = new Agent({ + initialState: { + systemPrompt: "You are Clawd (primary session).", + model: getModel("anthropic", "claude-opus-4-5"), + thinkingLevel: "off", + messages: initialMessages, + }, + transport: new NativeTransport(sessionKey), + }); + + const origPrompt = agent.prompt.bind(agent); + agent.prompt = async (input, attachments) => { + const userMessage = { + role: "user", + content: [{ type: "text", text: input }], + attachments: attachments?.length ? attachments : undefined, + timestamp: Date.now(), + }; + agent.appendMessage(userMessage); + return origPrompt(input, attachments); + }; + + const panel = new ChatPanel(); + panel.style.height = "100%"; + panel.style.display = "block"; + await panel.setAgent(agent); + + const mount = document.getElementById("app"); + if (!mount) throw new Error("#app container missing"); + mount.dataset.booted = "1"; + mount.textContent = ""; + mount.appendChild(panel); + logStatus("boot: ready"); +}; + +startChat().catch((err) => { + const msg = err?.stack || err?.message || String(err); + logStatus(`boot failed: ${msg}`); + document.body.style.color = "#e06666"; + document.body.style.fontFamily = "monospace"; + document.body.style.padding = "16px"; + document.body.innerText = "Web chat failed to load:\\n" + msg; +}); diff --git a/apps/macos/Sources/Clawdis/Resources/WebChat/index.html b/apps/macos/Sources/Clawdis/Resources/WebChat/index.html index a8fcdf731..203147304 100644 --- a/apps/macos/Sources/Clawdis/Resources/WebChat/index.html +++ b/apps/macos/Sources/Clawdis/Resources/WebChat/index.html @@ -5,31 +5,6 @@ Clawd Web Chat - "]; + opts.cellXfs.forEach(function(xf, id) { + var payload = []; + payload.push(writextag("NumberFormat", null, { "ss:Format": escapexml(table_fmt[xf.numFmtId]) })); + var o$10 = { "ss:ID": "s" + (21 + id) }; + styles$1.push(writextag("Style", payload.join(""), o$10)); + }); + return writextag("Styles", styles$1.join("")); +} +function write_name_xlml(n$9) { + return writextag("NamedRange", null, { + "ss:Name": n$9.Name.slice(0, 6) == "_xlnm." ? n$9.Name.slice(6) : n$9.Name, + "ss:RefersTo": "=" + a1_to_rc(n$9.Ref, { + r: 0, + c: 0 + }) + }); +} +function write_names_xlml(wb) { + if (!((wb || {}).Workbook || {}).Names) return ""; + var names = wb.Workbook.Names; + var out = []; + for (var i$7 = 0; i$7 < names.length; ++i$7) { + var n$9 = names[i$7]; + if (n$9.Sheet != null) continue; + if (n$9.Name.match(/^_xlfn\./)) continue; + out.push(write_name_xlml(n$9)); + } + return writextag("Names", out.join("")); +} +function write_ws_xlml_names(ws, opts, idx, wb) { + if (!ws) return ""; + if (!((wb || {}).Workbook || {}).Names) return ""; + var names = wb.Workbook.Names; + var out = []; + for (var i$7 = 0; i$7 < names.length; ++i$7) { + var n$9 = names[i$7]; + if (n$9.Sheet != idx) continue; + if (n$9.Name.match(/^_xlfn\./)) continue; + out.push(write_name_xlml(n$9)); + } + return out.join(""); +} +function write_ws_xlml_wsopts(ws, opts, idx, wb) { + if (!ws) return ""; + var o$10 = []; + if (ws["!margins"]) { + o$10.push(""); + if (ws["!margins"].header) o$10.push(writextag("Header", null, { "x:Margin": ws["!margins"].header })); + if (ws["!margins"].footer) o$10.push(writextag("Footer", null, { "x:Margin": ws["!margins"].footer })); + o$10.push(writextag("PageMargins", null, { + "x:Bottom": ws["!margins"].bottom || "0.75", + "x:Left": ws["!margins"].left || "0.7", + "x:Right": ws["!margins"].right || "0.7", + "x:Top": ws["!margins"].top || "0.75" + })); + o$10.push(""); + } + if (wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) { + if (wb.Workbook.Sheets[idx].Hidden) o$10.push(writextag("Visible", wb.Workbook.Sheets[idx].Hidden == 1 ? "SheetHidden" : "SheetVeryHidden", {})); + else { + for (var i$7 = 0; i$7 < idx; ++i$7) if (wb.Workbook.Sheets[i$7] && !wb.Workbook.Sheets[i$7].Hidden) break; + if (i$7 == idx) o$10.push(""); + } + } + if (((((wb || {}).Workbook || {}).Views || [])[0] || {}).RTL) o$10.push(""); + if (ws["!protect"]) { + o$10.push(writetag("ProtectContents", "True")); + if (ws["!protect"].objects) o$10.push(writetag("ProtectObjects", "True")); + if (ws["!protect"].scenarios) o$10.push(writetag("ProtectScenarios", "True")); + if (ws["!protect"].selectLockedCells != null && !ws["!protect"].selectLockedCells) o$10.push(writetag("EnableSelection", "NoSelection")); + else if (ws["!protect"].selectUnlockedCells != null && !ws["!protect"].selectUnlockedCells) o$10.push(writetag("EnableSelection", "UnlockedCells")); + [ + ["formatCells", "AllowFormatCells"], + ["formatColumns", "AllowSizeCols"], + ["formatRows", "AllowSizeRows"], + ["insertColumns", "AllowInsertCols"], + ["insertRows", "AllowInsertRows"], + ["insertHyperlinks", "AllowInsertHyperlinks"], + ["deleteColumns", "AllowDeleteCols"], + ["deleteRows", "AllowDeleteRows"], + ["sort", "AllowSort"], + ["autoFilter", "AllowFilter"], + ["pivotTables", "AllowUsePivotTables"] + ].forEach(function(x$2) { + if (ws["!protect"][x$2[0]]) o$10.push("<" + x$2[1] + "/>"); + }); + } + if (o$10.length == 0) return ""; + return writextag("WorksheetOptions", o$10.join(""), { xmlns: XLMLNS.x }); +} +function write_ws_xlml_comment(comments) { + return comments.map(function(c$7) { + var t$6 = xlml_unfixstr(c$7.t || ""); + var d$5 = writextag("ss:Data", t$6, { "xmlns": "http://www.w3.org/TR/REC-html40" }); + var p$3 = {}; + if (c$7.a) p$3["ss:Author"] = c$7.a; + if (!comments.hidden) p$3["ss:ShowAlways"] = "1"; + return writextag("Comment", d$5, p$3); + }).join(""); +} +function write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr) { + if (!cell || cell.v == undefined && cell.f == undefined) return ""; + var attr = {}; + if (cell.f) attr["ss:Formula"] = "=" + escapexml(a1_to_rc(cell.f, addr)); + if (cell.F && cell.F.slice(0, ref.length) == ref) { + var end = decode_cell(cell.F.slice(ref.length + 1)); + attr["ss:ArrayRange"] = "RC:R" + (end.r == addr.r ? "" : "[" + (end.r - addr.r) + "]") + "C" + (end.c == addr.c ? "" : "[" + (end.c - addr.c) + "]"); + } + if (cell.l && cell.l.Target) { + attr["ss:HRef"] = escapexml(cell.l.Target); + if (cell.l.Tooltip) attr["x:HRefScreenTip"] = escapexml(cell.l.Tooltip); + } + if (ws["!merges"]) { + var marr = ws["!merges"]; + for (var mi = 0; mi != marr.length; ++mi) { + if (marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue; + if (marr[mi].e.c > marr[mi].s.c) attr["ss:MergeAcross"] = marr[mi].e.c - marr[mi].s.c; + if (marr[mi].e.r > marr[mi].s.r) attr["ss:MergeDown"] = marr[mi].e.r - marr[mi].s.r; + } + } + var t$6 = "", p$3 = ""; + switch (cell.t) { + case "z": + if (!opts.sheetStubs) return ""; + break; + case "n": + { + if (!isFinite(cell.v)) { + t$6 = "Error"; + p$3 = BErr[isNaN(cell.v) ? 36 : 7]; + } else { + t$6 = "Number"; + p$3 = String(cell.v); + } + } + break; + case "b": + t$6 = "Boolean"; + p$3 = cell.v ? "1" : "0"; + break; + case "e": + t$6 = "Error"; + p$3 = BErr[cell.v]; + break; + case "d": + t$6 = "DateTime"; + p$3 = new Date(cell.v).toISOString(); + if (cell.z == null) cell.z = cell.z || table_fmt[14]; + break; + case "s": + t$6 = "String"; + p$3 = escapexlml(cell.v || ""); + break; + } + var os = get_cell_style(opts.cellXfs, cell, opts); + attr["ss:StyleID"] = "s" + (21 + os); + attr["ss:Index"] = addr.c + 1; + var _v = cell.v != null ? p$3 : ""; + var m$3 = cell.t == "z" ? "" : "" + _v + ""; + if ((cell.c || []).length > 0) m$3 += write_ws_xlml_comment(cell.c); + return writextag("Cell", m$3, attr); +} +function write_ws_xlml_row(R$1, row) { + var o$10 = ""; +} +function write_ws_xlml_table(ws, opts, idx, wb) { + if (!ws["!ref"]) return ""; + var range = safe_decode_range(ws["!ref"]); + var marr = ws["!merges"] || [], mi = 0; + var o$10 = []; + if (ws["!cols"]) ws["!cols"].forEach(function(n$9, i$7) { + process_col(n$9); + var w$2 = !!n$9.width; + var p$3 = col_obj_w(i$7, n$9); + var k$2 = { "ss:Index": i$7 + 1 }; + if (w$2) k$2["ss:Width"] = width2px(p$3.width); + if (n$9.hidden) k$2["ss:Hidden"] = "1"; + o$10.push(writextag("Column", null, k$2)); + }); + var dense = ws["!data"] != null; + var addr = { + r: 0, + c: 0 + }; + for (var R$1 = range.s.r; R$1 <= range.e.r; ++R$1) { + var row = [write_ws_xlml_row(R$1, (ws["!rows"] || [])[R$1])]; + addr.r = R$1; + for (var C$2 = range.s.c; C$2 <= range.e.c; ++C$2) { + addr.c = C$2; + var skip = false; + for (mi = 0; mi != marr.length; ++mi) { + if (marr[mi].s.c > C$2) continue; + if (marr[mi].s.r > R$1) continue; + if (marr[mi].e.c < C$2) continue; + if (marr[mi].e.r < R$1) continue; + if (marr[mi].s.c != C$2 || marr[mi].s.r != R$1) skip = true; + break; + } + if (skip) continue; + var ref = encode_col(C$2) + encode_row(R$1), cell = dense ? (ws["!data"][R$1] || [])[C$2] : ws[ref]; + row.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr)); + } + row.push(""); + if (row.length > 2) o$10.push(row.join("")); + } + return o$10.join(""); +} +function write_ws_xlml(idx, opts, wb) { + var o$10 = []; + var s$5 = wb.SheetNames[idx]; + var ws = wb.Sheets[s$5]; + var t$6 = ws ? write_ws_xlml_names(ws, opts, idx, wb) : ""; + if (t$6.length > 0) o$10.push("" + t$6 + ""); + t$6 = ws ? write_ws_xlml_table(ws, opts, idx, wb) : ""; + if (t$6.length > 0) o$10.push("" + t$6 + "
"); + o$10.push(write_ws_xlml_wsopts(ws, opts, idx, wb)); + if (ws && ws["!autofilter"]) o$10.push(""); + return o$10.join(""); +} +function write_xlml(wb, opts) { + if (!opts) opts = {}; + if (!wb.SSF) wb.SSF = dup(table_fmt); + if (wb.SSF) { + make_ssf(); + SSF_load_table(wb.SSF); + opts.revssf = evert_num(wb.SSF); + opts.revssf[wb.SSF[65535]] = 0; + opts.ssf = wb.SSF; + opts.cellXfs = []; + get_cell_style(opts.cellXfs, {}, { revssf: { "General": 0 } }); + } + var d$5 = []; + d$5.push(write_props_xlml(wb, opts)); + d$5.push(write_wb_xlml(wb, opts)); + d$5.push(""); + d$5.push(write_names_xlml(wb, opts)); + for (var i$7 = 0; i$7 < wb.SheetNames.length; ++i$7) d$5.push(writextag("Worksheet", write_ws_xlml(i$7, opts, wb), { "ss:Name": escapexml(wb.SheetNames[i$7]) })); + d$5[2] = write_sty_xlml(wb, opts); + return XML_HEADER + writextag("Workbook", d$5.join(""), { + "xmlns": XLMLNS.ss, + "xmlns:o": XLMLNS.o, + "xmlns:x": XLMLNS.x, + "xmlns:ss": XLMLNS.ss, + "xmlns:dt": XLMLNS.dt, + "xmlns:html": XLMLNS.html + }); +} +function parse_compobj(obj) { + var v$3 = {}; + var o$10 = obj.content; + o$10.l = 28; + v$3.AnsiUserType = o$10.read_shift(0, "lpstr-ansi"); + v$3.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o$10); + if (o$10.length - o$10.l <= 4) return v$3; + var m$3 = o$10.read_shift(4); + if (m$3 == 0 || m$3 > 40) return v$3; + o$10.l -= 4; + v$3.Reserved1 = o$10.read_shift(0, "lpstr-ansi"); + if (o$10.length - o$10.l <= 4) return v$3; + m$3 = o$10.read_shift(4); + if (m$3 !== 1907505652) return v$3; + v$3.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o$10); + m$3 = o$10.read_shift(4); + if (m$3 == 0 || m$3 > 40) return v$3; + o$10.l -= 4; + v$3.Reserved2 = o$10.read_shift(0, "lpwstr"); +} +function slurp(RecordType, R$1, blob, length, opts) { + var l$3 = length; + var bufs = []; + var d$5 = blob.slice(blob.l, blob.l + l$3); + if (opts && opts.enc && opts.enc.insitu && d$5.length > 0) switch (RecordType) { + case 9: + case 521: + case 1033: + case 2057: + case 47: + case 405: + case 225: + case 406: + case 312: + case 404: + case 10: break; + case 133: break; + default: opts.enc.insitu(d$5); + } + bufs.push(d$5); + blob.l += l$3; + var nextrt = __readUInt16LE(blob, blob.l), next = XLSRecordEnum[nextrt]; + var start = 0; + while (next != null && CONTINUE_RT.indexOf(nextrt) > -1) { + l$3 = __readUInt16LE(blob, blob.l + 2); + start = blob.l + 4; + if (nextrt == 2066) start += 4; + else if (nextrt == 2165 || nextrt == 2175) { + start += 12; + } + d$5 = blob.slice(start, blob.l + 4 + l$3); + bufs.push(d$5); + blob.l += 4 + l$3; + next = XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]; + } + var b$3 = bconcat(bufs); + prep_blob(b$3, 0); + var ll = 0; + b$3.lens = []; + for (var j$2 = 0; j$2 < bufs.length; ++j$2) { + b$3.lens.push(ll); + ll += bufs[j$2].length; + } + if (b$3.length < length) throw "XLS Record 0x" + RecordType.toString(16) + " Truncated: " + b$3.length + " < " + length; + return R$1.f(b$3, b$3.length, opts); +} +function safe_format_xf(p$3, opts, date1904) { + if (p$3.t === "z") return; + if (!p$3.XF) return; + var fmtid = 0; + try { + fmtid = p$3.z || p$3.XF.numFmtId || 0; + if (opts.cellNF && p$3.z == null) p$3.z = table_fmt[fmtid]; + } catch (e$10) { + if (opts.WTF) throw e$10; + } + if (!opts || opts.cellText !== false) try { + if (p$3.t === "e") { + p$3.w = p$3.w || BErr[p$3.v]; + } else if (fmtid === 0 || fmtid == "General") { + if (p$3.t === "n") { + if ((p$3.v | 0) === p$3.v) p$3.w = p$3.v.toString(10); + else p$3.w = SSF_general_num(p$3.v); + } else p$3.w = SSF_general(p$3.v); + } else p$3.w = SSF_format(fmtid, p$3.v, { + date1904: !!date1904, + dateNF: opts && opts.dateNF + }); + } catch (e$10) { + if (opts.WTF) throw e$10; + } + if (opts.cellDates && fmtid && p$3.t == "n" && fmt_is_date(table_fmt[fmtid] || String(fmtid))) { + var _d = SSF_parse_date_code(p$3.v + (date1904 ? 1462 : 0)); + if (_d) { + p$3.t = "d"; + p$3.v = new Date(Date.UTC(_d.y, _d.m - 1, _d.d, _d.H, _d.M, _d.S, _d.u)); + } + } +} +function make_cell(val$1, ixfe, t$6) { + return { + v: val$1, + ixfe, + t: t$6 + }; +} +function parse_workbook(blob, options) { + var wb = { opts: {} }; + var Sheets = {}; + if (DENSE != null && options.dense == null) options.dense = DENSE; + var out = {}; + if (options.dense) out["!data"] = []; + var Directory = {}; + var range = {}; + var last_formula = null; + var sst = []; + var cur_sheet = ""; + var Preamble = {}; + var lastcell, last_cell = "", cc, cmnt, rngC, rngR; + var sharedf = {}; + var arrayf = []; + var temp_val; + var country; + var XFs = []; + var palette = []; + var Workbook = { + Sheets: [], + WBProps: { date1904: false }, + Views: [{}] + }, wsprops = {}; + var biff4w = false; + var get_rgb = function getrgb(icv) { + if (icv < 8) return XLSIcv[icv]; + if (icv < 64) return palette[icv - 8] || XLSIcv[icv]; + return XLSIcv[icv]; + }; + var process_cell_style = function pcs(line, options$1) { + var xfd = line.XF.data; + if (!xfd || !xfd.patternType || !options$1 || !options$1.cellStyles) return; + line.s = {}; + line.s.patternType = xfd.patternType; + var t$6; + if (t$6 = rgb2Hex(get_rgb(xfd.icvFore))) { + line.s.fgColor = { rgb: t$6 }; + } + if (t$6 = rgb2Hex(get_rgb(xfd.icvBack))) { + line.s.bgColor = { rgb: t$6 }; + } + }; + var addcell = function addcell$1(cell, line, options$1) { + if (!biff4w && file_depth > 1) return; + if (options$1.sheetRows && cell.r >= options$1.sheetRows) return; + if (options$1.cellStyles && line.XF && line.XF.data) process_cell_style(line, options$1); + delete line.ixfe; + delete line.XF; + lastcell = cell; + last_cell = encode_cell(cell); + if (!range || !range.s || !range.e) range = { + s: { + r: 0, + c: 0 + }, + e: { + r: 0, + c: 0 + } + }; + if (cell.r < range.s.r) range.s.r = cell.r; + if (cell.c < range.s.c) range.s.c = cell.c; + if (cell.r + 1 > range.e.r) range.e.r = cell.r + 1; + if (cell.c + 1 > range.e.c) range.e.c = cell.c + 1; + if (options$1.cellFormula && line.f) { + for (var afi = 0; afi < arrayf.length; ++afi) { + if (arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue; + if (arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue; + line.F = encode_range(arrayf[afi][0]); + if (arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f; + if (line.f) line.f = "" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts); + break; + } + } + { + if (options$1.dense) { + if (!out["!data"][cell.r]) out["!data"][cell.r] = []; + out["!data"][cell.r][cell.c] = line; + } else out[last_cell] = line; + } + }; + var opts = { + enc: false, + sbcch: 0, + snames: [], + sharedf, + arrayf, + rrtabid: [], + lastuser: "", + biff: 8, + codepage: 0, + winlocked: 0, + cellStyles: !!options && !!options.cellStyles, + WTF: !!options && !!options.wtf + }; + if (options.password) opts.password = options.password; + var themes; + var merges = []; + var objects = []; + var colinfo = [], rowinfo = []; + var seencol = false; + var supbooks = []; + supbooks.SheetNames = opts.snames; + supbooks.sharedf = opts.sharedf; + supbooks.arrayf = opts.arrayf; + supbooks.names = []; + supbooks.XTI = []; + var last_RT = 0; + var file_depth = 0; + var BIFF2Fmt = 0, BIFF2FmtTable = []; + var FilterDatabases = []; + var last_lbl; + opts.codepage = 1200; + set_cp(1200); + var seen_codepage = false; + while (blob.l < blob.length - 1) { + var s$5 = blob.l; + var RecordType = blob.read_shift(2); + if (RecordType === 0 && last_RT === 10) break; + var length = blob.l === blob.length ? 0 : blob.read_shift(2); + var R$1 = XLSRecordEnum[RecordType]; + if (file_depth == 0 && [ + 9, + 521, + 1033, + 2057 + ].indexOf(RecordType) == -1) break; + if (R$1 && R$1.f) { + if (options.bookSheets) { + if (last_RT === 133 && RecordType !== 133) break; + } + last_RT = RecordType; + if (R$1.r === 2 || R$1.r == 12) { + var rt = blob.read_shift(2); + length -= 2; + if (!opts.enc && rt !== RecordType && ((rt & 255) << 8 | rt >> 8) !== RecordType) throw new Error("rt mismatch: " + rt + "!=" + RecordType); + if (R$1.r == 12) { + blob.l += 10; + length -= 10; + } + } + var val$1 = {}; + if (RecordType === 10) val$1 = R$1.f(blob, length, opts); + else val$1 = slurp(RecordType, R$1, blob, length, opts); + if (file_depth == 0 && [ + 9, + 521, + 1033, + 2057 + ].indexOf(last_RT) === -1) continue; + switch (RecordType) { + case 34: + wb.opts.Date1904 = Workbook.WBProps.date1904 = val$1; + break; + case 134: + wb.opts.WriteProtect = true; + break; + case 47: + if (!opts.enc) blob.l = 0; + opts.enc = val$1; + if (!options.password) throw new Error("File is password-protected"); + if (val$1.valid == null) throw new Error("Encryption scheme unsupported"); + if (!val$1.valid) throw new Error("Password is incorrect"); + break; + case 92: + opts.lastuser = val$1; + break; + case 66: + var cpval = Number(val$1); + switch (cpval) { + case 21010: + cpval = 1200; + break; + case 32768: + cpval = 1e4; + break; + case 32769: + cpval = 1252; + break; + } + set_cp(opts.codepage = cpval); + seen_codepage = true; + break; + case 317: + opts.rrtabid = val$1; + break; + case 25: + opts.winlocked = val$1; + break; + case 439: + wb.opts["RefreshAll"] = val$1; + break; + case 12: + wb.opts["CalcCount"] = val$1; + break; + case 16: + wb.opts["CalcDelta"] = val$1; + break; + case 17: + wb.opts["CalcIter"] = val$1; + break; + case 13: + wb.opts["CalcMode"] = val$1; + break; + case 14: + wb.opts["CalcPrecision"] = val$1; + break; + case 95: + wb.opts["CalcSaveRecalc"] = val$1; + break; + case 15: + opts.CalcRefMode = val$1; + break; + case 2211: + wb.opts.FullCalc = val$1; + break; + case 129: + if (val$1.fDialog) out["!type"] = "dialog"; + if (!val$1.fBelow) (out["!outline"] || (out["!outline"] = {})).above = true; + if (!val$1.fRight) (out["!outline"] || (out["!outline"] = {})).left = true; + break; + case 67: + case 579: + case 1091: + case 224: + XFs.push(val$1); + break; + case 430: + supbooks.push([val$1]); + supbooks[supbooks.length - 1].XTI = []; + break; + case 35: + case 547: + supbooks[supbooks.length - 1].push(val$1); + break; + case 24: + case 536: + last_lbl = { + Name: val$1.Name, + Ref: stringify_formula(val$1.rgce, range, null, supbooks, opts) + }; + if (val$1.itab > 0) last_lbl.Sheet = val$1.itab - 1; + supbooks.names.push(last_lbl); + if (!supbooks[0]) { + supbooks[0] = []; + supbooks[0].XTI = []; + } + supbooks[supbooks.length - 1].push(val$1); + if (val$1.Name == "_xlnm._FilterDatabase" && val$1.itab > 0) { + if (val$1.rgce && val$1.rgce[0] && val$1.rgce[0][0] && val$1.rgce[0][0][0] == "PtgArea3d") FilterDatabases[val$1.itab - 1] = { ref: encode_range(val$1.rgce[0][0][1][2]) }; + } + break; + case 22: + opts.ExternCount = val$1; + break; + case 23: + if (supbooks.length == 0) { + supbooks[0] = []; + supbooks[0].XTI = []; + } + supbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val$1); + supbooks.XTI = supbooks.XTI.concat(val$1); + break; + case 2196: + if (opts.biff < 8) break; + if (last_lbl != null) last_lbl.Comment = val$1[1]; + break; + case 18: + out["!protect"] = val$1; + break; + case 19: + if (val$1 !== 0 && opts.WTF) console.error("Password verifier: " + val$1); + break; + case 133: + { + Directory[opts.biff == 4 ? opts.snames.length : val$1.pos] = val$1; + opts.snames.push(val$1.name); + } + break; + case 10: + { + if (--file_depth ? !biff4w : biff4w) break; + if (range.e) { + if (range.e.r > 0 && range.e.c > 0) { + range.e.r--; + range.e.c--; + out["!ref"] = encode_range(range); + if (options.sheetRows && options.sheetRows <= range.e.r) { + var tmpri = range.e.r; + range.e.r = options.sheetRows - 1; + out["!fullref"] = out["!ref"]; + out["!ref"] = encode_range(range); + range.e.r = tmpri; + } + range.e.r++; + range.e.c++; + } + if (merges.length > 0) out["!merges"] = merges; + if (objects.length > 0) out["!objects"] = objects; + if (colinfo.length > 0) out["!cols"] = colinfo; + if (rowinfo.length > 0) out["!rows"] = rowinfo; + Workbook.Sheets.push(wsprops); + } + if (cur_sheet === "") Preamble = out; + else Sheets[cur_sheet] = out; + out = {}; + if (options.dense) out["!data"] = []; + } + break; + case 9: + case 521: + case 1033: + case 2057: + { + if (opts.biff === 8) opts.biff = { + 9: 2, + 521: 3, + 1033: 4 + }[RecordType] || { + 512: 2, + 768: 3, + 1024: 4, + 1280: 5, + 1536: 8, + 2: 2, + 7: 2 + }[val$1.BIFFVer] || 8; + opts.biffguess = val$1.BIFFVer == 0; + if (val$1.BIFFVer == 0 && val$1.dt == 4096) { + opts.biff = 5; + seen_codepage = true; + set_cp(opts.codepage = 28591); + } + if (opts.biff == 4 && val$1.dt & 256) biff4w = true; + if (opts.biff == 8 && val$1.BIFFVer == 0 && val$1.dt == 16) opts.biff = 2; + if (file_depth++ && !biff4w) break; + out = {}; + if (options.dense) out["!data"] = []; + if (opts.biff < 8 && !seen_codepage) { + seen_codepage = true; + set_cp(opts.codepage = options.codepage || 1252); + } + if (opts.biff == 4 && biff4w) { + cur_sheet = (Directory[opts.snames.indexOf(cur_sheet) + 1] || { name: "" }).name; + } else if (opts.biff < 5 || val$1.BIFFVer == 0 && val$1.dt == 4096) { + if (cur_sheet === "") cur_sheet = "Sheet1"; + range = { + s: { + r: 0, + c: 0 + }, + e: { + r: 0, + c: 0 + } + }; + var fakebs8 = { + pos: blob.l - length, + name: cur_sheet + }; + Directory[fakebs8.pos] = fakebs8; + opts.snames.push(cur_sheet); + } else cur_sheet = (Directory[s$5] || { name: "" }).name; + if (val$1.dt == 32) out["!type"] = "chart"; + if (val$1.dt == 64) out["!type"] = "macro"; + merges = []; + objects = []; + opts.arrayf = arrayf = []; + colinfo = []; + rowinfo = []; + seencol = false; + wsprops = { + Hidden: (Directory[s$5] || { hs: 0 }).hs, + name: cur_sheet + }; + } + break; + case 515: + case 3: + case 2: + { + if (out["!type"] == "chart") { + if (options.dense ? (out["!data"][val$1.r] || [])[val$1.c] : out[encode_col(val$1.c) + encode_row(val$1.r)]) ++val$1.c; + } + temp_val = { + ixfe: val$1.ixfe, + XF: XFs[val$1.ixfe] || {}, + v: val$1.val, + t: "n" + }; + if (BIFF2Fmt > 0) temp_val.z = temp_val.XF && temp_val.XF.numFmtId && BIFF2FmtTable[temp_val.XF.numFmtId] || BIFF2FmtTable[temp_val.ixfe >> 8 & 63]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({ + c: val$1.c, + r: val$1.r + }, temp_val, options); + } + break; + case 5: + case 517: + { + temp_val = { + ixfe: val$1.ixfe, + XF: XFs[val$1.ixfe], + v: val$1.val, + t: val$1.t + }; + if (BIFF2Fmt > 0) temp_val.z = temp_val.XF && temp_val.XF.numFmtId && BIFF2FmtTable[temp_val.XF.numFmtId] || BIFF2FmtTable[temp_val.ixfe >> 8 & 63]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({ + c: val$1.c, + r: val$1.r + }, temp_val, options); + } + break; + case 638: + { + temp_val = { + ixfe: val$1.ixfe, + XF: XFs[val$1.ixfe], + v: val$1.rknum, + t: "n" + }; + if (BIFF2Fmt > 0) temp_val.z = temp_val.XF && temp_val.XF.numFmtId && BIFF2FmtTable[temp_val.XF.numFmtId] || BIFF2FmtTable[temp_val.ixfe >> 8 & 63]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({ + c: val$1.c, + r: val$1.r + }, temp_val, options); + } + break; + case 189: + { + for (var j$2 = val$1.c; j$2 <= val$1.C; ++j$2) { + var ixfe = val$1.rkrec[j$2 - val$1.c][0]; + temp_val = { + ixfe, + XF: XFs[ixfe], + v: val$1.rkrec[j$2 - val$1.c][1], + t: "n" + }; + if (BIFF2Fmt > 0) temp_val.z = temp_val.XF && temp_val.XF.numFmtId && BIFF2FmtTable[temp_val.XF.numFmtId] || BIFF2FmtTable[temp_val.ixfe >> 8 & 63]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({ + c: j$2, + r: val$1.r + }, temp_val, options); + } + } + break; + case 6: + case 518: + case 1030: + { + if (val$1.val == "String") { + last_formula = val$1; + break; + } + temp_val = make_cell(val$1.val, val$1.cell.ixfe, val$1.tt); + temp_val.XF = XFs[temp_val.ixfe]; + if (options.cellFormula) { + var _f = val$1.formula; + if (_f && _f[0] && _f[0][0] && _f[0][0][0] == "PtgExp") { + var _fr = _f[0][0][1][0], _fc = _f[0][0][1][1]; + var _fe = encode_cell({ + r: _fr, + c: _fc + }); + if (sharedf[_fe]) temp_val.f = "" + stringify_formula(val$1.formula, range, val$1.cell, supbooks, opts); + else temp_val.F = ((options.dense ? (out["!data"][_fr] || [])[_fc] : out[_fe]) || {}).F; + } else temp_val.f = "" + stringify_formula(val$1.formula, range, val$1.cell, supbooks, opts); + } + if (BIFF2Fmt > 0) temp_val.z = temp_val.XF && temp_val.XF.numFmtId && BIFF2FmtTable[temp_val.XF.numFmtId] || BIFF2FmtTable[temp_val.ixfe >> 8 & 63]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell(val$1.cell, temp_val, options); + last_formula = val$1; + } + break; + case 7: + case 519: + { + if (last_formula) { + last_formula.val = val$1; + temp_val = make_cell(val$1, last_formula.cell.ixfe, "s"); + temp_val.XF = XFs[temp_val.ixfe]; + if (options.cellFormula) { + temp_val.f = "" + stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts); + } + if (BIFF2Fmt > 0) temp_val.z = temp_val.XF && temp_val.XF.numFmtId && BIFF2FmtTable[temp_val.XF.numFmtId] || BIFF2FmtTable[temp_val.ixfe >> 8 & 63]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell(last_formula.cell, temp_val, options); + last_formula = null; + } else throw new Error("String record expects Formula"); + } + break; + case 33: + case 545: + { + arrayf.push(val$1); + var _arraystart = encode_cell(val$1[0].s); + cc = options.dense ? (out["!data"][val$1[0].s.r] || [])[val$1[0].s.c] : out[_arraystart]; + if (options.cellFormula && cc) { + if (!last_formula) break; + if (!_arraystart || !cc) break; + cc.f = "" + stringify_formula(val$1[1], range, val$1[0], supbooks, opts); + cc.F = encode_range(val$1[0]); + } + } + break; + case 1212: + { + if (!options.cellFormula) break; + if (last_cell) { + if (!last_formula) break; + sharedf[encode_cell(last_formula.cell)] = val$1[0]; + cc = options.dense ? (out["!data"][last_formula.cell.r] || [])[last_formula.cell.c] : out[encode_cell(last_formula.cell)]; + (cc || {}).f = "" + stringify_formula(val$1[0], range, lastcell, supbooks, opts); + } + } + break; + case 253: + temp_val = make_cell(sst[val$1.isst].t, val$1.ixfe, "s"); + if (sst[val$1.isst].h) temp_val.h = sst[val$1.isst].h; + temp_val.XF = XFs[temp_val.ixfe]; + if (BIFF2Fmt > 0) temp_val.z = temp_val.XF && temp_val.XF.numFmtId && BIFF2FmtTable[temp_val.XF.numFmtId] || BIFF2FmtTable[temp_val.ixfe >> 8 & 63]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({ + c: val$1.c, + r: val$1.r + }, temp_val, options); + break; + case 513: + if (options.sheetStubs) { + temp_val = { + ixfe: val$1.ixfe, + XF: XFs[val$1.ixfe], + t: "z" + }; + if (BIFF2Fmt > 0) temp_val.z = temp_val.XF && temp_val.XF.numFmtId && BIFF2FmtTable[temp_val.XF.numFmtId] || BIFF2FmtTable[temp_val.ixfe >> 8 & 63]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({ + c: val$1.c, + r: val$1.r + }, temp_val, options); + } + break; + case 190: + if (options.sheetStubs) { + for (var _j = val$1.c; _j <= val$1.C; ++_j) { + var _ixfe = val$1.ixfe[_j - val$1.c]; + temp_val = { + ixfe: _ixfe, + XF: XFs[_ixfe], + t: "z" + }; + if (BIFF2Fmt > 0) temp_val.z = temp_val.XF && temp_val.XF.numFmtId && BIFF2FmtTable[temp_val.XF.numFmtId] || BIFF2FmtTable[temp_val.ixfe >> 8 & 63]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({ + c: _j, + r: val$1.r + }, temp_val, options); + } + } + break; + case 214: + case 516: + case 4: + temp_val = make_cell(val$1.val, val$1.ixfe, "s"); + temp_val.XF = XFs[temp_val.ixfe]; + if (BIFF2Fmt > 0) temp_val.z = temp_val.XF && temp_val.XF.numFmtId && BIFF2FmtTable[temp_val.XF.numFmtId] || BIFF2FmtTable[temp_val.ixfe >> 8 & 63]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({ + c: val$1.c, + r: val$1.r + }, temp_val, options); + break; + case 0: + case 512: + { + if (file_depth === 1) range = val$1; + } + break; + case 252: + { + sst = val$1; + } + break; + case 1054: + { + if (opts.biff >= 3 && opts.biff <= 4) { + BIFF2FmtTable[BIFF2Fmt++] = val$1[1]; + for (var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if (table_fmt[b4idx] == val$1[1]) break; + if (b4idx >= 163) SSF__load(val$1[1], BIFF2Fmt + 163); + } else SSF__load(val$1[1], val$1[0]); + } + break; + case 30: + { + BIFF2FmtTable[BIFF2Fmt++] = val$1; + for (var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if (table_fmt[b2idx] == val$1) break; + if (b2idx >= 163) SSF__load(val$1, BIFF2Fmt + 163); + } + break; + case 229: + merges = merges.concat(val$1); + break; + case 93: + objects[val$1.cmo[0]] = opts.lastobj = val$1; + break; + case 438: + opts.lastobj.TxO = val$1; + break; + case 127: + opts.lastobj.ImData = val$1; + break; + case 440: + { + for (rngR = val$1[0].s.r; rngR <= val$1[0].e.r; ++rngR) for (rngC = val$1[0].s.c; rngC <= val$1[0].e.c; ++rngC) { + cc = options.dense ? (out["!data"][rngR] || [])[rngC] : out[encode_cell({ + c: rngC, + r: rngR + })]; + if (cc) cc.l = val$1[1]; + } + } + break; + case 2048: + { + for (rngR = val$1[0].s.r; rngR <= val$1[0].e.r; ++rngR) for (rngC = val$1[0].s.c; rngC <= val$1[0].e.c; ++rngC) { + cc = options.dense ? (out["!data"][rngR] || [])[rngC] : out[encode_cell({ + c: rngC, + r: rngR + })]; + if (cc && cc.l) cc.l.Tooltip = val$1[1]; + } + } + break; + case 28: + { + cc = options.dense ? (out["!data"][val$1[0].r] || [])[val$1[0].c] : out[encode_cell(val$1[0])]; + if (!cc) { + if (options.dense) { + if (!out["!data"][val$1[0].r]) out["!data"][val$1[0].r] = []; + cc = out["!data"][val$1[0].r][val$1[0].c] = { t: "z" }; + } else { + cc = out[encode_cell(val$1[0])] = { t: "z" }; + } + range.e.r = Math.max(range.e.r, val$1[0].r); + range.s.r = Math.min(range.s.r, val$1[0].r); + range.e.c = Math.max(range.e.c, val$1[0].c); + range.s.c = Math.min(range.s.c, val$1[0].c); + } + if (!cc.c) cc.c = []; + if (opts.biff <= 5 && opts.biff >= 2) cmnt = { + a: "SheetJ5", + t: val$1[1] + }; + else { + var noteobj = objects[val$1[2]]; + cmnt = { + a: val$1[1], + t: noteobj.TxO.t + }; + if (val$1[3] != null && !(val$1[3] & 2)) cc.c.hidden = true; + } + cc.c.push(cmnt); + } + break; + case 2173: + update_xfext(XFs[val$1.ixfe], val$1.ext); + break; + case 125: + { + if (!opts.cellStyles) break; + while (val$1.e >= val$1.s) { + colinfo[val$1.e--] = { + width: val$1.w / 256, + level: val$1.level || 0, + hidden: !!(val$1.flags & 1) + }; + if (!seencol) { + seencol = true; + find_mdw_colw(val$1.w / 256); + } + process_col(colinfo[val$1.e + 1]); + } + } + break; + case 520: + { + var rowobj = {}; + if (val$1.level != null) { + rowinfo[val$1.r] = rowobj; + rowobj.level = val$1.level; + } + if (val$1.hidden) { + rowinfo[val$1.r] = rowobj; + rowobj.hidden = true; + } + if (val$1.hpt) { + rowinfo[val$1.r] = rowobj; + rowobj.hpt = val$1.hpt; + rowobj.hpx = pt2px(val$1.hpt); + } + } + break; + case 38: + case 39: + case 40: + case 41: + if (!out["!margins"]) default_margins(out["!margins"] = {}); + out["!margins"][{ + 38: "left", + 39: "right", + 40: "top", + 41: "bottom" + }[RecordType]] = val$1; + break; + case 161: + if (!out["!margins"]) default_margins(out["!margins"] = {}); + out["!margins"].header = val$1.header; + out["!margins"].footer = val$1.footer; + break; + case 574: + if (val$1.RTL) Workbook.Views[0].RTL = true; + break; + case 146: + palette = val$1; + break; + case 2198: + themes = val$1; + break; + case 140: + country = val$1; + break; + case 442: + { + if (!cur_sheet) Workbook.WBProps.CodeName = val$1 || "ThisWorkbook"; + else wsprops.CodeName = val$1 || wsprops.name; + } + break; + } + } else { + if (!R$1) console.error("Missing Info for XLS Record 0x" + RecordType.toString(16)); + blob.l += length; + } + } + wb.SheetNames = keys(Directory).sort(function(a$2, b$3) { + return Number(a$2) - Number(b$3); + }).map(function(x$2) { + return Directory[x$2].name; + }); + if (!options.bookSheets) wb.Sheets = Sheets; + if (!wb.SheetNames.length && Preamble["!ref"]) { + wb.SheetNames.push("Sheet1"); + if (wb.Sheets) wb.Sheets["Sheet1"] = Preamble; + } else wb.Preamble = Preamble; + if (wb.Sheets) FilterDatabases.forEach(function(r$10, i$7) { + wb.Sheets[wb.SheetNames[i$7]]["!autofilter"] = r$10; + }); + wb.Strings = sst; + wb.SSF = dup(table_fmt); + if (opts.enc) wb.Encryption = opts.enc; + if (themes) wb.Themes = themes; + wb.Metadata = {}; + if (country !== undefined) wb.Metadata.Country = country; + if (supbooks.names.length > 0) Workbook.Names = supbooks.names; + wb.Workbook = Workbook; + return wb; +} +function parse_xls_props(cfb, props, o$10) { + var DSI = CFB.find(cfb, "/!DocumentSummaryInformation"); + if (DSI && DSI.size > 0) try { + var DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI); + for (var d$5 in DocSummary) props[d$5] = DocSummary[d$5]; + } catch (e$10) { + if (o$10.WTF) throw e$10; + } + var SI = CFB.find(cfb, "/!SummaryInformation"); + if (SI && SI.size > 0) try { + var Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI); + for (var s$5 in Summary) if (props[s$5] == null) props[s$5] = Summary[s$5]; + } catch (e$10) { + if (o$10.WTF) throw e$10; + } + if (props.HeadingPairs && props.TitlesOfParts) { + load_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o$10); + delete props.HeadingPairs; + delete props.TitlesOfParts; + } +} +function write_xls_props(wb, cfb) { + var DSEntries = [], SEntries = [], CEntries = []; + var i$7 = 0, Keys; + var DocSummaryRE = evert_key(DocSummaryPIDDSI, "n"); + var SummaryRE = evert_key(SummaryPIDSI, "n"); + if (wb.Props) { + Keys = keys(wb.Props); + for (i$7 = 0; i$7 < Keys.length; ++i$7) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i$7]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i$7]) ? SEntries : CEntries).push([Keys[i$7], wb.Props[Keys[i$7]]]); + } + if (wb.Custprops) { + Keys = keys(wb.Custprops); + for (i$7 = 0; i$7 < Keys.length; ++i$7) if (!Object.prototype.hasOwnProperty.call(wb.Props || {}, Keys[i$7])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i$7]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i$7]) ? SEntries : CEntries).push([Keys[i$7], wb.Custprops[Keys[i$7]]]); + } + var CEntries2 = []; + for (i$7 = 0; i$7 < CEntries.length; ++i$7) { + if (XLSPSSkip.indexOf(CEntries[i$7][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i$7][0]) > -1) continue; + if (CEntries[i$7][1] == null) continue; + CEntries2.push(CEntries[i$7]); + } + if (SEntries.length) CFB.utils.cfb_add(cfb, "/SummaryInformation", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI)); + if (DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, "/DocumentSummaryInformation", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI)); +} +function parse_xlscfb(cfb, options) { + if (!options) options = {}; + fix_read_opts(options); + reset_cp(); + if (options.codepage) set_ansi(options.codepage); + var CompObj, WB; + if (cfb.FullPaths) { + if (CFB.find(cfb, "/encryption")) throw new Error("File is password-protected"); + CompObj = CFB.find(cfb, "!CompObj"); + WB = CFB.find(cfb, "/Workbook") || CFB.find(cfb, "/Book"); + } else { + switch (options.type) { + case "base64": + cfb = s2a(Base64_decode(cfb)); + break; + case "binary": + cfb = s2a(cfb); + break; + case "buffer": break; + case "array": + if (!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); + break; + } + prep_blob(cfb, 0); + WB = { content: cfb }; + } + var WorkbookP; + var _data; + if (CompObj) parse_compobj(CompObj); + if (options.bookProps && !options.bookSheets) WorkbookP = {}; + else { + var T$3 = has_buf ? "buffer" : "array"; + if (WB && WB.content) WorkbookP = parse_workbook(WB.content, options); + else if ((_data = CFB.find(cfb, "PerfectOffice_MAIN")) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T$3, options)); + else if ((_data = CFB.find(cfb, "NativeContent_MAIN")) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T$3, options)); + else if ((_data = CFB.find(cfb, "MN0")) && _data.content) throw new Error("Unsupported Works 4 for Mac file"); + else throw new Error("Cannot find Workbook stream"); + if (options.bookVBA && cfb.FullPaths && CFB.find(cfb, "/_VBA_PROJECT_CUR/VBA/dir")) WorkbookP.vbaraw = make_vba_xls(cfb); + } + var props = {}; + if (cfb.FullPaths) parse_xls_props(cfb, props, options); + WorkbookP.Props = WorkbookP.Custprops = props; + if (options.bookFiles) WorkbookP.cfb = cfb; + return WorkbookP; +} +function write_xlscfb(wb, opts) { + var o$10 = opts || {}; + var cfb = CFB.utils.cfb_new({ root: "R" }); + var wbpath = "/Workbook"; + switch (o$10.bookType || "xls") { + case "xls": o$10.bookType = "biff8"; + case "xla": if (!o$10.bookType) o$10.bookType = "xla"; + case "biff8": + wbpath = "/Workbook"; + o$10.biff = 8; + break; + case "biff5": + wbpath = "/Book"; + o$10.biff = 5; + break; + default: throw new Error("invalid type " + o$10.bookType + " for XLS CFB"); + } + CFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o$10)); + if (o$10.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb); + if (o$10.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, { type: typeof wb.vbaraw == "string" ? "binary" : "buffer" })); + return cfb; +} +function write_biff_rec(ba, type, payload, length) { + var t$6 = type; + if (isNaN(t$6)) return; + var len = length || (payload || []).length || 0; + var o$10 = ba.next(4); + o$10.write_shift(2, t$6); + o$10.write_shift(2, len); + if (len > 0 && is_buf(payload)) ba.push(payload); +} +function write_biff_continue(ba, type, payload, length) { + var len = length || (payload || []).length || 0; + if (len <= 8224) return write_biff_rec(ba, type, payload, len); + var t$6 = type; + if (isNaN(t$6)) return; + var parts = payload.parts || [], sidx = 0; + var i$7 = 0, w$2 = 0; + while (w$2 + (parts[sidx] || 8224) <= 8224) { + w$2 += parts[sidx] || 8224; + sidx++; + } + var o$10 = ba.next(4); + o$10.write_shift(2, t$6); + o$10.write_shift(2, w$2); + ba.push(payload.slice(i$7, i$7 + w$2)); + i$7 += w$2; + while (i$7 < len) { + o$10 = ba.next(4); + o$10.write_shift(2, 60); + w$2 = 0; + while (w$2 + (parts[sidx] || 8224) <= 8224) { + w$2 += parts[sidx] || 8224; + sidx++; + } + o$10.write_shift(2, w$2); + ba.push(payload.slice(i$7, i$7 + w$2)); + i$7 += w$2; + } +} +function write_BIFF2BERR(r$10, c$7, val$1, t$6) { + var out = new_buf(9); + write_BIFF2Cell(out, r$10, c$7); + write_Bes(val$1, t$6 || "b", out); + return out; +} +function write_BIFF2LABEL(r$10, c$7, val$1) { + var out = new_buf(8 + 2 * val$1.length); + write_BIFF2Cell(out, r$10, c$7); + out.write_shift(1, val$1.length); + out.write_shift(val$1.length, val$1, "sbcs"); + return out.l < out.length ? out.slice(0, out.l) : out; +} +function write_comments_biff2(ba, comments) { + comments.forEach(function(data) { + var text$2 = data[0].map(function(cc) { + return cc.t; + }).join(""); + if (text$2.length <= 2048) return write_biff_rec(ba, 28, write_NOTE_BIFF2(text$2, data[1], data[2])); + write_biff_rec(ba, 28, write_NOTE_BIFF2(text$2.slice(0, 2048), data[1], data[2], text$2.length)); + for (var i$7 = 2048; i$7 < text$2.length; i$7 += 2048) write_biff_rec(ba, 28, write_NOTE_BIFF2(text$2.slice(i$7, Math.min(i$7 + 2048, text$2.length)), -1, -1, Math.min(2048, text$2.length - i$7))); + }); +} +function write_ws_biff2_cell(ba, cell, R$1, C$2, opts, date1904) { + var ifmt = 0; + if (cell.z != null) { + ifmt = opts._BIFF2FmtTable.indexOf(cell.z); + if (ifmt == -1) { + opts._BIFF2FmtTable.push(cell.z); + ifmt = opts._BIFF2FmtTable.length - 1; + } + } + var ixfe = 0; + if (cell.z != null) { + for (; ixfe < opts.cellXfs.length; ++ixfe) if (opts.cellXfs[ixfe].numFmtId == ifmt) break; + if (ixfe == opts.cellXfs.length) opts.cellXfs.push({ numFmtId: ifmt }); + } + if (cell.v != null) switch (cell.t) { + case "d": + case "n": + var v$3 = cell.t == "d" ? datenum(parseDate(cell.v, date1904), date1904) : cell.v; + if (opts.biff == 2 && v$3 == (v$3 | 0) && v$3 >= 0 && v$3 < 65536) write_biff_rec(ba, 2, write_BIFF2INT(R$1, C$2, v$3, ixfe, ifmt)); + else if (isNaN(v$3)) write_biff_rec(ba, 5, write_BIFF2BERR(R$1, C$2, 36, "e")); + else if (!isFinite(v$3)) write_biff_rec(ba, 5, write_BIFF2BERR(R$1, C$2, 7, "e")); + else write_biff_rec(ba, 3, write_BIFF2NUM(R$1, C$2, v$3, ixfe, ifmt)); + return; + case "b": + case "e": + write_biff_rec(ba, 5, write_BIFF2BERR(R$1, C$2, cell.v, cell.t)); + return; + case "s": + case "str": + write_biff_rec(ba, 4, write_BIFF2LABEL(R$1, C$2, cell.v == null ? "" : String(cell.v).slice(0, 255))); + return; + } + write_biff_rec(ba, 1, write_BIFF2Cell(null, R$1, C$2)); +} +function write_ws_biff2(ba, ws, idx, opts, wb) { + var dense = ws["!data"] != null; + var range = safe_decode_range(ws["!ref"] || "A1"), rr = "", cols = []; + if (range.e.c > 255 || range.e.r > 16383) { + if (opts.WTF) throw new Error("Range " + (ws["!ref"] || "A1") + " exceeds format limit A1:IV16384"); + range.e.c = Math.min(range.e.c, 255); + range.e.r = Math.min(range.e.r, 16383); + } + var date1904 = (((wb || {}).Workbook || {}).WBProps || {}).date1904; + var row = [], comments = []; + for (var C$2 = range.s.c; C$2 <= range.e.c; ++C$2) cols[C$2] = encode_col(C$2); + for (var R$1 = range.s.r; R$1 <= range.e.r; ++R$1) { + if (dense) row = ws["!data"][R$1] || []; + rr = encode_row(R$1); + for (C$2 = range.s.c; C$2 <= range.e.c; ++C$2) { + var cell = dense ? row[C$2] : ws[cols[C$2] + rr]; + if (!cell) continue; + write_ws_biff2_cell(ba, cell, R$1, C$2, opts, date1904); + if (cell.c) comments.push([ + cell.c, + R$1, + C$2 + ]); + } + } + write_comments_biff2(ba, comments); +} +function write_biff2_buf(wb, opts) { + var o$10 = opts || {}; + var ba = buf_array(); + var idx = 0; + for (var i$7 = 0; i$7 < wb.SheetNames.length; ++i$7) if (wb.SheetNames[i$7] == o$10.sheet) idx = i$7; + if (idx == 0 && !!o$10.sheet && wb.SheetNames[0] != o$10.sheet) throw new Error("Sheet not found: " + o$10.sheet); + write_biff_rec(ba, o$10.biff == 4 ? 1033 : o$10.biff == 3 ? 521 : 9, write_BOF(wb, 16, o$10)); + if (((wb.Workbook || {}).WBProps || {}).date1904) write_biff_rec(ba, 34, writebool(true)); + o$10.cellXfs = [{ numFmtId: 0 }]; + o$10._BIFF2FmtTable = ["General"]; + o$10._Fonts = []; + var body = buf_array(); + write_ws_biff2(body, wb.Sheets[wb.SheetNames[idx]], idx, o$10, wb); + o$10._BIFF2FmtTable.forEach(function(f$4) { + if (o$10.biff <= 3) write_biff_rec(ba, 30, write_BIFF2Format(f$4)); + else write_biff_rec(ba, 1054, write_BIFF4Format(f$4)); + }); + o$10.cellXfs.forEach(function(xf) { + switch (o$10.biff) { + case 2: + write_biff_rec(ba, 67, write_BIFF2XF(xf)); + break; + case 3: + write_biff_rec(ba, 579, write_BIFF3XF(xf)); + break; + case 4: + write_biff_rec(ba, 1091, write_BIFF4XF(xf)); + break; + } + }); + delete o$10._BIFF2FmtTable; + delete o$10.cellXfs; + delete o$10._Fonts; + ba.push(body.end()); + write_biff_rec(ba, 10); + return ba.end(); +} +function write_MsoDrawingGroup() { + var buf = new_buf(82 + 8 * b8ocnts.length); + buf.write_shift(2, 15); + buf.write_shift(2, 61440); + buf.write_shift(4, 74 + 8 * b8ocnts.length); + { + buf.write_shift(2, 0); + buf.write_shift(2, 61446); + buf.write_shift(4, 16 + 8 * b8ocnts.length); + { + buf.write_shift(4, b8oid); + buf.write_shift(4, b8ocnts.length + 1); + var acc = 0; + for (var i$7 = 0; i$7 < b8ocnts.length; ++i$7) acc += b8ocnts[i$7] && b8ocnts[i$7][1] || 0; + buf.write_shift(4, acc); + buf.write_shift(4, b8ocnts.length); + } + b8ocnts.forEach(function(b8) { + buf.write_shift(4, b8[0]); + buf.write_shift(4, b8[2]); + }); + } + { + buf.write_shift(2, 51); + buf.write_shift(2, 61451); + buf.write_shift(4, 18); + buf.write_shift(2, 191); + buf.write_shift(4, 524296); + buf.write_shift(2, 385); + buf.write_shift(4, 134217793); + buf.write_shift(2, 448); + buf.write_shift(4, 134217792); + } + { + buf.write_shift(2, 64); + buf.write_shift(2, 61726); + buf.write_shift(4, 16); + buf.write_shift(4, 134217741); + buf.write_shift(4, 134217740); + buf.write_shift(4, 134217751); + buf.write_shift(4, 268435703); + } + return buf; +} +function write_comments_biff8(ba, comments) { + var notes = [], sz = 0, pl = buf_array(), baseid = b8oid; + var _oasc; + comments.forEach(function(c$7, ci) { + var author = ""; + var text$2 = c$7[0].map(function(t$6) { + if (t$6.a && !author) author = t$6.a; + return t$6.t; + }).join(""); + ++b8oid; + { + var oasc = new_buf(150); + oasc.write_shift(2, 15); + oasc.write_shift(2, 61444); + oasc.write_shift(4, 150); + { + oasc.write_shift(2, 3234); + oasc.write_shift(2, 61450); + oasc.write_shift(4, 8); + oasc.write_shift(4, b8oid); + oasc.write_shift(4, 2560); + } + { + oasc.write_shift(2, 227); + oasc.write_shift(2, 61451); + oasc.write_shift(4, 84); + oasc.write_shift(2, 128); + oasc.write_shift(4, 0); + oasc.write_shift(2, 139); + oasc.write_shift(4, 2); + oasc.write_shift(2, 191); + oasc.write_shift(4, 524296); + oasc.write_shift(2, 344); + oasc.l += 4; + oasc.write_shift(2, 385); + oasc.write_shift(4, 134217808); + oasc.write_shift(2, 387); + oasc.write_shift(4, 134217808); + oasc.write_shift(2, 389); + oasc.write_shift(4, 268435700); + oasc.write_shift(2, 447); + oasc.write_shift(4, 1048592); + oasc.write_shift(2, 448); + oasc.write_shift(4, 134217809); + oasc.write_shift(2, 451); + oasc.write_shift(4, 268435700); + oasc.write_shift(2, 513); + oasc.write_shift(4, 134217809); + oasc.write_shift(2, 515); + oasc.write_shift(4, 268435700); + oasc.write_shift(2, 575); + oasc.write_shift(4, 196609); + oasc.write_shift(2, 959); + oasc.write_shift(4, 131072 | (c$7[0].hidden ? 2 : 0)); + } + { + oasc.l += 2; + oasc.write_shift(2, 61456); + oasc.write_shift(4, 18); + oasc.write_shift(2, 3); + oasc.write_shift(2, c$7[2] + 2); + oasc.l += 2; + oasc.write_shift(2, c$7[1] + 1); + oasc.l += 2; + oasc.write_shift(2, c$7[2] + 4); + oasc.l += 2; + oasc.write_shift(2, c$7[1] + 5); + oasc.l += 2; + } + { + oasc.l += 2; + oasc.write_shift(2, 61457); + oasc.l += 4; + } + oasc.l = 150; + if (ci == 0) _oasc = oasc; + else write_biff_rec(pl, 236, oasc); + } + sz += 150; + { + var obj = new_buf(52); + obj.write_shift(2, 21); + obj.write_shift(2, 18); + obj.write_shift(2, 25); + obj.write_shift(2, b8oid); + obj.write_shift(2, 0); + obj.l = 22; + obj.write_shift(2, 13); + obj.write_shift(2, 22); + obj.write_shift(4, 1651663474); + obj.write_shift(4, 2503426821); + obj.write_shift(4, 2150634280); + obj.write_shift(4, 1768515844 + b8oid * 256); + obj.write_shift(2, 0); + obj.write_shift(4, 0); + obj.l += 4; + write_biff_rec(pl, 93, obj); + } + { + var oact = new_buf(8); + oact.l += 2; + oact.write_shift(2, 61453); + oact.l += 4; + write_biff_rec(pl, 236, oact); + } + sz += 8; + { + var txo = new_buf(18); + txo.write_shift(2, 18); + txo.l += 8; + txo.write_shift(2, text$2.length); + txo.write_shift(2, 16); + txo.l += 4; + write_biff_rec(pl, 438, txo); + { + var cont = new_buf(1 + text$2.length); + cont.write_shift(1, 0); + cont.write_shift(text$2.length, text$2, "sbcs"); + write_biff_rec(pl, 60, cont); + } + { + var conf = new_buf(16); + conf.l += 8; + conf.write_shift(2, text$2.length); + conf.l += 6; + write_biff_rec(pl, 60, conf); + } + } + { + var notesh = new_buf(12 + author.length); + notesh.write_shift(2, c$7[1]); + notesh.write_shift(2, c$7[2]); + notesh.write_shift(2, 0 | (c$7[0].hidden ? 0 : 2)); + notesh.write_shift(2, b8oid); + notesh.write_shift(2, author.length); + notesh.write_shift(1, 0); + notesh.write_shift(author.length, author, "sbcs"); + notesh.l++; + notes.push(notesh); + } + }); + { + var hdr = new_buf(80); + hdr.write_shift(2, 15); + hdr.write_shift(2, 61442); + hdr.write_shift(4, sz + hdr.length - 8); + { + hdr.write_shift(2, 16); + hdr.write_shift(2, 61448); + hdr.write_shift(4, 8); + hdr.write_shift(4, comments.length + 1); + hdr.write_shift(4, b8oid); + } + { + hdr.write_shift(2, 15); + hdr.write_shift(2, 61443); + hdr.write_shift(4, sz + 48); + { + hdr.write_shift(2, 15); + hdr.write_shift(2, 61444); + hdr.write_shift(4, 40); + { + hdr.write_shift(2, 1); + hdr.write_shift(2, 61449); + hdr.write_shift(4, 16); + hdr.l += 16; + } + { + hdr.write_shift(2, 2); + hdr.write_shift(2, 61450); + hdr.write_shift(4, 8); + hdr.write_shift(4, baseid); + hdr.write_shift(4, 5); + } + } + } + write_biff_rec(ba, 236, _oasc ? bconcat([hdr, _oasc]) : hdr); + } + ba.push(pl.end()); + notes.forEach(function(n$9) { + write_biff_rec(ba, 28, n$9); + }); + b8ocnts.push([ + baseid, + comments.length + 1, + b8oid + ]); + ++b8oid; +} +function write_FONTS_biff8(ba, data, opts) { + write_biff_rec(ba, 49, write_Font({ + sz: 12, + color: { theme: 1 }, + name: "Arial", + family: 2, + scheme: "minor" + }, opts)); +} +function write_FMTS_biff8(ba, NF, opts) { + if (!NF) return; + [ + [5, 8], + [23, 26], + [41, 44], + [50, 392] + ].forEach(function(r$10) { + for (var i$7 = r$10[0]; i$7 <= r$10[1]; ++i$7) if (NF[i$7] != null) write_biff_rec(ba, 1054, write_Format(i$7, NF[i$7], opts)); + }); +} +function write_FEAT(ba, ws) { + var o$10 = new_buf(19); + o$10.write_shift(4, 2151); + o$10.write_shift(4, 0); + o$10.write_shift(4, 0); + o$10.write_shift(2, 3); + o$10.write_shift(1, 1); + o$10.write_shift(4, 0); + write_biff_rec(ba, 2151, o$10); + o$10 = new_buf(39); + o$10.write_shift(4, 2152); + o$10.write_shift(4, 0); + o$10.write_shift(4, 0); + o$10.write_shift(2, 3); + o$10.write_shift(1, 0); + o$10.write_shift(4, 0); + o$10.write_shift(2, 1); + o$10.write_shift(4, 4); + o$10.write_shift(2, 0); + write_Ref8U(safe_decode_range(ws["!ref"] || "A1"), o$10); + o$10.write_shift(4, 4); + write_biff_rec(ba, 2152, o$10); +} +function write_CELLXFS_biff8(ba, opts) { + for (var i$7 = 0; i$7 < 16; ++i$7) write_biff_rec(ba, 224, write_XF({ + numFmtId: 0, + style: true + }, 0, opts)); + opts.cellXfs.forEach(function(c$7) { + write_biff_rec(ba, 224, write_XF(c$7, 0, opts)); + }); +} +function write_ws_biff8_hlinks(ba, ws) { + for (var R$1 = 0; R$1 < ws["!links"].length; ++R$1) { + var HL = ws["!links"][R$1]; + write_biff_rec(ba, 440, write_HLink(HL)); + if (HL[1].Tooltip) write_biff_rec(ba, 2048, write_HLinkTooltip(HL)); + } + delete ws["!links"]; +} +function write_ws_cols_biff8(ba, cols) { + if (!cols) return; + var cnt = 0; + cols.forEach(function(col, idx) { + if (++cnt <= 256 && col) { + write_biff_rec(ba, 125, write_ColInfo(col_obj_w(idx, col), idx)); + } + }); +} +function write_ws_biff8_cell(ba, cell, R$1, C$2, opts, date1904) { + var os = 16 + get_cell_style(opts.cellXfs, cell, opts); + if (cell.v == null && !cell.bf) { + write_biff_rec(ba, 513, write_XLSCell(R$1, C$2, os)); + return; + } + if (cell.bf) write_biff_rec(ba, 6, write_Formula(cell, R$1, C$2, opts, os)); + else switch (cell.t) { + case "d": + case "n": + var v$3 = cell.t == "d" ? datenum(parseDate(cell.v, date1904), date1904) : cell.v; + if (isNaN(v$3)) write_biff_rec(ba, 517, write_BoolErr(R$1, C$2, 36, os, opts, "e")); + else if (!isFinite(v$3)) write_biff_rec(ba, 517, write_BoolErr(R$1, C$2, 7, os, opts, "e")); + else write_biff_rec(ba, 515, write_Number(R$1, C$2, v$3, os, opts)); + break; + case "b": + case "e": + write_biff_rec(ba, 517, write_BoolErr(R$1, C$2, cell.v, os, opts, cell.t)); + break; + case "s": + case "str": + if (opts.bookSST) { + var isst = get_sst_id(opts.Strings, cell.v == null ? "" : String(cell.v), opts.revStrings); + write_biff_rec(ba, 253, write_LabelSst(R$1, C$2, isst, os, opts)); + } else write_biff_rec(ba, 516, write_Label(R$1, C$2, (cell.v == null ? "" : String(cell.v)).slice(0, 255), os, opts)); + break; + default: write_biff_rec(ba, 513, write_XLSCell(R$1, C$2, os)); + } +} +function write_ws_biff8(idx, opts, wb) { + var ba = buf_array(); + var s$5 = wb.SheetNames[idx], ws = wb.Sheets[s$5] || {}; + var _WB = (wb || {}).Workbook || {}; + var _sheet = (_WB.Sheets || [])[idx] || {}; + var dense = ws["!data"] != null; + var b8 = opts.biff == 8; + var ref, rr = "", cols = []; + var range = safe_decode_range(ws["!ref"] || "A1"); + var MAX_ROWS = b8 ? 65536 : 16384; + if (range.e.c > 255 || range.e.r >= MAX_ROWS) { + if (opts.WTF) throw new Error("Range " + (ws["!ref"] || "A1") + " exceeds format limit A1:IV" + MAX_ROWS); + range.e.c = Math.min(range.e.c, 255); + range.e.r = Math.min(range.e.r, MAX_ROWS - 1); + } + write_biff_rec(ba, 2057, write_BOF(wb, 16, opts)); + write_biff_rec(ba, 13, writeuint16(1)); + write_biff_rec(ba, 12, writeuint16(100)); + write_biff_rec(ba, 15, writebool(true)); + write_biff_rec(ba, 17, writebool(false)); + write_biff_rec(ba, 16, write_Xnum(.001)); + write_biff_rec(ba, 95, writebool(true)); + write_biff_rec(ba, 42, writebool(false)); + write_biff_rec(ba, 43, writebool(false)); + write_biff_rec(ba, 130, writeuint16(1)); + write_biff_rec(ba, 128, write_Guts([0, 0])); + write_biff_rec(ba, 131, writebool(false)); + write_biff_rec(ba, 132, writebool(false)); + if (b8) write_ws_cols_biff8(ba, ws["!cols"]); + write_biff_rec(ba, 512, write_Dimensions(range, opts)); + var date1904 = (((wb || {}).Workbook || {}).WBProps || {}).date1904; + if (b8) ws["!links"] = []; + for (var C$2 = range.s.c; C$2 <= range.e.c; ++C$2) cols[C$2] = encode_col(C$2); + var comments = []; + var row = []; + for (var R$1 = range.s.r; R$1 <= range.e.r; ++R$1) { + if (dense) row = ws["!data"][R$1] || []; + rr = encode_row(R$1); + for (C$2 = range.s.c; C$2 <= range.e.c; ++C$2) { + var cell = dense ? row[C$2] : ws[cols[C$2] + rr]; + if (!cell) continue; + write_ws_biff8_cell(ba, cell, R$1, C$2, opts, date1904); + if (b8 && cell.l) ws["!links"].push([cols[C$2] + rr, cell.l]); + if (cell.c) comments.push([ + cell.c, + R$1, + C$2 + ]); + } + } + var cname = _sheet.CodeName || _sheet.name || s$5; + if (b8) write_comments_biff8(ba, comments); + else write_comments_biff2(ba, comments); + if (b8) write_biff_rec(ba, 574, write_Window2((_WB.Views || [])[0])); + if (b8 && (ws["!merges"] || []).length) write_biff_rec(ba, 229, write_MergeCells(ws["!merges"])); + if (b8) write_ws_biff8_hlinks(ba, ws); + write_biff_rec(ba, 442, write_XLUnicodeString(cname, opts)); + if (b8) write_FEAT(ba, ws); + write_biff_rec(ba, 10); + return ba.end(); +} +function write_biff8_global(wb, bufs, opts) { + var A$1 = buf_array(); + var _WB = (wb || {}).Workbook || {}; + var _sheets = _WB.Sheets || []; + var _wb = _WB.WBProps || {}; + var b8 = opts.biff == 8, b5 = opts.biff == 5; + write_biff_rec(A$1, 2057, write_BOF(wb, 5, opts)); + if (opts.bookType == "xla") write_biff_rec(A$1, 135); + write_biff_rec(A$1, 225, b8 ? writeuint16(1200) : null); + write_biff_rec(A$1, 193, writezeroes(2)); + if (b5) write_biff_rec(A$1, 191); + if (b5) write_biff_rec(A$1, 192); + write_biff_rec(A$1, 226); + write_biff_rec(A$1, 92, write_WriteAccess("SheetJS", opts)); + write_biff_rec(A$1, 66, writeuint16(b8 ? 1200 : 1252)); + if (b8) write_biff_rec(A$1, 353, writeuint16(0)); + if (b8) write_biff_rec(A$1, 448); + write_biff_rec(A$1, 317, write_RRTabId(wb.SheetNames.length)); + if (b8 && wb.vbaraw) write_biff_rec(A$1, 211); + if (b8 && wb.vbaraw) { + var cname = _wb.CodeName || "ThisWorkbook"; + write_biff_rec(A$1, 442, write_XLUnicodeString(cname, opts)); + } + write_biff_rec(A$1, 156, writeuint16(17)); + write_biff_rec(A$1, 25, writebool(false)); + write_biff_rec(A$1, 18, writebool(false)); + write_biff_rec(A$1, 19, writeuint16(0)); + if (b8) write_biff_rec(A$1, 431, writebool(false)); + if (b8) write_biff_rec(A$1, 444, writeuint16(0)); + write_biff_rec(A$1, 61, write_Window1(opts)); + write_biff_rec(A$1, 64, writebool(false)); + write_biff_rec(A$1, 141, writeuint16(0)); + write_biff_rec(A$1, 34, writebool(safe1904(wb) == "true")); + write_biff_rec(A$1, 14, writebool(true)); + if (b8) write_biff_rec(A$1, 439, writebool(false)); + write_biff_rec(A$1, 218, writeuint16(0)); + write_FONTS_biff8(A$1, wb, opts); + write_FMTS_biff8(A$1, wb.SSF, opts); + write_CELLXFS_biff8(A$1, opts); + if (b8) write_biff_rec(A$1, 352, writebool(false)); + var a$2 = A$1.end(); + var C$2 = buf_array(); + if (b8) write_biff_rec(C$2, 140, write_Country()); + if (b8 && b8ocnts.length) write_biff_rec(C$2, 235, write_MsoDrawingGroup()); + if (b8 && opts.Strings) write_biff_continue(C$2, 252, write_SST(opts.Strings, opts)); + write_biff_rec(C$2, 10); + var c$7 = C$2.end(); + var B$2 = buf_array(); + var blen = 0, j$2 = 0; + for (j$2 = 0; j$2 < wb.SheetNames.length; ++j$2) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j$2].length; + var start = a$2.length + blen + c$7.length; + for (j$2 = 0; j$2 < wb.SheetNames.length; ++j$2) { + var _sheet = _sheets[j$2] || {}; + write_biff_rec(B$2, 133, write_BoundSheet8({ + pos: start, + hs: _sheet.Hidden || 0, + dt: 0, + name: wb.SheetNames[j$2] + }, opts)); + start += bufs[j$2].length; + } + var b$3 = B$2.end(); + if (blen != b$3.length) throw new Error("BS8 " + blen + " != " + b$3.length); + var out = []; + if (a$2.length) out.push(a$2); + if (b$3.length) out.push(b$3); + if (c$7.length) out.push(c$7); + return bconcat(out); +} +function write_biff8_buf(wb, opts) { + var o$10 = opts || {}; + var bufs = []; + if (wb && !wb.SSF) { + wb.SSF = dup(table_fmt); + } + if (wb && wb.SSF) { + make_ssf(); + SSF_load_table(wb.SSF); + o$10.revssf = evert_num(wb.SSF); + o$10.revssf[wb.SSF[65535]] = 0; + o$10.ssf = wb.SSF; + } + b8oid = 1; + b8ocnts = []; + o$10.Strings = []; + o$10.Strings.Count = 0; + o$10.Strings.Unique = 0; + fix_write_opts(o$10); + o$10.cellXfs = []; + get_cell_style(o$10.cellXfs, {}, { revssf: { "General": 0 } }); + if (!wb.Props) wb.Props = {}; + for (var i$7 = 0; i$7 < wb.SheetNames.length; ++i$7) bufs[bufs.length] = write_ws_biff8(i$7, o$10, wb); + bufs.unshift(write_biff8_global(wb, bufs, o$10)); + return bconcat(bufs); +} +function write_biff_buf(wb, opts) { + for (var i$7 = 0; i$7 <= wb.SheetNames.length; ++i$7) { + var ws = wb.Sheets[wb.SheetNames[i$7]]; + if (!ws || !ws["!ref"]) continue; + var range = decode_range(ws["!ref"]); + if (range.e.c > 255) { + if (typeof console != "undefined" && console.error) console.error("Worksheet '" + wb.SheetNames[i$7] + "' extends beyond column IV (255). Data may be lost."); + } + if (range.e.r > 65535) { + if (typeof console != "undefined" && console.error) console.error("Worksheet '" + wb.SheetNames[i$7] + "' extends beyond row 65536. Data may be lost."); + } + } + var o$10 = opts || {}; + switch (o$10.biff || 2) { + case 8: + case 5: return write_biff8_buf(wb, opts); + case 4: + case 3: + case 2: return write_biff2_buf(wb, opts); + } + throw new Error("invalid type " + o$10.bookType + " for BIFF"); +} +function html_to_sheet(str, _opts) { + var opts = _opts || {}; + var dense = opts.dense != null ? opts.dense : DENSE; + var ws = {}; + if (dense) ws["!data"] = []; + str = str_remove_ng(str, ""); + var mtch = str.match(/"); + var mtch2 = str.match(/<\/table/i); + var i$7 = mtch.index, j$2 = mtch2 && mtch2.index || str.length; + var rows = split_regex(str.slice(i$7, j$2), /(:?]*>)/i, ""); + var R$1 = -1, C$2 = 0, RS = 0, CS = 0; + var range = { + s: { + r: 1e7, + c: 1e7 + }, + e: { + r: 0, + c: 0 + } + }; + var merges = []; + for (i$7 = 0; i$7 < rows.length; ++i$7) { + var row = rows[i$7].trim(); + var hd = row.slice(0, 3).toLowerCase(); + if (hd == "/i); + for (j$2 = 0; j$2 < cells.length; ++j$2) { + var cell = cells[j$2].trim(); + if (!cell.match(/")) > -1) m$3 = m$3.slice(cc + 1); + for (var midx = 0; midx < merges.length; ++midx) { + var _merge = merges[midx]; + if (_merge.s.c == C$2 && _merge.s.r < R$1 && R$1 <= _merge.e.r) { + C$2 = _merge.e.c + 1; + midx = -1; + } + } + var tag = parsexmltag(cell.slice(0, cell.indexOf(">"))); + CS = tag.colspan ? +tag.colspan : 1; + if ((RS = +tag.rowspan) > 1 || CS > 1) merges.push({ + s: { + r: R$1, + c: C$2 + }, + e: { + r: R$1 + (RS || 1) - 1, + c: C$2 + CS - 1 + } + }); + var _t = tag.t || tag["data-t"] || ""; + if (!m$3.length) { + C$2 += CS; + continue; + } + m$3 = htmldecode(m$3); + if (range.s.r > R$1) range.s.r = R$1; + if (range.e.r < R$1) range.e.r = R$1; + if (range.s.c > C$2) range.s.c = C$2; + if (range.e.c < C$2) range.e.c = C$2; + if (!m$3.length) { + C$2 += CS; + continue; + } + var o$10 = { + t: "s", + v: m$3 + }; + if (opts.raw || !m$3.trim().length || _t == "s") {} else if (m$3 === "TRUE") o$10 = { + t: "b", + v: true + }; + else if (m$3 === "FALSE") o$10 = { + t: "b", + v: false + }; + else if (!isNaN(fuzzynum(m$3))) o$10 = { + t: "n", + v: fuzzynum(m$3) + }; + else if (!isNaN(fuzzydate(m$3).getDate())) { + o$10 = { + t: "d", + v: parseDate(m$3) + }; + if (opts.UTC === false) o$10.v = utc_to_local(o$10.v); + if (!opts.cellDates) o$10 = { + t: "n", + v: datenum(o$10.v) + }; + o$10.z = opts.dateNF || table_fmt[14]; + } else if (m$3.charCodeAt(0) == 35 && RBErr[m$3] != null) { + o$10.t = "e"; + o$10.w = m$3; + o$10.v = RBErr[m$3]; + } + if (o$10.cellText !== false) o$10.w = m$3; + if (dense) { + if (!ws["!data"][R$1]) ws["!data"][R$1] = []; + ws["!data"][R$1][C$2] = o$10; + } else ws[encode_cell({ + r: R$1, + c: C$2 + })] = o$10; + C$2 += CS; + } + } + ws["!ref"] = encode_range(range); + if (merges.length) ws["!merges"] = merges; + return ws; +} +function make_html_row(ws, r$10, R$1, o$10) { + var M$3 = ws["!merges"] || []; + var oo = []; + var sp = {}; + var dense = ws["!data"] != null; + for (var C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) { + var RS = 0, CS = 0; + for (var j$2 = 0; j$2 < M$3.length; ++j$2) { + if (M$3[j$2].s.r > R$1 || M$3[j$2].s.c > C$2) continue; + if (M$3[j$2].e.r < R$1 || M$3[j$2].e.c < C$2) continue; + if (M$3[j$2].s.r < R$1 || M$3[j$2].s.c < C$2) { + RS = -1; + break; + } + RS = M$3[j$2].e.r - M$3[j$2].s.r + 1; + CS = M$3[j$2].e.c - M$3[j$2].s.c + 1; + break; + } + if (RS < 0) continue; + var coord = encode_col(C$2) + encode_row(R$1); + var cell = dense ? (ws["!data"][R$1] || [])[C$2] : ws[coord]; + if (cell && cell.t == "n" && cell.v != null && !isFinite(cell.v)) { + if (isNaN(cell.v)) cell = { + t: "e", + v: 36, + w: BErr[36] + }; + else cell = { + t: "e", + v: 7, + w: BErr[7] + }; + } + var w$2 = cell && cell.v != null && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || "")) || ""; + sp = {}; + if (RS > 1) sp.rowspan = RS; + if (CS > 1) sp.colspan = CS; + if (o$10.editable) w$2 = "" + w$2 + ""; + else if (cell) { + sp["data-t"] = cell && cell.t || "z"; + if (cell.v != null) sp["data-v"] = escapehtml(cell.v instanceof Date ? cell.v.toISOString() : cell.v); + if (cell.z != null) sp["data-z"] = cell.z; + if (cell.l && (cell.l.Target || "#").charAt(0) != "#") w$2 = "" + w$2 + ""; + } + sp.id = (o$10.id || "sjs") + "-" + coord; + oo.push(writextag("td", w$2, sp)); + } + var preamble = ""; + return preamble + oo.join("") + ""; +} +function html_to_workbook(str, opts) { + var mtch = str_match_xml_ig(str, "table"); + if (!mtch || mtch.length == 0) throw new Error("Invalid HTML: could not find
"); + if (mtch.length == 1) { + var w$2 = sheet_to_workbook(html_to_sheet(mtch[0], opts), opts); + w$2.bookType = "html"; + return w$2; + } + var wb = book_new(); + mtch.forEach(function(s$5, idx) { + book_append_sheet(wb, html_to_sheet(s$5, opts), "Sheet" + (idx + 1)); + }); + wb.bookType = "html"; + return wb; +} +function make_html_preamble(ws, R$1, o$10) { + var out = []; + return out.join("") + ""; +} +function sheet_to_html(ws, opts) { + var o$10 = opts || {}; + var header = o$10.header != null ? o$10.header : HTML_BEGIN; + var footer = o$10.footer != null ? o$10.footer : HTML_END; + var out = [header]; + var r$10 = decode_range(ws["!ref"] || "A1"); + out.push(make_html_preamble(ws, r$10, o$10)); + if (ws["!ref"]) for (var R$1 = r$10.s.r; R$1 <= r$10.e.r; ++R$1) out.push(make_html_row(ws, r$10, R$1, o$10)); + out.push("
" + footer); + return out.join(""); +} +function sheet_add_dom(ws, table, _opts) { + var rows = table.rows; + if (!rows) { + throw "Unsupported origin when " + table.tagName + " is not a TABLE"; + } + var opts = _opts || {}; + var dense = ws["!data"] != null; + var or_R = 0, or_C = 0; + if (opts.origin != null) { + if (typeof opts.origin == "number") or_R = opts.origin; + else { + var _origin = typeof opts.origin == "string" ? decode_cell(opts.origin) : opts.origin; + or_R = _origin.r; + or_C = _origin.c; + } + } + var sheetRows = Math.min(opts.sheetRows || 1e7, rows.length); + var range = { + s: { + r: 0, + c: 0 + }, + e: { + r: or_R, + c: or_C + } + }; + if (ws["!ref"]) { + var _range = decode_range(ws["!ref"]); + range.s.r = Math.min(range.s.r, _range.s.r); + range.s.c = Math.min(range.s.c, _range.s.c); + range.e.r = Math.max(range.e.r, _range.e.r); + range.e.c = Math.max(range.e.c, _range.e.c); + if (or_R == -1) range.e.r = or_R = _range.e.r + 1; + } + var merges = [], midx = 0; + var rowinfo = ws["!rows"] || (ws["!rows"] = []); + var _R = 0, R$1 = 0, _C = 0, C$2 = 0, RS = 0, CS = 0; + if (!ws["!cols"]) ws["!cols"] = []; + for (; _R < rows.length && R$1 < sheetRows; ++_R) { + var row = rows[_R]; + if (is_dom_element_hidden(row)) { + if (opts.display) continue; + rowinfo[R$1] = { hidden: true }; + } + var elts = row.cells; + for (_C = C$2 = 0; _C < elts.length; ++_C) { + var elt = elts[_C]; + if (opts.display && is_dom_element_hidden(elt)) continue; + var v$3 = elt.hasAttribute("data-v") ? elt.getAttribute("data-v") : elt.hasAttribute("v") ? elt.getAttribute("v") : htmldecode(elt.innerHTML); + var z$2 = elt.getAttribute("data-z") || elt.getAttribute("z"); + for (midx = 0; midx < merges.length; ++midx) { + var m$3 = merges[midx]; + if (m$3.s.c == C$2 + or_C && m$3.s.r < R$1 + or_R && R$1 + or_R <= m$3.e.r) { + C$2 = m$3.e.c + 1 - or_C; + midx = -1; + } + } + CS = +elt.getAttribute("colspan") || 1; + if ((RS = +elt.getAttribute("rowspan") || 1) > 1 || CS > 1) merges.push({ + s: { + r: R$1 + or_R, + c: C$2 + or_C + }, + e: { + r: R$1 + or_R + (RS || 1) - 1, + c: C$2 + or_C + (CS || 1) - 1 + } + }); + var o$10 = { + t: "s", + v: v$3 + }; + var _t = elt.getAttribute("data-t") || elt.getAttribute("t") || ""; + if (v$3 != null) { + if (v$3.length == 0) o$10.t = _t || "z"; + else if (opts.raw || v$3.trim().length == 0 || _t == "s") {} else if (_t == "e" && BErr[+v$3]) o$10 = { + t: "e", + v: +v$3, + w: BErr[+v$3] + }; + else if (v$3 === "TRUE") o$10 = { + t: "b", + v: true + }; + else if (v$3 === "FALSE") o$10 = { + t: "b", + v: false + }; + else if (!isNaN(fuzzynum(v$3))) o$10 = { + t: "n", + v: fuzzynum(v$3) + }; + else if (!isNaN(fuzzydate(v$3).getDate())) { + o$10 = { + t: "d", + v: parseDate(v$3) + }; + if (opts.UTC) o$10.v = local_to_utc(o$10.v); + if (!opts.cellDates) o$10 = { + t: "n", + v: datenum(o$10.v) + }; + o$10.z = opts.dateNF || table_fmt[14]; + } else if (v$3.charCodeAt(0) == 35 && RBErr[v$3] != null) o$10 = { + t: "e", + v: RBErr[v$3], + w: v$3 + }; + } + if (o$10.z === undefined && z$2 != null) o$10.z = z$2; + var l$3 = "", Aelts = elt.getElementsByTagName("A"); + if (Aelts && Aelts.length) { + for (var Aelti = 0; Aelti < Aelts.length; ++Aelti) if (Aelts[Aelti].hasAttribute("href")) { + l$3 = Aelts[Aelti].getAttribute("href"); + if (l$3.charAt(0) != "#") break; + } + } + if (l$3 && l$3.charAt(0) != "#" && l$3.slice(0, 11).toLowerCase() != "javascript:") o$10.l = { Target: l$3 }; + if (dense) { + if (!ws["!data"][R$1 + or_R]) ws["!data"][R$1 + or_R] = []; + ws["!data"][R$1 + or_R][C$2 + or_C] = o$10; + } else ws[encode_cell({ + c: C$2 + or_C, + r: R$1 + or_R + })] = o$10; + if (range.e.c < C$2 + or_C) range.e.c = C$2 + or_C; + C$2 += CS; + } + ++R$1; + } + if (merges.length) ws["!merges"] = (ws["!merges"] || []).concat(merges); + range.e.r = Math.max(range.e.r, R$1 - 1 + or_R); + ws["!ref"] = encode_range(range); + if (R$1 >= sheetRows) ws["!fullref"] = encode_range((range.e.r = rows.length - _R + R$1 - 1 + or_R, range)); + return ws; +} +function parse_dom_table(table, _opts) { + var opts = _opts || {}; + var ws = {}; + if (opts.dense) ws["!data"] = []; + return sheet_add_dom(ws, table, _opts); +} +function table_to_book(table, opts) { + var o$10 = sheet_to_workbook(parse_dom_table(table, opts), opts); + return o$10; +} +function is_dom_element_hidden(element) { + var display = ""; + var get_computed_style = get_get_computed_style_function(element); + if (get_computed_style) display = get_computed_style(element).getPropertyValue("display"); + if (!display) display = element.style && element.style.display; + return display === "none"; +} +function get_get_computed_style_function(element) { + if (element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === "function") return element.ownerDocument.defaultView.getComputedStyle; + if (typeof getComputedStyle === "function") return getComputedStyle; + return null; +} +function parse_text_p(text$2) { + var fixed = text$2.replace(/[\t\r\n]/g, " ").trim().replace(/ +/g, " ").replace(//g, " ").replace(//g, function($$, $1) { + return Array(parseInt($1, 10) + 1).join(" "); + }).replace(/]*\/>/g, " ").replace(//g, "\n"); + var v$3 = unescapexml(fixed.replace(/<[^<>]*>/g, "")); + return [v$3]; +} +function parse_ods_styles(d$5, _opts, _nfm) { + var number_format_map = _nfm || {}; + var str = xlml_normalize(d$5); + xlmlregex.lastIndex = 0; + str = remove_doctype(str_remove_ng(str, "")); + var Rn, NFtag, NF = "", tNF = "", y$3, etpos = 0, tidx = -1, infmt = false, payload = ""; + while (Rn = xlmlregex.exec(str)) { + switch (Rn[3] = Rn[3].replace(/_[\s\S]*$/, "")) { + case "number-style": + case "currency-style": + case "percentage-style": + case "date-style": + case "time-style": + case "text-style": + if (Rn[1] === "/") { + infmt = false; + if (NFtag["truncate-on-overflow"] == "false") { + if (NF.match(/h/)) NF = NF.replace(/h+/, "[$&]"); + else if (NF.match(/m/)) NF = NF.replace(/m+/, "[$&]"); + else if (NF.match(/s/)) NF = NF.replace(/s+/, "[$&]"); + } + number_format_map[NFtag.name] = NF; + NF = ""; + } else if (Rn[0].charAt(Rn[0].length - 2) !== "/") { + infmt = true; + NF = ""; + NFtag = parsexmltag(Rn[0], false); + } + break; + case "boolean-style": + if (Rn[1] === "/") { + infmt = false; + number_format_map[NFtag.name] = "General"; + NF = ""; + } else if (Rn[0].charAt(Rn[0].length - 2) !== "/") { + infmt = true; + NF = ""; + NFtag = parsexmltag(Rn[0], false); + } + break; + case "boolean": + NF += "General"; + break; + case "text": + if (Rn[1] === "/") { + payload = str.slice(tidx, xlmlregex.lastIndex - Rn[0].length); + if (payload == "%" && NFtag[0] == "=0") NF = number_format_map[y$3["apply-style-name"]] + ";" + NF; + else console.error("ODS number format may be incorrect: " + y$3["condition"]); + break; + case "number": + if (Rn[1] === "/") break; + y$3 = parsexmltag(Rn[0], false); + tNF = ""; + tNF += fill("0", +y$3["min-integer-digits"] || 1); + if (parsexmlbool(y$3["grouping"])) tNF = commaify(fill("#", Math.max(0, 4 - tNF.length)) + tNF); + if (+y$3["min-decimal-places"] || +y$3["decimal-places"]) tNF += "."; + if (+y$3["min-decimal-places"]) tNF += fill("0", +y$3["min-decimal-places"] || 1); + if (+y$3["decimal-places"] - (+y$3["min-decimal-places"] || 0)) tNF += fill("0", +y$3["decimal-places"] - (+y$3["min-decimal-places"] || 0)); + NF += tNF; + break; + case "embedded-text": + if (Rn[1] === "/") { + if (etpos == 0) NF += "\"" + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/"/g, "\"\"") + "\""; + else NF = NF.slice(0, etpos) + "\"" + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/"/g, "\"\"") + "\"" + NF.slice(etpos); + } else if (Rn[0].charAt(Rn[0].length - 2) !== "/") { + tidx = xlmlregex.lastIndex; + etpos = -+parsexmltag(Rn[0], false)["position"] || 0; + } + break; + } + } + return number_format_map; +} +function parse_content_xml(d$5, _opts, _nfm) { + var opts = _opts || {}; + if (DENSE != null && opts.dense == null) opts.dense = DENSE; + var str = xlml_normalize(d$5); + var state$1 = [], tmp; + var tag; + var nfidx, NF = "", pidx = 0; + var sheetag; + var rowtag; + var Sheets = {}, SheetNames = []; + var ws = {}; + if (opts.dense) ws["!data"] = []; + var Rn, q$2; + var ctag = { value: "" }, ctag2 = {}; + var textp = "", textpidx = 0, textptag, oldtextp = "", oldtextpidx = 0; + var textR = [], oldtextR = []; + var R$1 = -1, C$2 = -1, range = { + s: { + r: 1e6, + c: 1e7 + }, + e: { + r: 0, + c: 0 + } + }; + var row_ol = 0; + var number_format_map = _nfm || {}, styles$1 = {}; + var merges = [], mrange = {}, mR = 0, mC = 0; + var rowinfo = [], rowpeat = 1, colpeat = 1; + var arrayf = []; + var WB = { + Names: [], + WBProps: {} + }; + var atag = {}; + var _Ref = ["", ""]; + var comments = [], comment = {}; + var creator = "", creatoridx = 0; + var isstub = false, intable = false; + var i$7 = 0; + xlmlregex.lastIndex = 0; + str = remove_doctype(str_remove_ng(str, "")); + while (Rn = xlmlregex.exec(str)) switch (Rn[3] = Rn[3].replace(/_[\s\S]*$/, "")) { + case "table": + case "工作表": + if (Rn[1] === "/") { + if (range.e.c >= range.s.c && range.e.r >= range.s.r) ws["!ref"] = encode_range(range); + else ws["!ref"] = "A1:A1"; + if (opts.sheetRows > 0 && opts.sheetRows <= range.e.r) { + ws["!fullref"] = ws["!ref"]; + range.e.r = opts.sheetRows - 1; + ws["!ref"] = encode_range(range); + } + if (merges.length) ws["!merges"] = merges; + if (rowinfo.length) ws["!rows"] = rowinfo; + sheetag.name = sheetag["名称"] || sheetag.name; + if (typeof JSON !== "undefined") JSON.stringify(sheetag); + SheetNames.push(sheetag.name); + Sheets[sheetag.name] = ws; + intable = false; + } else if (Rn[0].charAt(Rn[0].length - 2) !== "/") { + sheetag = parsexmltag(Rn[0], false); + R$1 = C$2 = -1; + range.s.r = range.s.c = 1e7; + range.e.r = range.e.c = 0; + ws = {}; + if (opts.dense) ws["!data"] = []; + merges = []; + rowinfo = []; + intable = true; + } + break; + case "table-row-group": + if (Rn[1] === "/") --row_ol; + else ++row_ol; + break; + case "table-row": + case "行": + if (Rn[1] === "/") { + R$1 += rowpeat; + rowpeat = 1; + break; + } + rowtag = parsexmltag(Rn[0], false); + if (rowtag["行号"]) R$1 = rowtag["行号"] - 1; + else if (R$1 == -1) R$1 = 0; + rowpeat = +rowtag["number-rows-repeated"] || 1; + if (rowpeat < 10) { + for (i$7 = 0; i$7 < rowpeat; ++i$7) if (row_ol > 0) rowinfo[R$1 + i$7] = { level: row_ol }; + } + C$2 = -1; + break; + case "covered-table-cell": + if (Rn[1] !== "/") { + ++C$2; + ctag = parsexmltag(Rn[0], false); + colpeat = parseInt(ctag["number-columns-repeated"] || "1", 10) || 1; + if (opts.sheetStubs) { + while (colpeat-- > 0) { + if (opts.dense) { + if (!ws["!data"][R$1]) ws["!data"][R$1] = []; + ws["!data"][R$1][C$2] = { t: "z" }; + } else ws[encode_cell({ + r: R$1, + c: C$2 + })] = { t: "z" }; + ++C$2; + } + --C$2; + } else C$2 += colpeat - 1; + } + textp = ""; + textR = []; + break; + case "table-cell": + case "数据": + if (Rn[0].charAt(Rn[0].length - 2) === "/") { + ++C$2; + ctag = parsexmltag(Rn[0], false); + colpeat = parseInt(ctag["number-columns-repeated"] || "1", 10) || 1; + q$2 = { + t: "z", + v: null + }; + if (ctag.formula && opts.cellFormula != false) q$2.f = ods_to_csf_formula(unescapexml(ctag.formula)); + if (ctag["style-name"] && styles$1[ctag["style-name"]]) q$2.z = styles$1[ctag["style-name"]]; + if ((ctag["数据类型"] || ctag["value-type"]) == "string") { + q$2.t = "s"; + q$2.v = unescapexml(ctag["string-value"] || ""); + if (opts.dense) { + if (!ws["!data"][R$1]) ws["!data"][R$1] = []; + ws["!data"][R$1][C$2] = q$2; + } else { + ws[encode_col(C$2) + encode_row(R$1)] = q$2; + } + } + C$2 += colpeat - 1; + } else if (Rn[1] !== "/") { + ++C$2; + textp = oldtextp = ""; + textpidx = oldtextpidx = 0; + textR = []; + oldtextR = []; + colpeat = 1; + var rptR = rowpeat ? R$1 + rowpeat - 1 : R$1; + if (C$2 > range.e.c) range.e.c = C$2; + if (C$2 < range.s.c) range.s.c = C$2; + if (R$1 < range.s.r) range.s.r = R$1; + if (rptR > range.e.r) range.e.r = rptR; + ctag = parsexmltag(Rn[0], false); + ctag2 = parsexmltagraw(Rn[0], true); + comments = []; + comment = {}; + q$2 = { + t: ctag["数据类型"] || ctag["value-type"], + v: null + }; + if (ctag["style-name"] && styles$1[ctag["style-name"]]) q$2.z = styles$1[ctag["style-name"]]; + if (opts.cellFormula) { + if (ctag.formula) ctag.formula = unescapexml(ctag.formula); + if (ctag["number-matrix-columns-spanned"] && ctag["number-matrix-rows-spanned"]) { + mR = parseInt(ctag["number-matrix-rows-spanned"], 10) || 0; + mC = parseInt(ctag["number-matrix-columns-spanned"], 10) || 0; + mrange = { + s: { + r: R$1, + c: C$2 + }, + e: { + r: R$1 + mR - 1, + c: C$2 + mC - 1 + } + }; + q$2.F = encode_range(mrange); + arrayf.push([mrange, q$2.F]); + } + if (ctag.formula) q$2.f = ods_to_csf_formula(ctag.formula); + else for (i$7 = 0; i$7 < arrayf.length; ++i$7) if (R$1 >= arrayf[i$7][0].s.r && R$1 <= arrayf[i$7][0].e.r) { + if (C$2 >= arrayf[i$7][0].s.c && C$2 <= arrayf[i$7][0].e.c) q$2.F = arrayf[i$7][1]; + } + } + if (ctag["number-columns-spanned"] || ctag["number-rows-spanned"]) { + mR = parseInt(ctag["number-rows-spanned"] || "1", 10) || 1; + mC = parseInt(ctag["number-columns-spanned"] || "1", 10) || 1; + if (mR * mC > 1) { + mrange = { + s: { + r: R$1, + c: C$2 + }, + e: { + r: R$1 + mR - 1, + c: C$2 + mC - 1 + } + }; + merges.push(mrange); + } + } + if (ctag["number-columns-repeated"]) colpeat = parseInt(ctag["number-columns-repeated"], 10); + switch (q$2.t) { + case "boolean": + q$2.t = "b"; + q$2.v = parsexmlbool(ctag["boolean-value"]) || +ctag["boolean-value"] >= 1; + break; + case "float": + q$2.t = "n"; + q$2.v = parseFloat(ctag.value); + if (opts.cellDates && q$2.z && fmt_is_date(q$2.z)) { + q$2.v = numdate(q$2.v + (WB.WBProps.date1904 ? 1462 : 0)); + q$2.t = typeof q$2.v == "number" ? "n" : "d"; + } + break; + case "percentage": + q$2.t = "n"; + q$2.v = parseFloat(ctag.value); + break; + case "currency": + q$2.t = "n"; + q$2.v = parseFloat(ctag.value); + break; + case "date": + q$2.t = "d"; + q$2.v = parseDate(ctag["date-value"], WB.WBProps.date1904); + if (!opts.cellDates) { + q$2.t = "n"; + q$2.v = datenum(q$2.v, WB.WBProps.date1904); + } + if (!q$2.z) q$2.z = "m/d/yy"; + break; + case "time": + q$2.t = "n"; + q$2.v = parse_isodur(ctag["time-value"]) / 86400; + if (opts.cellDates) { + q$2.v = numdate(q$2.v); + q$2.t = typeof q$2.v == "number" ? "n" : "d"; + } + if (!q$2.z) q$2.z = "HH:MM:SS"; + break; + case "number": + q$2.t = "n"; + q$2.v = parseFloat(ctag["数据数值"]); + break; + default: if (q$2.t === "string" || q$2.t === "text" || !q$2.t) { + q$2.t = "s"; + if (ctag["string-value"] != null) { + textp = unescapexml(ctag["string-value"]); + textR = []; + } + } else throw new Error("Unsupported value type " + q$2.t); + } + } else { + isstub = false; + if (ctag2["calcext:value-type"] == "error" && RBErr[textp] != null) { + q$2.t = "e"; + q$2.w = textp; + q$2.v = RBErr[textp]; + } + if (q$2.t === "s") { + q$2.v = textp || ""; + if (textR.length) q$2.R = textR; + isstub = textpidx == 0; + } + if (atag.Target) q$2.l = atag; + if (comments.length > 0) { + q$2.c = comments; + comments = []; + } + if (textp && opts.cellText !== false) q$2.w = textp; + if (isstub) { + q$2.t = "z"; + delete q$2.v; + } + if (!isstub || opts.sheetStubs) { + if (!(opts.sheetRows && opts.sheetRows <= R$1)) { + for (var rpt = 0; rpt < rowpeat; ++rpt) { + colpeat = parseInt(ctag["number-columns-repeated"] || "1", 10); + if (opts.dense) { + if (!ws["!data"][R$1 + rpt]) ws["!data"][R$1 + rpt] = []; + ws["!data"][R$1 + rpt][C$2] = rpt == 0 ? q$2 : dup(q$2); + while (--colpeat > 0) ws["!data"][R$1 + rpt][C$2 + colpeat] = dup(q$2); + } else { + ws[encode_cell({ + r: R$1 + rpt, + c: C$2 + })] = q$2; + while (--colpeat > 0) ws[encode_cell({ + r: R$1 + rpt, + c: C$2 + colpeat + })] = dup(q$2); + } + if (range.e.c <= C$2) range.e.c = C$2; + } + } + } + colpeat = parseInt(ctag["number-columns-repeated"] || "1", 10); + C$2 += colpeat - 1; + colpeat = 0; + q$2 = {}; + textp = ""; + textR = []; + } + atag = {}; + break; + case "document": + case "document-content": + case "电子表格文档": + case "spreadsheet": + case "主体": + case "scripts": + case "styles": + case "font-face-decls": + case "master-styles": + if (Rn[1] === "/") { + if ((tmp = state$1.pop())[0] !== Rn[3]) throw "Bad state: " + tmp; + } else if (Rn[0].charAt(Rn[0].length - 2) !== "/") state$1.push([Rn[3], true]); + break; + case "annotation": + if (Rn[1] === "/") { + if ((tmp = state$1.pop())[0] !== Rn[3]) throw "Bad state: " + tmp; + comment.t = textp; + if (textR.length) comment.R = textR; + comment.a = creator; + comments.push(comment); + textp = oldtextp; + textpidx = oldtextpidx; + textR = oldtextR; + } else if (Rn[0].charAt(Rn[0].length - 2) !== "/") { + state$1.push([Rn[3], false]); + var annotag = parsexmltag(Rn[0], true); + if (!(annotag["display"] && parsexmlbool(annotag["display"]))) comments.hidden = true; + oldtextp = textp; + oldtextpidx = textpidx; + oldtextR = textR; + textp = ""; + textpidx = 0; + textR = []; + } + creator = ""; + creatoridx = 0; + break; + case "creator": + if (Rn[1] === "/") { + creator = str.slice(creatoridx, Rn.index); + } else creatoridx = Rn.index + Rn[0].length; + break; + case "meta": + case "元数据": + case "settings": + case "config-item-set": + case "config-item-map-indexed": + case "config-item-map-entry": + case "config-item-map-named": + case "shapes": + case "frame": + case "text-box": + case "image": + case "data-pilot-tables": + case "list-style": + case "form": + case "dde-links": + case "event-listeners": + case "chart": + if (Rn[1] === "/") { + if ((tmp = state$1.pop())[0] !== Rn[3]) throw "Bad state: " + tmp; + } else if (Rn[0].charAt(Rn[0].length - 2) !== "/") state$1.push([Rn[3], false]); + textp = ""; + textpidx = 0; + textR = []; + break; + case "scientific-number": + case "currency-symbol": + case "fill-character": break; + case "text-style": + case "boolean-style": + case "number-style": + case "currency-style": + case "percentage-style": + case "date-style": + case "time-style": + if (Rn[1] === "/") { + var xlmlidx = xlmlregex.lastIndex; + parse_ods_styles(str.slice(nfidx, xlmlregex.lastIndex), _opts, number_format_map); + xlmlregex.lastIndex = xlmlidx; + } else if (Rn[0].charAt(Rn[0].length - 2) !== "/") { + nfidx = xlmlregex.lastIndex - Rn[0].length; + } + break; + case "script": break; + case "libraries": break; + case "automatic-styles": break; + case "default-style": + case "page-layout": break; + case "style": + { + var styletag = parsexmltag(Rn[0], false); + if (styletag["family"] == "table-cell" && number_format_map[styletag["data-style-name"]]) styles$1[styletag["name"]] = number_format_map[styletag["data-style-name"]]; + } + break; + case "map": break; + case "font-face": break; + case "paragraph-properties": break; + case "table-properties": break; + case "table-column-properties": break; + case "table-row-properties": break; + case "table-cell-properties": break; + case "number": break; + case "fraction": break; + case "day": + case "month": + case "year": + case "era": + case "day-of-week": + case "week-of-year": + case "quarter": + case "hours": + case "minutes": + case "seconds": + case "am-pm": break; + case "boolean": break; + case "text": + if (Rn[0].slice(-2) === "/>") break; + else if (Rn[1] === "/") switch (state$1[state$1.length - 1][0]) { + case "number-style": + case "date-style": + case "time-style": + NF += str.slice(pidx, Rn.index); + break; + } + else pidx = Rn.index + Rn[0].length; + break; + case "named-range": + tag = parsexmltag(Rn[0], false); + _Ref = ods_to_csf_3D(tag["cell-range-address"]); + var nrange = { + Name: tag.name, + Ref: _Ref[0] + "!" + _Ref[1] + }; + if (intable) nrange.Sheet = SheetNames.length; + WB.Names.push(nrange); + break; + case "text-content": break; + case "text-properties": break; + case "embedded-text": break; + case "body": + case "电子表格": break; + case "forms": break; + case "table-column": break; + case "table-header-rows": break; + case "table-rows": break; + case "table-column-group": break; + case "table-header-columns": break; + case "table-columns": break; + case "null-date": + tag = parsexmltag(Rn[0], false); + switch (tag["date-value"]) { + case "1904-01-01": + WB.WBProps.date1904 = true; + break; + } + break; + case "graphic-properties": break; + case "calculation-settings": break; + case "named-expressions": break; + case "label-range": break; + case "label-ranges": break; + case "named-expression": break; + case "sort": break; + case "sort-by": break; + case "sort-groups": break; + case "tab": break; + case "line-break": break; + case "span": break; + case "p": + case "文本串": + if (["master-styles"].indexOf(state$1[state$1.length - 1][0]) > -1) break; + if (Rn[1] === "/" && (!ctag || !ctag["string-value"])) { + var ptp = parse_text_p(str.slice(textpidx, Rn.index), textptag); + textp = (textp.length > 0 ? textp + "\n" : "") + ptp[0]; + } else if (Rn[0].slice(-2) == "/>") { + textp += "\n"; + } else { + textptag = parsexmltag(Rn[0], false); + textpidx = Rn.index + Rn[0].length; + } + break; + case "s": break; + case "database-range": + if (Rn[1] === "/") break; + try { + _Ref = ods_to_csf_3D(parsexmltag(Rn[0])["target-range-address"]); + Sheets[_Ref[0]]["!autofilter"] = { ref: _Ref[1] }; + } catch (e$10) {} + break; + case "date": break; + case "object": break; + case "title": + case "标题": break; + case "desc": break; + case "binary-data": break; + case "table-source": break; + case "scenario": break; + case "iteration": break; + case "content-validations": break; + case "content-validation": break; + case "help-message": break; + case "error-message": break; + case "database-ranges": break; + case "filter": break; + case "filter-and": break; + case "filter-or": break; + case "filter-condition": break; + case "filter-set-item": break; + case "list-level-style-bullet": break; + case "list-level-style-number": break; + case "list-level-properties": break; + case "sender-firstname": + case "sender-lastname": + case "sender-initials": + case "sender-title": + case "sender-position": + case "sender-email": + case "sender-phone-private": + case "sender-fax": + case "sender-company": + case "sender-phone-work": + case "sender-street": + case "sender-city": + case "sender-postal-code": + case "sender-country": + case "sender-state-or-province": + case "author-name": + case "author-initials": + case "chapter": + case "file-name": + case "template-name": + case "sheet-name": break; + case "event-listener": break; + case "initial-creator": + case "creation-date": + case "print-date": + case "generator": + case "document-statistic": + case "user-defined": + case "editing-duration": + case "editing-cycles": break; + case "config-item": break; + case "page-number": break; + case "page-count": break; + case "time": break; + case "cell-range-source": break; + case "detective": break; + case "operation": break; + case "highlighted-range": break; + case "data-pilot-table": + case "source-cell-range": + case "source-service": + case "data-pilot-field": + case "data-pilot-level": + case "data-pilot-subtotals": + case "data-pilot-subtotal": + case "data-pilot-members": + case "data-pilot-member": + case "data-pilot-display-info": + case "data-pilot-sort-info": + case "data-pilot-layout-info": + case "data-pilot-field-reference": + case "data-pilot-groups": + case "data-pilot-group": + case "data-pilot-group-member": break; + case "rect": break; + case "dde-connection-decls": + case "dde-connection-decl": + case "dde-link": + case "dde-source": break; + case "properties": break; + case "property": break; + case "a": + if (Rn[1] !== "/") { + atag = parsexmltag(Rn[0], false); + if (!atag.href) break; + atag.Target = unescapexml(atag.href); + delete atag.href; + if (atag.Target.charAt(0) == "#" && atag.Target.indexOf(".") > -1) { + _Ref = ods_to_csf_3D(atag.Target.slice(1)); + atag.Target = "#" + _Ref[0] + "!" + _Ref[1]; + } else if (atag.Target.match(/^\.\.[\\\/]/)) atag.Target = atag.Target.slice(3); + } + break; + case "table-protection": break; + case "data-pilot-grand-total": break; + case "office-document-common-attrs": break; + default: switch (Rn[2]) { + case "dc:": + case "calcext:": + case "loext:": + case "ooo:": + case "chartooo:": + case "draw:": + case "style:": + case "chart:": + case "form:": + case "uof:": + case "表:": + case "字:": break; + default: if (opts.WTF) throw new Error(Rn); + } + } + var out = { + Sheets, + SheetNames, + Workbook: WB + }; + if (opts.bookSheets) delete out.Sheets; + return out; +} +function parse_ods(zip, opts) { + opts = opts || {}; + if (safegetzipfile(zip, "META-INF/manifest.xml")) parse_manifest(getzipdata(zip, "META-INF/manifest.xml"), opts); + var styles$1 = getzipstr(zip, "styles.xml"); + var Styles = styles$1 && parse_ods_styles(utf8read(styles$1), opts); + var content = getzipstr(zip, "content.xml"); + if (!content) throw new Error("Missing content.xml in ODS / UOF file"); + var wb = parse_content_xml(utf8read(content), opts, Styles); + if (safegetzipfile(zip, "meta.xml")) wb.Props = parse_core_props(getzipdata(zip, "meta.xml")); + wb.bookType = "ods"; + return wb; +} +function parse_fods(data, opts) { + var wb = parse_content_xml(data, opts); + wb.bookType = "fods"; + return wb; +} +function write_number_format_ods(nf, nfidx) { + var type = "number", payload = "", nopts = { "style:name": nfidx }, c$7 = "", i$7 = 0; + nf = nf.replace(/"[$]"/g, "$"); + j: { + if (nf.indexOf(";") > -1) { + console.error("Unsupported ODS Style Map exported. Using first branch of " + nf); + nf = nf.slice(0, nf.indexOf(";")); + } + if (nf == "@") { + type = "text"; + payload = ""; + break j; + } + if (nf.indexOf(/\$/) > -1) { + type = "currency"; + } + if (nf[i$7] == "\"") { + c$7 = ""; + while (nf[++i$7] != "\"" || nf[++i$7] == "\"") c$7 += nf[i$7]; + --i$7; + if (nf[i$7 + 1] == "*") { + i$7++; + payload += "" + escapexml(c$7.replace(/""/g, "\"")) + ""; + } else { + payload += "" + escapexml(c$7.replace(/""/g, "\"")) + ""; + } + nf = nf.slice(i$7 + 1); + i$7 = 0; + } + var t$6 = nf.match(/# (\?+)\/(\?+)/); + if (t$6) { + payload += writextag("number:fraction", null, { + "number:min-integer-digits": 0, + "number:min-numerator-digits": t$6[1].length, + "number:max-denominator-value": Math.max(+t$6[1].replace(/./g, "9"), +t$6[2].replace(/./g, "9")) + }); + break j; + } + if (t$6 = nf.match(/# (\?+)\/(\d+)/)) { + payload += writextag("number:fraction", null, { + "number:min-integer-digits": 0, + "number:min-numerator-digits": t$6[1].length, + "number:denominator-value": +t$6[2] + }); + break j; + } + if (t$6 = nf.match(/\b(\d+)(|\.\d+)%/)) { + type = "percentage"; + payload += writextag("number:number", null, { + "number:decimal-places": t$6[2] && t$6.length - 1 || 0, + "number:min-decimal-places": t$6[2] && t$6.length - 1 || 0, + "number:min-integer-digits": t$6[1].length + }) + "%"; + break j; + } + var has_time = false; + if ([ + "y", + "m", + "d" + ].indexOf(nf[0]) > -1) { + type = "date"; + k: for (; i$7 < nf.length; ++i$7) switch (c$7 = nf[i$7].toLowerCase()) { + case "h": + case "s": + has_time = true; + --i$7; + break k; + case "m": l: for (var h$5 = i$7 + 1; h$5 < nf.length; ++h$5) switch (nf[h$5]) { + case "y": + case "d": break l; + case "h": + case "s": + has_time = true; + --i$7; + break k; + } + case "y": + case "d": + while ((nf[++i$7] || "").toLowerCase() == c$7[0]) c$7 += c$7[0]; + --i$7; + switch (c$7) { + case "y": + case "yy": + payload += ""; + break; + case "yyy": + case "yyyy": + payload += ""; + break; + case "mmmmm": console.error("ODS has no equivalent of format |mmmmm|"); + case "m": + case "mm": + case "mmm": + case "mmmm": + payload += "= 3 ? "true" : "false") + "\"/>"; + break; + case "d": + case "dd": + payload += ""; + break; + case "ddd": + case "dddd": + payload += ""; + break; + } + break; + case "\"": + while (nf[++i$7] != "\"" || nf[++i$7] == "\"") c$7 += nf[i$7]; + --i$7; + payload += "" + escapexml(c$7.slice(1).replace(/""/g, "\"")) + ""; + break; + case "\\": + c$7 = nf[++i$7]; + payload += "" + escapexml(c$7) + ""; + break; + case "/": + case ":": + payload += "" + escapexml(c$7) + ""; + break; + default: console.error("unrecognized character " + c$7 + " in ODF format " + nf); + } + if (!has_time) break j; + nf = nf.slice(i$7 + 1); + i$7 = 0; + } + if (nf.match(/^\[?[hms]/)) { + if (type == "number") type = "time"; + if (nf.match(/\[/)) { + nf = nf.replace(/[\[\]]/g, ""); + nopts["number:truncate-on-overflow"] = "false"; + } + for (; i$7 < nf.length; ++i$7) switch (c$7 = nf[i$7].toLowerCase()) { + case "h": + case "m": + case "s": + while ((nf[++i$7] || "").toLowerCase() == c$7[0]) c$7 += c$7[0]; + --i$7; + switch (c$7) { + case "h": + case "hh": + payload += ""; + break; + case "m": + case "mm": + payload += ""; + break; + case "s": + case "ss": + if (nf[i$7 + 1] == ".") do { + c$7 += nf[i$7 + 1]; + ++i$7; + } while (nf[i$7 + 1] == "0"); + payload += ""; + break; + } + break; + case "\"": + while (nf[++i$7] != "\"" || nf[++i$7] == "\"") c$7 += nf[i$7]; + --i$7; + payload += "" + escapexml(c$7.slice(1).replace(/""/g, "\"")) + ""; + break; + case "/": + case ":": + payload += "" + escapexml(c$7) + ""; + break; + case "a": + if (nf.slice(i$7, i$7 + 3).toLowerCase() == "a/p") { + payload += ""; + i$7 += 2; + break; + } + if (nf.slice(i$7, i$7 + 5).toLowerCase() == "am/pm") { + payload += ""; + i$7 += 4; + break; + } + default: console.error("unrecognized character " + c$7 + " in ODF format " + nf); + } + break j; + } + if (nf.indexOf(/\$/) > -1) { + type = "currency"; + } + if (nf[0] == "$") { + payload += "$"; + nf = nf.slice(1); + i$7 = 0; + } + i$7 = 0; + if (nf[i$7] == "\"") { + while (nf[++i$7] != "\"" || nf[++i$7] == "\"") c$7 += nf[i$7]; + --i$7; + if (nf[i$7 + 1] == "*") { + i$7++; + payload += "" + escapexml(c$7.replace(/""/g, "\"")) + ""; + } else { + payload += "" + escapexml(c$7.replace(/""/g, "\"")) + ""; + } + nf = nf.slice(i$7 + 1); + i$7 = 0; + } + var np = nf.match(/([#0][0#,]*)(\.[0#]*|)(E[+]?0*|)/i); + if (!np || !np[0]) console.error("Could not find numeric part of " + nf); + else { + var base = np[1].replace(/,/g, ""); + payload += " -1 ? " number:grouping=\"true\"" : "") + (np[2] && " number:decimal-places=\"" + (np[2].length - 1) + "\"" || " number:decimal-places=\"0\"") + (np[3] && np[3].indexOf("+") > -1 ? " number:forced-exponent-sign=\"true\"" : "") + (np[3] ? " number:min-exponent-digits=\"" + np[3].match(/0+/)[0].length + "\"" : "") + ">" + ""; + i$7 = np.index + np[0].length; + } + if (nf[i$7] == "\"") { + c$7 = ""; + while (nf[++i$7] != "\"" || nf[++i$7] == "\"") c$7 += nf[i$7]; + --i$7; + payload += "" + escapexml(c$7.replace(/""/g, "\"")) + ""; + } + } + if (!payload) { + console.error("Could not generate ODS number format for |" + nf + "|"); + return ""; + } + return writextag("number:" + type + "-style", payload, nopts); +} +function write_names_ods(Names, SheetNames, idx) { + var scoped = []; + for (var namei = 0; namei < Names.length; ++namei) { + var name = Names[namei]; + if (!name) continue; + if (name.Sheet == (idx == -1 ? null : idx)) scoped.push(name); + } + if (!scoped.length) return ""; + return " \n" + scoped.map(function(name$1) { + var odsref = (idx == -1 ? "$" : "") + csf_to_ods_3D(name$1.Ref); + return " " + writextag("table:named-range", null, { + "table:name": name$1.Name, + "table:cell-range-address": odsref, + "table:base-cell-address": odsref.replace(/[\.][^\.]*$/, ".$A$1") + }); + }).join("\n") + "\n \n"; +} +function write_ods(wb, opts) { + if (opts.bookType == "fods") return write_content_ods(wb, opts); + var zip = zip_new(); + var f$4 = ""; + var manifest = []; + var rdf = []; + f$4 = "mimetype"; + zip_add_file(zip, f$4, "application/vnd.oasis.opendocument.spreadsheet"); + f$4 = "content.xml"; + zip_add_file(zip, f$4, write_content_ods(wb, opts)); + manifest.push([f$4, "text/xml"]); + rdf.push([f$4, "ContentFile"]); + f$4 = "styles.xml"; + zip_add_file(zip, f$4, write_styles_ods(wb, opts)); + manifest.push([f$4, "text/xml"]); + rdf.push([f$4, "StylesFile"]); + f$4 = "meta.xml"; + zip_add_file(zip, f$4, XML_HEADER + write_meta_ods()); + manifest.push([f$4, "text/xml"]); + rdf.push([f$4, "MetadataFile"]); + f$4 = "manifest.rdf"; + zip_add_file(zip, f$4, write_rdf(rdf)); + manifest.push([f$4, "application/rdf+xml"]); + f$4 = "META-INF/manifest.xml"; + zip_add_file(zip, f$4, write_manifest(manifest)); + return zip; +} +function u8_to_dataview(array) { + return new DataView(array.buffer, array.byteOffset, array.byteLength); +} +function u8str(u8) { + return typeof TextDecoder != "undefined" ? new TextDecoder().decode(u8) : utf8read(a2s(u8)); +} +function stru8(str) { + return typeof TextEncoder != "undefined" ? new TextEncoder().encode(str) : s2a(utf8write(str)); +} +function u8concat(u8a) { + var len = 0; + for (var i$7 = 0; i$7 < u8a.length; ++i$7) len += u8a[i$7].length; + var out = new Uint8Array(len); + var off = 0; + for (i$7 = 0; i$7 < u8a.length; ++i$7) { + var u8 = u8a[i$7], L$2 = u8.length; + if (L$2 < 250) { + for (var j$2 = 0; j$2 < L$2; ++j$2) out[off++] = u8[j$2]; + } else { + out.set(u8, off); + off += L$2; + } + } + return out; +} +function popcnt(x$2) { + x$2 -= x$2 >> 1 & 1431655765; + x$2 = (x$2 & 858993459) + (x$2 >> 2 & 858993459); + return (x$2 + (x$2 >> 4) & 252645135) * 16843009 >>> 24; +} +function readDecimal128LE(buf, offset) { + var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1; + var mantissa = buf[offset + 14] & 1; + for (var j$2 = offset + 13; j$2 >= offset; --j$2) mantissa = mantissa * 256 + buf[j$2]; + return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176); +} +function writeDecimal128LE(buf, offset, value) { + var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 16; + var mantissa = value / Math.pow(10, exp - 6176); + buf[offset + 15] |= exp >> 7; + buf[offset + 14] |= (exp & 127) << 1; + for (var i$7 = 0; mantissa >= 1; ++i$7, mantissa /= 256) buf[offset + i$7] = mantissa & 255; + buf[offset + 15] |= value >= 0 ? 0 : 128; +} +function parse_varint49(buf, ptr) { + var l$3 = ptr.l; + var usz = buf[l$3] & 127; + varint: if (buf[l$3++] >= 128) { + usz |= (buf[l$3] & 127) << 7; + if (buf[l$3++] < 128) break varint; + usz |= (buf[l$3] & 127) << 14; + if (buf[l$3++] < 128) break varint; + usz |= (buf[l$3] & 127) << 21; + if (buf[l$3++] < 128) break varint; + usz += (buf[l$3] & 127) * Math.pow(2, 28); + ++l$3; + if (buf[l$3++] < 128) break varint; + usz += (buf[l$3] & 127) * Math.pow(2, 35); + ++l$3; + if (buf[l$3++] < 128) break varint; + usz += (buf[l$3] & 127) * Math.pow(2, 42); + ++l$3; + if (buf[l$3++] < 128) break varint; + } + ptr.l = l$3; + return usz; +} +function write_varint49(v$3) { + var usz = new Uint8Array(7); + usz[0] = v$3 & 127; + var L$2 = 1; + sz: if (v$3 > 127) { + usz[L$2 - 1] |= 128; + usz[L$2] = v$3 >> 7 & 127; + ++L$2; + if (v$3 <= 16383) break sz; + usz[L$2 - 1] |= 128; + usz[L$2] = v$3 >> 14 & 127; + ++L$2; + if (v$3 <= 2097151) break sz; + usz[L$2 - 1] |= 128; + usz[L$2] = v$3 >> 21 & 127; + ++L$2; + if (v$3 <= 268435455) break sz; + usz[L$2 - 1] |= 128; + usz[L$2] = v$3 / 256 >>> 21 & 127; + ++L$2; + if (v$3 <= 34359738367) break sz; + usz[L$2 - 1] |= 128; + usz[L$2] = v$3 / 65536 >>> 21 & 127; + ++L$2; + if (v$3 <= 4398046511103) break sz; + usz[L$2 - 1] |= 128; + usz[L$2] = v$3 / 16777216 >>> 21 & 127; + ++L$2; + } + return usz[subarray](0, L$2); +} +function parse_packed_varints(buf) { + var ptr = { l: 0 }; + var out = []; + while (ptr.l < buf.length) out.push(parse_varint49(buf, ptr)); + return out; +} +function write_packed_varints(nums) { + return u8concat(nums.map(function(x$2) { + return write_varint49(x$2); + })); +} +function varint_to_i32(buf) { + var l$3 = 0, i32 = buf[l$3] & 127; + if (buf[l$3++] < 128) return i32; + i32 |= (buf[l$3] & 127) << 7; + if (buf[l$3++] < 128) return i32; + i32 |= (buf[l$3] & 127) << 14; + if (buf[l$3++] < 128) return i32; + i32 |= (buf[l$3] & 127) << 21; + if (buf[l$3++] < 128) return i32; + i32 |= (buf[l$3] & 15) << 28; + return i32; +} +function varint_to_u64(buf) { + var l$3 = 0, lo = buf[l$3] & 127, hi = 0; + varint: if (buf[l$3++] >= 128) { + lo |= (buf[l$3] & 127) << 7; + if (buf[l$3++] < 128) break varint; + lo |= (buf[l$3] & 127) << 14; + if (buf[l$3++] < 128) break varint; + lo |= (buf[l$3] & 127) << 21; + if (buf[l$3++] < 128) break varint; + lo |= (buf[l$3] & 127) << 28; + hi = buf[l$3] >> 4 & 7; + if (buf[l$3++] < 128) break varint; + hi |= (buf[l$3] & 127) << 3; + if (buf[l$3++] < 128) break varint; + hi |= (buf[l$3] & 127) << 10; + if (buf[l$3++] < 128) break varint; + hi |= (buf[l$3] & 127) << 17; + if (buf[l$3++] < 128) break varint; + hi |= (buf[l$3] & 127) << 24; + if (buf[l$3++] < 128) break varint; + hi |= (buf[l$3] & 127) << 31; + } + return [lo >>> 0, hi >>> 0]; +} +function parse_shallow(buf) { + var out = [], ptr = { l: 0 }; + while (ptr.l < buf.length) { + var off = ptr.l; + var num = parse_varint49(buf, ptr); + var type = num & 7; + num = num / 8 | 0; + var data; + var l$3 = ptr.l; + switch (type) { + case 0: + { + while (buf[l$3++] >= 128); + data = buf[subarray](ptr.l, l$3); + ptr.l = l$3; + } + break; + case 1: + { + data = buf[subarray](l$3, l$3 + 8); + ptr.l = l$3 + 8; + } + break; + case 2: + { + var len = parse_varint49(buf, ptr); + data = buf[subarray](ptr.l, ptr.l + len); + ptr.l += len; + } + break; + case 5: + { + data = buf[subarray](l$3, l$3 + 4); + ptr.l = l$3 + 4; + } + break; + default: throw new Error("PB Type ".concat(type, " for Field ").concat(num, " at offset ").concat(off)); + } + var v$3 = { + data, + type + }; + if (out[num] == null) out[num] = []; + out[num].push(v$3); + } + return out; +} +function write_shallow(proto) { + var out = []; + proto.forEach(function(field, idx) { + if (idx == 0) return; + field.forEach(function(item) { + if (!item.data) return; + out.push(write_varint49(idx * 8 + item.type)); + if (item.type == 2) out.push(write_varint49(item.data.length)); + out.push(item.data); + }); + }); + return u8concat(out); +} +function mappa(data, cb) { + return (data == null ? void 0 : data.map(function(d$5) { + return cb(d$5.data); + })) || []; +} +function parse_iwa_file(buf) { + var _a; + var out = [], ptr = { l: 0 }; + while (ptr.l < buf.length) { + var len = parse_varint49(buf, ptr); + var ai = parse_shallow(buf[subarray](ptr.l, ptr.l + len)); + ptr.l += len; + var res = { + id: varint_to_i32(ai[1][0].data), + messages: [] + }; + ai[2].forEach(function(b$3) { + var mi = parse_shallow(b$3.data); + var fl = varint_to_i32(mi[3][0].data); + res.messages.push({ + meta: mi, + data: buf[subarray](ptr.l, ptr.l + fl) + }); + ptr.l += fl; + }); + if ((_a = ai[3]) == null ? void 0 : _a[0]) res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0; + out.push(res); + } + return out; +} +function write_iwa_file(ias) { + var bufs = []; + ias.forEach(function(ia) { + var ai = [ + [], + [{ + data: write_varint49(ia.id), + type: 0 + }], + [] + ]; + if (ia.merge != null) ai[3] = [{ + data: write_varint49(+!!ia.merge), + type: 0 + }]; + var midata = []; + ia.messages.forEach(function(mi) { + midata.push(mi.data); + mi.meta[3] = [{ + type: 0, + data: write_varint49(mi.data.length) + }]; + ai[2].push({ + data: write_shallow(mi.meta), + type: 2 + }); + }); + var aipayload = write_shallow(ai); + bufs.push(write_varint49(aipayload.length)); + bufs.push(aipayload); + midata.forEach(function(mid) { + return bufs.push(mid); + }); + }); + return u8concat(bufs); +} +function parse_snappy_chunk(type, buf) { + if (type != 0) throw new Error("Unexpected Snappy chunk type ".concat(type)); + var ptr = { l: 0 }; + var usz = parse_varint49(buf, ptr); + var chunks = []; + var l$3 = ptr.l; + while (l$3 < buf.length) { + var tag = buf[l$3] & 3; + if (tag == 0) { + var len = buf[l$3++] >> 2; + if (len < 60) ++len; + else { + var c$7 = len - 59; + len = buf[l$3]; + if (c$7 > 1) len |= buf[l$3 + 1] << 8; + if (c$7 > 2) len |= buf[l$3 + 2] << 16; + if (c$7 > 3) len |= buf[l$3 + 3] << 24; + len >>>= 0; + len++; + l$3 += c$7; + } + chunks.push(buf[subarray](l$3, l$3 + len)); + l$3 += len; + continue; + } else { + var offset = 0, length = 0; + if (tag == 1) { + length = (buf[l$3] >> 2 & 7) + 4; + offset = (buf[l$3++] & 224) << 3; + offset |= buf[l$3++]; + } else { + length = (buf[l$3++] >> 2) + 1; + if (tag == 2) { + offset = buf[l$3] | buf[l$3 + 1] << 8; + l$3 += 2; + } else { + offset = (buf[l$3] | buf[l$3 + 1] << 8 | buf[l$3 + 2] << 16 | buf[l$3 + 3] << 24) >>> 0; + l$3 += 4; + } + } + if (offset == 0) throw new Error("Invalid offset 0"); + var j$2 = chunks.length - 1, off = offset; + while (j$2 >= 0 && off >= chunks[j$2].length) { + off -= chunks[j$2].length; + --j$2; + } + if (j$2 < 0) { + if (off == 0) off = chunks[j$2 = 0].length; + else throw new Error("Invalid offset beyond length"); + } + if (length < off) chunks.push(chunks[j$2][subarray](chunks[j$2].length - off, chunks[j$2].length - off + length)); + else { + if (off > 0) { + chunks.push(chunks[j$2][subarray](chunks[j$2].length - off)); + length -= off; + } + ++j$2; + while (length >= chunks[j$2].length) { + chunks.push(chunks[j$2]); + length -= chunks[j$2].length; + ++j$2; + } + if (length) chunks.push(chunks[j$2][subarray](0, length)); + } + if (chunks.length > 25) chunks = [u8concat(chunks)]; + } + } + var clen = 0; + for (var u8i = 0; u8i < chunks.length; ++u8i) clen += chunks[u8i].length; + if (clen != usz) throw new Error("Unexpected length: ".concat(clen, " != ").concat(usz)); + return chunks; +} +function decompress_iwa_file(buf) { + if (Array.isArray(buf)) buf = new Uint8Array(buf); + var out = []; + var l$3 = 0; + while (l$3 < buf.length) { + var t$6 = buf[l$3++]; + var len = buf[l$3] | buf[l$3 + 1] << 8 | buf[l$3 + 2] << 16; + l$3 += 3; + out.push.apply(out, parse_snappy_chunk(t$6, buf[subarray](l$3, l$3 + len))); + l$3 += len; + } + if (l$3 !== buf.length) throw new Error("data is not a valid framed stream!"); + return out.length == 1 ? out[0] : u8concat(out); +} +function compress_iwa_file(buf) { + var out = []; + var l$3 = 0; + while (l$3 < buf.length) { + var c$7 = Math.min(buf.length - l$3, 268435455); + var frame = new Uint8Array(4); + out.push(frame); + var usz = write_varint49(c$7); + var L$2 = usz.length; + out.push(usz); + if (c$7 <= 60) { + L$2++; + out.push(new Uint8Array([c$7 - 1 << 2])); + } else if (c$7 <= 256) { + L$2 += 2; + out.push(new Uint8Array([240, c$7 - 1 & 255])); + } else if (c$7 <= 65536) { + L$2 += 3; + out.push(new Uint8Array([ + 244, + c$7 - 1 & 255, + c$7 - 1 >> 8 & 255 + ])); + } else if (c$7 <= 16777216) { + L$2 += 4; + out.push(new Uint8Array([ + 248, + c$7 - 1 & 255, + c$7 - 1 >> 8 & 255, + c$7 - 1 >> 16 & 255 + ])); + } else if (c$7 <= 4294967296) { + L$2 += 5; + out.push(new Uint8Array([ + 252, + c$7 - 1 & 255, + c$7 - 1 >> 8 & 255, + c$7 - 1 >> 16 & 255, + c$7 - 1 >>> 24 & 255 + ])); + } + out.push(buf[subarray](l$3, l$3 + c$7)); + L$2 += c$7; + frame[0] = 0; + frame[1] = L$2 & 255; + frame[2] = L$2 >> 8 & 255; + frame[3] = L$2 >> 16 & 255; + l$3 += c$7; + } + return u8concat(out); +} +function numbers_format_cell(cell, t$6, flags, ofmt, nfmt) { + var _a, _b, _c, _d; + var ctype = t$6 & 255, ver = t$6 >> 8; + var fmt = ver >= 5 ? nfmt : ofmt; + dur: if (flags & (ver > 4 ? 8 : 4) && cell.t == "n" && ctype == 7) { + var dstyle = ((_a = fmt[7]) == null ? void 0 : _a[0]) ? varint_to_i32(fmt[7][0].data) : -1; + if (dstyle == -1) break dur; + var dmin = ((_b = fmt[15]) == null ? void 0 : _b[0]) ? varint_to_i32(fmt[15][0].data) : -1; + var dmax = ((_c = fmt[16]) == null ? void 0 : _c[0]) ? varint_to_i32(fmt[16][0].data) : -1; + var auto = ((_d = fmt[40]) == null ? void 0 : _d[0]) ? varint_to_i32(fmt[40][0].data) : -1; + var d$5 = cell.v, dd = d$5; + autodur: if (auto) { + if (d$5 == 0) { + dmin = dmax = 2; + break autodur; + } + if (d$5 >= 604800) dmin = 1; + else if (d$5 >= 86400) dmin = 2; + else if (d$5 >= 3600) dmin = 4; + else if (d$5 >= 60) dmin = 8; + else if (d$5 >= 1) dmin = 16; + else dmin = 32; + if (Math.floor(d$5) != d$5) dmax = 32; + else if (d$5 % 60) dmax = 16; + else if (d$5 % 3600) dmax = 8; + else if (d$5 % 86400) dmax = 4; + else if (d$5 % 604800) dmax = 2; + if (dmax < dmin) dmax = dmin; + } + if (dmin == -1 || dmax == -1) break dur; + var dstr = [], zstr = []; + if (dmin == 1) { + dd = d$5 / 604800; + if (dmax == 1) { + zstr.push("d\"d\""); + } else { + dd |= 0; + d$5 -= 604800 * dd; + } + dstr.push(dd + (dstyle == 2 ? " week" + (dd == 1 ? "" : "s") : dstyle == 1 ? "w" : "")); + } + if (dmin <= 2 && dmax >= 2) { + dd = d$5 / 86400; + if (dmax > 2) { + dd |= 0; + d$5 -= 86400 * dd; + } + zstr.push("d\"d\""); + dstr.push(dd + (dstyle == 2 ? " day" + (dd == 1 ? "" : "s") : dstyle == 1 ? "d" : "")); + } + if (dmin <= 4 && dmax >= 4) { + dd = d$5 / 3600; + if (dmax > 4) { + dd |= 0; + d$5 -= 3600 * dd; + } + zstr.push((dmin >= 4 ? "[h]" : "h") + "\"h\""); + dstr.push(dd + (dstyle == 2 ? " hour" + (dd == 1 ? "" : "s") : dstyle == 1 ? "h" : "")); + } + if (dmin <= 8 && dmax >= 8) { + dd = d$5 / 60; + if (dmax > 8) { + dd |= 0; + d$5 -= 60 * dd; + } + zstr.push((dmin >= 8 ? "[m]" : "m") + "\"m\""); + if (dstyle == 0) dstr.push((dmin == 8 && dmax == 8 || dd >= 10 ? "" : "0") + dd); + else dstr.push(dd + (dstyle == 2 ? " minute" + (dd == 1 ? "" : "s") : dstyle == 1 ? "m" : "")); + } + if (dmin <= 16 && dmax >= 16) { + dd = d$5; + if (dmax > 16) { + dd |= 0; + d$5 -= dd; + } + zstr.push((dmin >= 16 ? "[s]" : "s") + "\"s\""); + if (dstyle == 0) dstr.push((dmax == 16 && dmin == 16 || dd >= 10 ? "" : "0") + dd); + else dstr.push(dd + (dstyle == 2 ? " second" + (dd == 1 ? "" : "s") : dstyle == 1 ? "s" : "")); + } + if (dmax >= 32) { + dd = Math.round(1e3 * d$5); + if (dmin < 32) zstr.push(".000\"ms\""); + if (dstyle == 0) dstr.push((dd >= 100 ? "" : dd >= 10 ? "0" : "00") + dd); + else dstr.push(dd + (dstyle == 2 ? " millisecond" + (dd == 1 ? "" : "s") : dstyle == 1 ? "ms" : "")); + } + cell.w = dstr.join(dstyle == 0 ? ":" : " "); + cell.z = zstr.join(dstyle == 0 ? "\":\"" : " "); + if (dstyle == 0) cell.w = cell.w.replace(/:(\d\d\d)$/, ".$1"); + } +} +function parse_old_storage(buf, lut, v$3, opts) { + var dv = u8_to_dataview(buf); + var flags = dv.getUint32(4, true); + var ridx = -1, sidx = -1, zidx = -1, ieee = NaN, dc = 0, dt = new Date(Date.UTC(2001, 0, 1)); + var doff = v$3 > 1 ? 12 : 8; + if (flags & 2) { + zidx = dv.getUint32(doff, true); + doff += 4; + } + doff += popcnt(flags & (v$3 > 1 ? 3468 : 396)) * 4; + if (flags & 512) { + ridx = dv.getUint32(doff, true); + doff += 4; + } + doff += popcnt(flags & (v$3 > 1 ? 12288 : 4096)) * 4; + if (flags & 16) { + sidx = dv.getUint32(doff, true); + doff += 4; + } + if (flags & 32) { + ieee = dv.getFloat64(doff, true); + doff += 8; + } + if (flags & 64) { + dt.setTime(dt.getTime() + (dc = dv.getFloat64(doff, true)) * 1e3); + doff += 8; + } + if (v$3 > 1) { + flags = dv.getUint32(8, true) >>> 16; + if (flags & 255) { + if (zidx == -1) zidx = dv.getUint32(doff, true); + doff += 4; + } + } + var ret; + var t$6 = buf[v$3 >= 4 ? 1 : 2]; + switch (t$6) { + case 0: return void 0; + case 2: + ret = { + t: "n", + v: ieee + }; + break; + case 3: + ret = { + t: "s", + v: lut.sst[sidx] + }; + break; + case 5: + { + if (opts == null ? void 0 : opts.cellDates) ret = { + t: "d", + v: dt + }; + else ret = { + t: "n", + v: dc / 86400 + 35430, + z: table_fmt[14] + }; + } + break; + case 6: + ret = { + t: "b", + v: ieee > 0 + }; + break; + case 7: + ret = { + t: "n", + v: ieee + }; + break; + case 8: + ret = { + t: "e", + v: 0 + }; + break; + case 9: + { + if (ridx > -1) { + var rts = lut.rsst[ridx]; + ret = { + t: "s", + v: rts.v + }; + if (rts.l) ret.l = { Target: rts.l }; + } else throw new Error("Unsupported cell type ".concat(buf[subarray](0, 4))); + } + break; + default: throw new Error("Unsupported cell type ".concat(buf[subarray](0, 4))); + } + if (zidx > -1) numbers_format_cell(ret, t$6 | v$3 << 8, flags, lut.ofmt[zidx], lut.nfmt[zidx]); + if (t$6 == 7) ret.v /= 86400; + return ret; +} +function parse_new_storage(buf, lut, opts) { + var dv = u8_to_dataview(buf); + var flags = dv.getUint32(4, true); + var fields = dv.getUint32(8, true); + var doff = 12; + var ridx = -1, sidx = -1, zidx = -1, d128 = NaN, ieee = NaN, dc = 0, dt = new Date(Date.UTC(2001, 0, 1)), eidx = -1, fidx = -1; + if (fields & 1) { + d128 = readDecimal128LE(buf, doff); + doff += 16; + } + if (fields & 2) { + ieee = dv.getFloat64(doff, true); + doff += 8; + } + if (fields & 4) { + dt.setTime(dt.getTime() + (dc = dv.getFloat64(doff, true)) * 1e3); + doff += 8; + } + if (fields & 8) { + sidx = dv.getUint32(doff, true); + doff += 4; + } + if (fields & 16) { + ridx = dv.getUint32(doff, true); + doff += 4; + } + doff += popcnt(fields & 480) * 4; + if (fields & 512) { + fidx = dv.getUint32(doff, true); + doff += 4; + } + doff += popcnt(fields & 1024) * 4; + if (fields & 2048) { + eidx = dv.getUint32(doff, true); + doff += 4; + } + var ret; + var t$6 = buf[1]; + switch (t$6) { + case 0: + ret = { t: "z" }; + break; + case 2: + ret = { + t: "n", + v: d128 + }; + break; + case 3: + ret = { + t: "s", + v: lut.sst[sidx] + }; + break; + case 5: + { + if (opts == null ? void 0 : opts.cellDates) ret = { + t: "d", + v: dt + }; + else ret = { + t: "n", + v: dc / 86400 + 35430, + z: table_fmt[14] + }; + } + break; + case 6: + ret = { + t: "b", + v: ieee > 0 + }; + break; + case 7: + ret = { + t: "n", + v: ieee + }; + break; + case 8: + ret = { + t: "e", + v: 0 + }; + break; + case 9: + { + if (ridx > -1) { + var rts = lut.rsst[ridx]; + ret = { + t: "s", + v: rts.v + }; + if (rts.l) ret.l = { Target: rts.l }; + } else throw new Error("Unsupported cell type ".concat(buf[1], " : ").concat(fields & 31, " : ").concat(buf[subarray](0, 4))); + } + break; + case 10: + ret = { + t: "n", + v: d128 + }; + break; + default: throw new Error("Unsupported cell type ".concat(buf[1], " : ").concat(fields & 31, " : ").concat(buf[subarray](0, 4))); + } + doff += popcnt(fields & 4096) * 4; + if (fields & 516096) { + if (zidx == -1) zidx = dv.getUint32(doff, true); + doff += 4; + } + if (fields & 524288) { + var cmntidx = dv.getUint32(doff, true); + doff += 4; + if (lut.cmnt[cmntidx]) ret.c = iwa_to_s5s_comment(lut.cmnt[cmntidx]); + } + if (zidx > -1) numbers_format_cell(ret, t$6 | 5 << 8, fields >> 13, lut.ofmt[zidx], lut.nfmt[zidx]); + if (t$6 == 7) ret.v /= 86400; + return ret; +} +function write_new_storage(cell, lut) { + var out = new Uint8Array(32), dv = u8_to_dataview(out), l$3 = 12, fields = 0; + out[0] = 5; + switch (cell.t) { + case "n": + if (cell.z && fmt_is_date(cell.z)) { + out[1] = 5; + dv.setFloat64(l$3, (numdate(cell.v + 1462).getTime() - Date.UTC(2001, 0, 1)) / 1e3, true); + fields |= 4; + l$3 += 8; + break; + } else { + out[1] = 2; + writeDecimal128LE(out, l$3, cell.v); + fields |= 1; + l$3 += 16; + } + break; + case "b": + out[1] = 6; + dv.setFloat64(l$3, cell.v ? 1 : 0, true); + fields |= 2; + l$3 += 8; + break; + case "s": + { + var s$5 = cell.v == null ? "" : String(cell.v); + if (cell.l) { + var irsst = lut.rsst.findIndex(function(v$3) { + var _a; + return v$3.v == s$5 && v$3.l == ((_a = cell.l) == null ? void 0 : _a.Target); + }); + if (irsst == -1) lut.rsst[irsst = lut.rsst.length] = { + v: s$5, + l: cell.l.Target + }; + out[1] = 9; + dv.setUint32(l$3, irsst, true); + fields |= 16; + l$3 += 4; + } else { + var isst = lut.sst.indexOf(s$5); + if (isst == -1) lut.sst[isst = lut.sst.length] = s$5; + out[1] = 3; + dv.setUint32(l$3, isst, true); + fields |= 8; + l$3 += 4; + } + } + break; + case "d": + out[1] = 5; + dv.setFloat64(l$3, (cell.v.getTime() - Date.UTC(2001, 0, 1)) / 1e3, true); + fields |= 4; + l$3 += 8; + break; + case "z": + out[1] = 0; + break; + default: throw "unsupported cell type " + cell.t; + } + if (cell.c) { + lut.cmnt.push(s5s_to_iwa_comment(cell.c)); + dv.setUint32(l$3, lut.cmnt.length - 1, true); + fields |= 524288; + l$3 += 4; + } + dv.setUint32(8, fields, true); + return out[subarray](0, l$3); +} +function write_old_storage(cell, lut) { + var out = new Uint8Array(32), dv = u8_to_dataview(out), l$3 = 12, fields = 0, s$5 = ""; + out[0] = 4; + switch (cell.t) { + case "n": break; + case "b": break; + case "s": + { + s$5 = cell.v == null ? "" : String(cell.v); + if (cell.l) { + var irsst = lut.rsst.findIndex(function(v$3) { + var _a; + return v$3.v == s$5 && v$3.l == ((_a = cell.l) == null ? void 0 : _a.Target); + }); + if (irsst == -1) lut.rsst[irsst = lut.rsst.length] = { + v: s$5, + l: cell.l.Target + }; + out[1] = 9; + dv.setUint32(l$3, irsst, true); + fields |= 512; + l$3 += 4; + } else {} + } + break; + case "d": break; + case "e": break; + case "z": break; + default: throw "unsupported cell type " + cell.t; + } + if (cell.c) { + dv.setUint32(l$3, lut.cmnt.length - 1, true); + fields |= 4096; + l$3 += 4; + } + switch (cell.t) { + case "n": + out[1] = 2; + dv.setFloat64(l$3, cell.v, true); + fields |= 32; + l$3 += 8; + break; + case "b": + out[1] = 6; + dv.setFloat64(l$3, cell.v ? 1 : 0, true); + fields |= 32; + l$3 += 8; + break; + case "s": + { + s$5 = cell.v == null ? "" : String(cell.v); + if (cell.l) {} else { + var isst = lut.sst.indexOf(s$5); + if (isst == -1) lut.sst[isst = lut.sst.length] = s$5; + out[1] = 3; + dv.setUint32(l$3, isst, true); + fields |= 16; + l$3 += 4; + } + } + break; + case "d": + out[1] = 5; + dv.setFloat64(l$3, (cell.v.getTime() - Date.UTC(2001, 0, 1)) / 1e3, true); + fields |= 64; + l$3 += 8; + break; + case "z": + out[1] = 0; + break; + default: throw "unsupported cell type " + cell.t; + } + dv.setUint32(8, fields, true); + return out[subarray](0, l$3); +} +function parse_cell_storage(buf, lut, opts) { + switch (buf[0]) { + case 0: + case 1: + case 2: + case 3: + case 4: return parse_old_storage(buf, lut, buf[0], opts); + case 5: return parse_new_storage(buf, lut, opts); + default: throw new Error("Unsupported payload version ".concat(buf[0])); + } +} +function parse_TSP_Reference(buf) { + var pb = parse_shallow(buf); + return varint_to_i32(pb[1][0].data); +} +function write_TSP_Reference(idx) { + return write_shallow([[], [{ + type: 0, + data: write_varint49(idx) + }]]); +} +function numbers_add_oref(iwa, ref) { + var _a; + var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : []; + var orefidx = orefs.indexOf(ref); + if (orefidx == -1) { + orefs.push(ref); + iwa.messages[0].meta[5] = [{ + type: 2, + data: write_packed_varints(orefs) + }]; + } +} +function numbers_del_oref(iwa, ref) { + var _a; + var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : []; + iwa.messages[0].meta[5] = [{ + type: 2, + data: write_packed_varints(orefs.filter(function(r$10) { + return r$10 != ref; + })) + }]; +} +function parse_TST_TableDataList(M$3, root) { + var pb = parse_shallow(root.data); + var type = varint_to_i32(pb[1][0].data); + var entries = pb[3]; + var data = []; + (entries || []).forEach(function(entry) { + var _a, _b; + var le$1 = parse_shallow(entry.data); + if (!le$1[1]) return; + var key = varint_to_i32(le$1[1][0].data) >>> 0; + switch (type) { + case 1: + data[key] = u8str(le$1[3][0].data); + break; + case 8: + { + var rt = M$3[parse_TSP_Reference(le$1[9][0].data)][0]; + var rtp = parse_shallow(rt.data); + var rtpref = M$3[parse_TSP_Reference(rtp[1][0].data)][0]; + var mtype = varint_to_i32(rtpref.meta[1][0].data); + if (mtype != 2001) throw new Error("2000 unexpected reference to ".concat(mtype)); + var tswpsa = parse_shallow(rtpref.data); + var richtext = { v: tswpsa[3].map(function(x$2) { + return u8str(x$2.data); + }).join("") }; + data[key] = richtext; + sfields: if ((_a = tswpsa == null ? void 0 : tswpsa[11]) == null ? void 0 : _a[0]) { + var smartfields = (_b = parse_shallow(tswpsa[11][0].data)) == null ? void 0 : _b[1]; + if (!smartfields) break sfields; + smartfields.forEach(function(sf) { + var _a2, _b2, _c; + var attr = parse_shallow(sf.data); + if ((_a2 = attr[2]) == null ? void 0 : _a2[0]) { + var obj = M$3[parse_TSP_Reference((_b2 = attr[2]) == null ? void 0 : _b2[0].data)][0]; + var objtype = varint_to_i32(obj.meta[1][0].data); + switch (objtype) { + case 2032: + var hlink = parse_shallow(obj.data); + if (((_c = hlink == null ? void 0 : hlink[2]) == null ? void 0 : _c[0]) && !richtext.l) richtext.l = u8str(hlink[2][0].data); + break; + case 2039: break; + default: console.log("unrecognized ObjectAttribute type ".concat(objtype)); + } + } + }); + } + } + break; + case 2: + data[key] = parse_shallow(le$1[6][0].data); + break; + case 3: + data[key] = parse_shallow(le$1[5][0].data); + break; + case 10: + { + var cs = M$3[parse_TSP_Reference(le$1[10][0].data)][0]; + data[key] = parse_TSD_CommentStorageArchive(M$3, cs.data); + } + break; + default: throw type; + } + }); + return data; +} +function parse_TST_TileRowInfo(u8, type) { + var _a, _b, _c, _d, _e$1, _f, _g, _h, _i$1, _j, _k, _l, _m, _n; + var pb = parse_shallow(u8); + var R$1 = varint_to_i32(pb[1][0].data) >>> 0; + var cnt = varint_to_i32(pb[2][0].data) >>> 0; + var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false; + var used_storage_u8, used_storage; + if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) { + used_storage_u8 = (_f = (_e$1 = pb[7]) == null ? void 0 : _e$1[0]) == null ? void 0 : _f.data; + used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data; + } else if (((_j = (_i$1 = pb[4]) == null ? void 0 : _i$1[0]) == null ? void 0 : _j.data) && type != 1) { + used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data; + used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data; + } else throw "NUMBERS Tile missing ".concat(type, " cell storage"); + var width = wide_offsets ? 4 : 1; + var used_storage_offsets = u8_to_dataview(used_storage_u8); + var offsets = []; + for (var C$2 = 0; C$2 < used_storage_u8.length / 2; ++C$2) { + var off = used_storage_offsets.getUint16(C$2 * 2, true); + if (off < 65535) offsets.push([C$2, off]); + } + if (offsets.length != cnt) throw "Expected ".concat(cnt, " cells, found ").concat(offsets.length); + var cells = []; + for (C$2 = 0; C$2 < offsets.length - 1; ++C$2) cells[offsets[C$2][0]] = used_storage[subarray](offsets[C$2][1] * width, offsets[C$2 + 1][1] * width); + if (offsets.length >= 1) cells[offsets[offsets.length - 1][0]] = used_storage[subarray](offsets[offsets.length - 1][1] * width); + return { + R: R$1, + cells + }; +} +function parse_TST_Tile(M$3, root) { + var _a; + var pb = parse_shallow(root.data); + var storage = -1; + if ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) { + if (varint_to_i32(pb[7][0].data) >>> 0) storage = 1; + else storage = 0; + } + var ri = mappa(pb[5], function(u8) { + return parse_TST_TileRowInfo(u8, storage); + }); + return { + nrows: varint_to_i32(pb[4][0].data) >>> 0, + data: ri.reduce(function(acc, x$2) { + if (!acc[x$2.R]) acc[x$2.R] = []; + x$2.cells.forEach(function(cell, C$2) { + if (acc[x$2.R][C$2]) throw new Error("Duplicate cell r=".concat(x$2.R, " c=").concat(C$2)); + acc[x$2.R][C$2] = cell; + }); + return acc; + }, []) + }; +} +function parse_TSD_CommentStorageArchive(M$3, data) { + var _a, _b, _c, _d, _e$1, _f, _g, _h, _i$1, _j; + var out = { + t: "", + a: "" + }; + var csp$1 = parse_shallow(data); + if ((_b = (_a = csp$1 == null ? void 0 : csp$1[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) out.t = u8str((_d = (_c = csp$1 == null ? void 0 : csp$1[1]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) || ""; + if ((_f = (_e$1 = csp$1 == null ? void 0 : csp$1[3]) == null ? void 0 : _e$1[0]) == null ? void 0 : _f.data) { + var as = M$3[parse_TSP_Reference((_h = (_g = csp$1 == null ? void 0 : csp$1[3]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data)][0]; + var asp = parse_shallow(as.data); + if ((_j = (_i$1 = asp[1]) == null ? void 0 : _i$1[0]) == null ? void 0 : _j.data) out.a = u8str(asp[1][0].data); + } + if (csp$1 == null ? void 0 : csp$1[4]) { + out.replies = []; + csp$1[4].forEach(function(pi) { + var cs = M$3[parse_TSP_Reference(pi.data)][0]; + out.replies.push(parse_TSD_CommentStorageArchive(M$3, cs.data)); + }); + } + return out; +} +function iwa_to_s5s_comment(iwa) { + var out = []; + out.push({ + t: iwa.t || "", + a: iwa.a, + T: iwa.replies && iwa.replies.length > 0 + }); + if (iwa.replies) iwa.replies.forEach(function(reply) { + out.push({ + t: reply.t || "", + a: reply.a, + T: true + }); + }); + return out; +} +function s5s_to_iwa_comment(s5s) { + var out = { + a: "", + t: "", + replies: [] + }; + for (var i$7 = 0; i$7 < s5s.length; ++i$7) { + if (i$7 == 0) { + out.a = s5s[i$7].a; + out.t = s5s[i$7].t; + } else { + out.replies.push({ + a: s5s[i$7].a, + t: s5s[i$7].t + }); + } + } + return out; +} +function parse_TST_TableModelArchive(M$3, root, ws, opts) { + var _a, _b, _c, _d, _e$1, _f, _g, _h, _i$1, _j, _k, _l, _m, _n; + var pb = parse_shallow(root.data); + var range = { + s: { + r: 0, + c: 0 + }, + e: { + r: 0, + c: 0 + } + }; + range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1; + if (range.e.r < 0) throw new Error("Invalid row varint ".concat(pb[6][0].data)); + range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1; + if (range.e.c < 0) throw new Error("Invalid col varint ".concat(pb[7][0].data)); + ws["!ref"] = encode_range(range); + var dense = ws["!data"] != null, dws = ws; + var store = parse_shallow(pb[4][0].data); + var lut = numbers_lut_new(); + if ((_a = store[4]) == null ? void 0 : _a[0]) lut.sst = parse_TST_TableDataList(M$3, M$3[parse_TSP_Reference(store[4][0].data)][0]); + if ((_b = store[6]) == null ? void 0 : _b[0]) lut.fmla = parse_TST_TableDataList(M$3, M$3[parse_TSP_Reference(store[6][0].data)][0]); + if ((_c = store[11]) == null ? void 0 : _c[0]) lut.ofmt = parse_TST_TableDataList(M$3, M$3[parse_TSP_Reference(store[11][0].data)][0]); + if ((_d = store[12]) == null ? void 0 : _d[0]) lut.ferr = parse_TST_TableDataList(M$3, M$3[parse_TSP_Reference(store[12][0].data)][0]); + if ((_e$1 = store[17]) == null ? void 0 : _e$1[0]) lut.rsst = parse_TST_TableDataList(M$3, M$3[parse_TSP_Reference(store[17][0].data)][0]); + if ((_f = store[19]) == null ? void 0 : _f[0]) lut.cmnt = parse_TST_TableDataList(M$3, M$3[parse_TSP_Reference(store[19][0].data)][0]); + if ((_g = store[22]) == null ? void 0 : _g[0]) lut.nfmt = parse_TST_TableDataList(M$3, M$3[parse_TSP_Reference(store[22][0].data)][0]); + var tile = parse_shallow(store[3][0].data); + var _R = 0; + if (!((_h = store[9]) == null ? void 0 : _h[0])) throw "NUMBERS file missing row tree"; + var rtt = parse_shallow(store[9][0].data)[1].map(function(p$3) { + return parse_shallow(p$3.data); + }); + rtt.forEach(function(kv) { + _R = varint_to_i32(kv[1][0].data); + var tidx = varint_to_i32(kv[2][0].data); + var t$6 = tile[1][tidx]; + if (!t$6) throw "NUMBERS missing tile " + tidx; + var tl = parse_shallow(t$6.data); + var ref2 = M$3[parse_TSP_Reference(tl[2][0].data)][0]; + var mtype2 = varint_to_i32(ref2.meta[1][0].data); + if (mtype2 != 6002) throw new Error("6001 unexpected reference to ".concat(mtype2)); + var _tile = parse_TST_Tile(M$3, ref2); + _tile.data.forEach(function(row, R$1) { + row.forEach(function(buf, C$2) { + var res = parse_cell_storage(buf, lut, opts); + if (res) { + if (dense) { + if (!dws["!data"][_R + R$1]) dws["!data"][_R + R$1] = []; + dws["!data"][_R + R$1][C$2] = res; + } else { + ws[encode_col(C$2) + encode_row(_R + R$1)] = res; + } + } + }); + }); + _R += _tile.nrows; + }); + if ((_i$1 = store[13]) == null ? void 0 : _i$1[0]) { + var ref = M$3[parse_TSP_Reference(store[13][0].data)][0]; + var mtype = varint_to_i32(ref.meta[1][0].data); + if (mtype != 6144) throw new Error("Expected merge type 6144, found ".concat(mtype)); + ws["!merges"] = (_j = parse_shallow(ref.data)) == null ? void 0 : _j[1].map(function(pi) { + var merge = parse_shallow(pi.data); + var origin = u8_to_dataview(parse_shallow(merge[1][0].data)[1][0].data), size = u8_to_dataview(parse_shallow(merge[2][0].data)[1][0].data); + return { + s: { + r: origin.getUint16(0, true), + c: origin.getUint16(2, true) + }, + e: { + r: origin.getUint16(0, true) + size.getUint16(0, true) - 1, + c: origin.getUint16(2, true) + size.getUint16(2, true) - 1 + } + }; + }); + } + if (!((_k = ws["!merges"]) == null ? void 0 : _k.length) && ((_l = pb[47]) == null ? void 0 : _l[0])) { + var merge_owner = parse_shallow(pb[47][0].data); + if ((_m = merge_owner[2]) == null ? void 0 : _m[0]) { + var formula_store = parse_shallow(merge_owner[2][0].data); + if ((_n = formula_store[3]) == null ? void 0 : _n[0]) { + ws["!merges"] = mappa(formula_store[3], function(u$4) { + var _a2, _b2, _c2, _d2, _e2; + var formula_pair = parse_shallow(u$4); + var formula = parse_shallow(formula_pair[2][0].data); + var AST_node_array = parse_shallow(formula[1][0].data); + if (!((_a2 = AST_node_array[1]) == null ? void 0 : _a2[0])) return; + var AST_node0 = parse_shallow(AST_node_array[1][0].data); + var AST_node_type = varint_to_i32(AST_node0[1][0].data); + if (AST_node_type != 67) return; + var AST_colon_tract = parse_shallow(AST_node0[40][0].data); + if (!((_b2 = AST_colon_tract[3]) == null ? void 0 : _b2[0]) || !((_c2 = AST_colon_tract[4]) == null ? void 0 : _c2[0])) return; + var colrange = parse_shallow(AST_colon_tract[3][0].data); + var rowrange = parse_shallow(AST_colon_tract[4][0].data); + var c$7 = varint_to_i32(colrange[1][0].data); + var C$2 = ((_d2 = colrange[2]) == null ? void 0 : _d2[0]) ? varint_to_i32(colrange[2][0].data) : c$7; + var r$10 = varint_to_i32(rowrange[1][0].data); + var R$1 = ((_e2 = rowrange[2]) == null ? void 0 : _e2[0]) ? varint_to_i32(rowrange[2][0].data) : r$10; + return { + s: { + r: r$10, + c: c$7 + }, + e: { + r: R$1, + c: C$2 + } + }; + }).filter(function(x$2) { + return x$2 != null; + }); + } + } + } +} +function parse_TST_TableInfoArchive(M$3, root, opts) { + var pb = parse_shallow(root.data); + var out = { "!ref": "A1" }; + if (opts == null ? void 0 : opts.dense) out["!data"] = []; + var tableref = M$3[parse_TSP_Reference(pb[2][0].data)]; + var mtype = varint_to_i32(tableref[0].meta[1][0].data); + if (mtype != 6001) throw new Error("6000 unexpected reference to ".concat(mtype)); + parse_TST_TableModelArchive(M$3, tableref[0], out, opts); + return out; +} +function parse_TN_SheetArchive(M$3, root, opts) { + var _a; + var pb = parse_shallow(root.data); + var out = { + name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : "", + sheets: [] + }; + var shapeoffs = mappa(pb[2], parse_TSP_Reference); + shapeoffs.forEach(function(off) { + M$3[off].forEach(function(m$3) { + var mtype = varint_to_i32(m$3.meta[1][0].data); + if (mtype == 6e3) out.sheets.push(parse_TST_TableInfoArchive(M$3, m$3, opts)); + }); + }); + return out; +} +function parse_TN_DocumentArchive(M$3, root, opts) { + var _a; + var out = book_new(); + out.Workbook = { WBProps: { date1904: true } }; + var pb = parse_shallow(root.data); + if ((_a = pb[2]) == null ? void 0 : _a[0]) throw new Error("Keynote presentations are not supported"); + var sheetoffs = mappa(pb[1], parse_TSP_Reference); + sheetoffs.forEach(function(off) { + M$3[off].forEach(function(m$3) { + var mtype = varint_to_i32(m$3.meta[1][0].data); + if (mtype == 2) { + var root2 = parse_TN_SheetArchive(M$3, m$3, opts); + root2.sheets.forEach(function(sheet, idx) { + book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + "_" + idx, true); + }); + } + }); + }); + if (out.SheetNames.length == 0) throw new Error("Empty NUMBERS file"); + out.bookType = "numbers"; + return out; +} +function parse_numbers_iwa(cfb, opts) { + var _a, _b, _c, _d, _e$1, _f, _g; + var M$3 = {}, indices = []; + cfb.FullPaths.forEach(function(p$3) { + if (p$3.match(/\.iwpv2/)) throw new Error("Unsupported password protection"); + }); + cfb.FileIndex.forEach(function(s$5) { + if (!s$5.name.match(/\.iwa$/)) return; + if (s$5.content[0] != 0) return; + var o$10; + try { + o$10 = decompress_iwa_file(s$5.content); + } catch (e$10) { + return console.log("?? " + s$5.content.length + " " + (e$10.message || e$10)); + } + var packets; + try { + packets = parse_iwa_file(o$10); + } catch (e$10) { + return console.log("## " + (e$10.message || e$10)); + } + packets.forEach(function(packet) { + M$3[packet.id] = packet.messages; + indices.push(packet.id); + }); + }); + if (!indices.length) throw new Error("File has no messages"); + if (((_c = (_b = (_a = M$3 == null ? void 0 : M$3[1]) == null ? void 0 : _a[0].meta) == null ? void 0 : _b[1]) == null ? void 0 : _c[0].data) && varint_to_i32(M$3[1][0].meta[1][0].data) == 1e4) throw new Error("Pages documents are not supported"); + var docroot = ((_g = (_f = (_e$1 = (_d = M$3 == null ? void 0 : M$3[1]) == null ? void 0 : _d[0]) == null ? void 0 : _e$1.meta) == null ? void 0 : _f[1]) == null ? void 0 : _g[0].data) && varint_to_i32(M$3[1][0].meta[1][0].data) == 1 && M$3[1][0]; + if (!docroot) indices.forEach(function(idx) { + M$3[idx].forEach(function(iwam) { + var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0; + if (mtype == 1) { + if (!docroot) docroot = iwam; + else throw new Error("Document has multiple roots"); + } + }); + }); + if (!docroot) throw new Error("Cannot find Document root"); + return parse_TN_DocumentArchive(M$3, docroot, opts); +} +function write_TST_TileRowInfo(data, lut, wide) { + var _a, _b, _c; + var tri = [ + [], + [{ + type: 0, + data: write_varint49(0) + }], + [{ + type: 0, + data: write_varint49(0) + }], + [{ + type: 2, + data: new Uint8Array([]) + }], + [{ + type: 2, + data: new Uint8Array(Array.from({ length: 510 }, function() { + return 255; + })) + }], + [{ + type: 0, + data: write_varint49(5) + }], + [{ + type: 2, + data: new Uint8Array([]) + }], + [{ + type: 2, + data: new Uint8Array(Array.from({ length: 510 }, function() { + return 255; + })) + }], + [{ + type: 0, + data: write_varint49(1) + }] + ]; + if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0])) throw "Mutation only works on post-BNC storages!"; + var cnt = 0; + if (tri[7][0].data.length < 2 * data.length) { + var new_7 = new Uint8Array(2 * data.length); + new_7.set(tri[7][0].data); + tri[7][0].data = new_7; + } + if (tri[4][0].data.length < 2 * data.length) { + var new_4 = new Uint8Array(2 * data.length); + new_4.set(tri[4][0].data); + tri[4][0].data = new_4; + } + var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = []; + var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = []; + var width = wide ? 4 : 1; + for (var C$2 = 0; C$2 < data.length; ++C$2) { + if (data[C$2] == null || data[C$2].t == "z" && !((_c = data[C$2].c) == null ? void 0 : _c.length) || data[C$2].t == "e") { + dv.setUint16(C$2 * 2, 65535, true); + _dv.setUint16(C$2 * 2, 65535); + continue; + } + dv.setUint16(C$2 * 2, last_offset / width, true); + _dv.setUint16(C$2 * 2, _last_offset / width, true); + var celload, _celload; + switch (data[C$2].t) { + case "d": + if (data[C$2].v instanceof Date) { + celload = write_new_storage(data[C$2], lut); + _celload = write_old_storage(data[C$2], lut); + break; + } + celload = write_new_storage(data[C$2], lut); + _celload = write_old_storage(data[C$2], lut); + break; + case "s": + case "n": + case "b": + case "z": + celload = write_new_storage(data[C$2], lut); + _celload = write_old_storage(data[C$2], lut); + break; + default: throw new Error("Unsupported value " + data[C$2]); + } + cell_storage.push(celload); + last_offset += celload.length; + { + _cell_storage.push(_celload); + _last_offset += _celload.length; + } + ++cnt; + } + tri[2][0].data = write_varint49(cnt); + tri[5][0].data = write_varint49(5); + for (; C$2 < tri[7][0].data.length / 2; ++C$2) { + dv.setUint16(C$2 * 2, 65535, true); + _dv.setUint16(C$2 * 2, 65535, true); + } + tri[6][0].data = u8concat(cell_storage); + tri[3][0].data = u8concat(_cell_storage); + tri[8] = [{ + type: 0, + data: write_varint49(wide ? 1 : 0) + }]; + return tri; +} +function write_iwam(type, payload) { + return { + meta: [[], [{ + type: 0, + data: write_varint49(type) + }]], + data: payload + }; +} +function get_unique_msgid(dep, dependents) { + if (!dependents.last) dependents.last = 927262; + for (var i$7 = dependents.last; i$7 < 2e6; ++i$7) if (!dependents[i$7]) { + dependents[dependents.last = i$7] = dep; + return i$7; + } + throw new Error("Too many messages"); +} +function build_numbers_deps(cfb) { + var dependents = {}; + var indices = []; + cfb.FileIndex.map(function(fi, idx) { + return [fi, cfb.FullPaths[idx]]; + }).forEach(function(row) { + var fi = row[0], fp = row[1]; + if (fi.type != 2) return; + if (!fi.name.match(/\.iwa/)) return; + if (fi.content[0] != 0) return; + parse_iwa_file(decompress_iwa_file(fi.content)).forEach(function(packet) { + indices.push(packet.id); + dependents[packet.id] = { + deps: [], + location: fp, + type: varint_to_i32(packet.messages[0].meta[1][0].data) + }; + }); + }); + cfb.FileIndex.forEach(function(fi) { + if (!fi.name.match(/\.iwa/)) return; + if (fi.content[0] != 0) return; + parse_iwa_file(decompress_iwa_file(fi.content)).forEach(function(ia) { + ia.messages.forEach(function(mess) { + [5, 6].forEach(function(f$4) { + if (!mess.meta[f$4]) return; + mess.meta[f$4].forEach(function(x$2) { + dependents[ia.id].deps.push(varint_to_i32(x$2.data)); + }); + }); + }); + }); + }); + return dependents; +} +function write_TSP_Color_RGB(r$10, g$1, b$3) { + return write_shallow([ + [], + [{ + type: 0, + data: write_varint49(1) + }], + [], + [{ + type: 5, + data: new Uint8Array(Float32Array.from([r$10 / 255]).buffer) + }], + [{ + type: 5, + data: new Uint8Array(Float32Array.from([g$1 / 255]).buffer) + }], + [{ + type: 5, + data: new Uint8Array(Float32Array.from([b$3 / 255]).buffer) + }], + [{ + type: 5, + data: new Uint8Array(Float32Array.from([1]).buffer) + }], + [], + [], + [], + [], + [], + [{ + type: 0, + data: write_varint49(1) + }] + ]); +} +function get_author_color(n$9) { + switch (n$9) { + case 0: return write_TSP_Color_RGB(99, 222, 171); + case 1: return write_TSP_Color_RGB(162, 197, 240); + case 2: return write_TSP_Color_RGB(255, 189, 189); + } + return write_TSP_Color_RGB(Math.random() * 255, Math.random() * 255, Math.random() * 255); +} +function write_numbers_iwa(wb, opts) { + if (!opts || !opts.numbers) throw new Error("Must pass a `numbers` option -- check the README"); + var cfb = CFB.read(opts.numbers, { type: "base64" }); + var deps = build_numbers_deps(cfb); + var docroot = numbers_iwa_find(cfb, deps, 1); + if (docroot == null) throw "Could not find message ".concat(1, " in Numbers template"); + var sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference); + if (sheetrefs.length > 1) throw new Error("Template NUMBERS file must have exactly one sheet"); + wb.SheetNames.forEach(function(name, idx) { + if (idx >= 1) { + numbers_add_ws(cfb, deps, idx + 1); + docroot = numbers_iwa_find(cfb, deps, 1); + sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference); + } + write_numbers_ws(cfb, deps, wb.Sheets[name], name, idx, sheetrefs[idx]); + }); + return cfb; +} +function numbers_iwa_doit(cfb, deps, id, cb) { + var entry = CFB.find(cfb, deps[id].location); + if (!entry) throw "Could not find ".concat(deps[id].location, " in Numbers template"); + var x$2 = parse_iwa_file(decompress_iwa_file(entry.content)); + var ainfo = x$2.find(function(packet) { + return packet.id == id; + }); + cb(ainfo, x$2); + entry.content = compress_iwa_file(write_iwa_file(x$2)); + entry.size = entry.content.length; +} +function numbers_iwa_find(cfb, deps, id) { + var entry = CFB.find(cfb, deps[id].location); + if (!entry) throw "Could not find ".concat(deps[id].location, " in Numbers template"); + var x$2 = parse_iwa_file(decompress_iwa_file(entry.content)); + var ainfo = x$2.find(function(packet) { + return packet.id == id; + }); + return ainfo; +} +function numbers_add_meta(mlist, newid, newloc) { + mlist[3].push({ + type: 2, + data: write_shallow([ + [], + [{ + type: 0, + data: write_varint49(newid) + }], + [{ + type: 2, + data: stru8(newloc.replace(/-[\s\S]*$/, "")) + }], + [{ + type: 2, + data: stru8(newloc) + }], + [{ + type: 2, + data: new Uint8Array([ + 2, + 0, + 0 + ]) + }], + [{ + type: 2, + data: new Uint8Array([ + 2, + 0, + 0 + ]) + }], + [], + [], + [], + [], + [{ + type: 0, + data: write_varint49(0) + }], + [], + [{ + type: 0, + data: write_varint49(0) + }] + ]) + }); + mlist[1] = [{ + type: 0, + data: write_varint49(Math.max(newid + 1, varint_to_i32(mlist[1][0].data))) + }]; +} +function numbers_add_msg(cfb, type, msg, path$1, deps, id) { + if (!id) id = get_unique_msgid({ + deps: [], + location: "", + type + }, deps); + var loc = "".concat(path$1, "-").concat(id, ".iwa"); + deps[id].location = "Root Entry" + loc; + CFB.utils.cfb_add(cfb, loc, compress_iwa_file(write_iwa_file([{ + id, + messages: [write_iwam(type, write_shallow(msg))] + }]))); + var newloc = loc.replace(/^[\/]/, "").replace(/^Index\//, "").replace(/\.iwa$/, ""); + numbers_iwa_doit(cfb, deps, 2, function(ai) { + var mlist = parse_shallow(ai.messages[0].data); + numbers_add_meta(mlist, id || 0, newloc); + ai.messages[0].data = write_shallow(mlist); + }); + return id; +} +function numbers_meta_add_dep(mlist, deps, id, dep) { + var loc = deps[id].location.replace(/^Root Entry\//, "").replace(/^Index\//, "").replace(/\.iwa$/, ""); + var parentidx = mlist[3].findIndex(function(m$3) { + var _a, _b; + var mm = parse_shallow(m$3.data); + if ((_a = mm[3]) == null ? void 0 : _a[0]) return u8str(mm[3][0].data) == loc; + if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc) return true; + return false; + }); + var parent = parse_shallow(mlist[3][parentidx].data); + if (!parent[6]) parent[6] = []; + (Array.isArray(dep) ? dep : [dep]).forEach(function(dep2) { + parent[6].push({ + type: 2, + data: write_shallow([[], [{ + type: 0, + data: write_varint49(dep2) + }]]) + }); + }); + mlist[3][parentidx].data = write_shallow(parent); +} +function numbers_meta_del_dep(mlist, deps, id, dep) { + var loc = deps[id].location.replace(/^Root Entry\//, "").replace(/^Index\//, "").replace(/\.iwa$/, ""); + var parentidx = mlist[3].findIndex(function(m$3) { + var _a, _b; + var mm = parse_shallow(m$3.data); + if ((_a = mm[3]) == null ? void 0 : _a[0]) return u8str(mm[3][0].data) == loc; + if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc) return true; + return false; + }); + var parent = parse_shallow(mlist[3][parentidx].data); + if (!parent[6]) parent[6] = []; + parent[6] = parent[6].filter(function(m$3) { + return varint_to_i32(parse_shallow(m$3.data)[1][0].data) != dep; + }); + mlist[3][parentidx].data = write_shallow(parent); +} +function numbers_add_ws(cfb, deps, wsidx) { + var sheetref = -1, newsheetref = -1; + var remap = {}; + numbers_iwa_doit(cfb, deps, 1, function(docroot, arch) { + var doc = parse_shallow(docroot.messages[0].data); + sheetref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data); + newsheetref = get_unique_msgid({ + deps: [1], + location: deps[sheetref].location, + type: 2 + }, deps); + remap[sheetref] = newsheetref; + numbers_add_oref(docroot, newsheetref); + doc[1].push({ + type: 2, + data: write_TSP_Reference(newsheetref) + }); + var sheet = numbers_iwa_find(cfb, deps, sheetref); + sheet.id = newsheetref; + if (deps[1].location == deps[newsheetref].location) arch.push(sheet); + else numbers_iwa_doit(cfb, deps, newsheetref, function(_$2, x$2) { + return x$2.push(sheet); + }); + docroot.messages[0].data = write_shallow(doc); + }); + var tiaref = -1; + numbers_iwa_doit(cfb, deps, newsheetref, function(sheetroot, arch) { + var sa = parse_shallow(sheetroot.messages[0].data); + for (var i$7 = 3; i$7 <= 69; ++i$7) delete sa[i$7]; + var drawables = mappa(sa[2], parse_TSP_Reference); + drawables.forEach(function(n$9) { + return numbers_del_oref(sheetroot, n$9); + }); + tiaref = get_unique_msgid({ + deps: [newsheetref], + location: deps[drawables[0]].location, + type: deps[drawables[0]].type + }, deps); + numbers_add_oref(sheetroot, tiaref); + remap[drawables[0]] = tiaref; + sa[2] = [{ + type: 2, + data: write_TSP_Reference(tiaref) + }]; + var tia = numbers_iwa_find(cfb, deps, drawables[0]); + tia.id = tiaref; + if (deps[drawables[0]].location == deps[newsheetref].location) arch.push(tia); + else { + numbers_iwa_doit(cfb, deps, 2, function(ai) { + var mlist = parse_shallow(ai.messages[0].data); + numbers_meta_add_dep(mlist, deps, newsheetref, tiaref); + ai.messages[0].data = write_shallow(mlist); + }); + numbers_iwa_doit(cfb, deps, tiaref, function(_$2, x$2) { + return x$2.push(tia); + }); + } + sheetroot.messages[0].data = write_shallow(sa); + }); + var tmaref = -1; + numbers_iwa_doit(cfb, deps, tiaref, function(tiaroot, arch) { + var tia = parse_shallow(tiaroot.messages[0].data); + var da = parse_shallow(tia[1][0].data); + for (var i$7 = 3; i$7 <= 69; ++i$7) delete da[i$7]; + var dap = parse_TSP_Reference(da[2][0].data); + da[2][0].data = write_TSP_Reference(remap[dap]); + tia[1][0].data = write_shallow(da); + var oldtmaref = parse_TSP_Reference(tia[2][0].data); + numbers_del_oref(tiaroot, oldtmaref); + tmaref = get_unique_msgid({ + deps: [tiaref], + location: deps[oldtmaref].location, + type: deps[oldtmaref].type + }, deps); + numbers_add_oref(tiaroot, tmaref); + remap[oldtmaref] = tmaref; + tia[2][0].data = write_TSP_Reference(tmaref); + var tma = numbers_iwa_find(cfb, deps, oldtmaref); + tma.id = tmaref; + if (deps[tiaref].location == deps[tmaref].location) arch.push(tma); + else numbers_iwa_doit(cfb, deps, tmaref, function(_$2, x$2) { + return x$2.push(tma); + }); + tiaroot.messages[0].data = write_shallow(tia); + }); + numbers_iwa_doit(cfb, deps, tmaref, function(tmaroot, arch) { + var _a, _b; + var tma = parse_shallow(tmaroot.messages[0].data); + var uuid = u8str(tma[1][0].data), new_uuid = uuid.replace(/-[A-Z0-9]*/, "-".concat(("0000" + wsidx.toString(16)).slice(-4))); + tma[1][0].data = stru8(new_uuid); + [ + 12, + 13, + 29, + 31, + 32, + 33, + 39, + 44, + 47, + 81, + 82, + 84 + ].forEach(function(n$9) { + return delete tma[n$9]; + }); + if (tma[45]) { + var srrta = parse_shallow(tma[45][0].data); + var ref = parse_TSP_Reference(srrta[1][0].data); + numbers_del_oref(tmaroot, ref); + delete tma[45]; + } + if (tma[70]) { + var hsoa = parse_shallow(tma[70][0].data); + (_a = hsoa[2]) == null ? void 0 : _a.forEach(function(item) { + var hsa = parse_shallow(item.data); + [2, 3].map(function(n$9) { + return hsa[n$9][0]; + }).forEach(function(hseadata) { + var hsea = parse_shallow(hseadata.data); + if (!hsea[8]) return; + var ref2 = parse_TSP_Reference(hsea[8][0].data); + numbers_del_oref(tmaroot, ref2); + }); + }); + delete tma[70]; + } + [ + 46, + 30, + 34, + 35, + 36, + 38, + 48, + 49, + 60, + 61, + 62, + 63, + 64, + 71, + 72, + 73, + 74, + 75, + 85, + 86, + 87, + 88, + 89 + ].forEach(function(n$9) { + if (!tma[n$9]) return; + var ref2 = parse_TSP_Reference(tma[n$9][0].data); + delete tma[n$9]; + numbers_del_oref(tmaroot, ref2); + }); + var store = parse_shallow(tma[4][0].data); + { + [ + 2, + 4, + 5, + 6, + 11, + 12, + 13, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22 + ].forEach(function(n$9) { + var _a2; + if (!((_a2 = store[n$9]) == null ? void 0 : _a2[0])) return; + var oldref = parse_TSP_Reference(store[n$9][0].data); + var newref = get_unique_msgid({ + deps: [tmaref], + location: deps[oldref].location, + type: deps[oldref].type + }, deps); + numbers_del_oref(tmaroot, oldref); + numbers_add_oref(tmaroot, newref); + remap[oldref] = newref; + var msg = numbers_iwa_find(cfb, deps, oldref); + msg.id = newref; + if (deps[oldref].location == deps[tmaref].location) arch.push(msg); + else { + deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString()); + if (deps[newref].location == deps[oldref].location) deps[newref].location = deps[newref].location.replace(/\.iwa/, "-".concat(newref, ".iwa")); + CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg]))); + var newloc = deps[newref].location.replace(/^Root Entry\//, "").replace(/^Index\//, "").replace(/\.iwa$/, ""); + numbers_iwa_doit(cfb, deps, 2, function(ai) { + var mlist = parse_shallow(ai.messages[0].data); + numbers_add_meta(mlist, newref, newloc); + numbers_meta_add_dep(mlist, deps, tmaref, newref); + ai.messages[0].data = write_shallow(mlist); + }); + } + store[n$9][0].data = write_TSP_Reference(newref); + }); + var row_headers = parse_shallow(store[1][0].data); + { + (_b = row_headers[2]) == null ? void 0 : _b.forEach(function(tspref) { + var oldref = parse_TSP_Reference(tspref.data); + var newref = get_unique_msgid({ + deps: [tmaref], + location: deps[oldref].location, + type: deps[oldref].type + }, deps); + numbers_del_oref(tmaroot, oldref); + numbers_add_oref(tmaroot, newref); + remap[oldref] = newref; + var msg = numbers_iwa_find(cfb, deps, oldref); + msg.id = newref; + if (deps[oldref].location == deps[tmaref].location) { + arch.push(msg); + } else { + deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString()); + if (deps[newref].location == deps[oldref].location) deps[newref].location = deps[newref].location.replace(/\.iwa/, "-".concat(newref, ".iwa")); + CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg]))); + var newloc = deps[newref].location.replace(/^Root Entry\//, "").replace(/^Index\//, "").replace(/\.iwa$/, ""); + numbers_iwa_doit(cfb, deps, 2, function(ai) { + var mlist = parse_shallow(ai.messages[0].data); + numbers_add_meta(mlist, newref, newloc); + numbers_meta_add_dep(mlist, deps, tmaref, newref); + ai.messages[0].data = write_shallow(mlist); + }); + } + tspref.data = write_TSP_Reference(newref); + }); + } + store[1][0].data = write_shallow(row_headers); + var tiles = parse_shallow(store[3][0].data); + { + tiles[1].forEach(function(t$6) { + var tst = parse_shallow(t$6.data); + var oldtileref = parse_TSP_Reference(tst[2][0].data); + var newtileref = remap[oldtileref]; + if (!remap[oldtileref]) { + newtileref = get_unique_msgid({ + deps: [tmaref], + location: "", + type: deps[oldtileref].type + }, deps); + deps[newtileref].location = "Root Entry/Index/Tables/Tile-".concat(newtileref, ".iwa"); + remap[oldtileref] = newtileref; + var oldtile = numbers_iwa_find(cfb, deps, oldtileref); + oldtile.id = newtileref; + numbers_del_oref(tmaroot, oldtileref); + numbers_add_oref(tmaroot, newtileref); + CFB.utils.cfb_add(cfb, "/Index/Tables/Tile-".concat(newtileref, ".iwa"), compress_iwa_file(write_iwa_file([oldtile]))); + numbers_iwa_doit(cfb, deps, 2, function(ai) { + var mlist = parse_shallow(ai.messages[0].data); + mlist[3].push({ + type: 2, + data: write_shallow([ + [], + [{ + type: 0, + data: write_varint49(newtileref) + }], + [{ + type: 2, + data: stru8("Tables/Tile") + }], + [{ + type: 2, + data: stru8("Tables/Tile-".concat(newtileref)) + }], + [{ + type: 2, + data: new Uint8Array([ + 2, + 0, + 0 + ]) + }], + [{ + type: 2, + data: new Uint8Array([ + 2, + 0, + 0 + ]) + }], + [], + [], + [], + [], + [{ + type: 0, + data: write_varint49(0) + }], + [], + [{ + type: 0, + data: write_varint49(0) + }] + ]) + }); + mlist[1] = [{ + type: 0, + data: write_varint49(Math.max(newtileref + 1, varint_to_i32(mlist[1][0].data))) + }]; + numbers_meta_add_dep(mlist, deps, tmaref, newtileref); + ai.messages[0].data = write_shallow(mlist); + }); + } + tst[2][0].data = write_TSP_Reference(newtileref); + t$6.data = write_shallow(tst); + }); + } + store[3][0].data = write_shallow(tiles); + } + tma[4][0].data = write_shallow(store); + tmaroot.messages[0].data = write_shallow(tma); + }); +} +function write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) { + var drawables = []; + numbers_iwa_doit(cfb, deps, rootref, function(docroot) { + var sheetref = parse_shallow(docroot.messages[0].data); + { + sheetref[1] = [{ + type: 2, + data: stru8(wsname) + }]; + drawables = mappa(sheetref[2], parse_TSP_Reference); + } + docroot.messages[0].data = write_shallow(sheetref); + }); + var tia = numbers_iwa_find(cfb, deps, drawables[0]); + var tmaref = parse_TSP_Reference(parse_shallow(tia.messages[0].data)[2][0].data); + numbers_iwa_doit(cfb, deps, tmaref, function(docroot, x$2) { + return write_numbers_tma(cfb, deps, ws, docroot, x$2, tmaref); + }); +} +function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) { + if (!ws["!ref"]) throw new Error("Cannot export empty sheet to NUMBERS"); + var range = decode_range(ws["!ref"]); + range.s.r = range.s.c = 0; + var trunc = false; + if (range.e.c > 999) { + trunc = true; + range.e.c = 999; + } + if (range.e.r > 999999) { + trunc = true; + range.e.r = 999999; + } + if (trunc) console.error("Truncating to ".concat(encode_range(range))); + var data = []; + if (ws["!data"]) data = ws["!data"]; + else { + var colstr = []; + for (var _C = 0; _C <= range.e.c; ++_C) colstr[_C] = encode_col(_C); + for (var R_ = 0; R_ <= range.e.r; ++R_) { + data[R_] = []; + var _R = "" + (R_ + 1); + for (_C = 0; _C <= range.e.c; ++_C) { + var _cell = ws[colstr[_C] + _R]; + if (!_cell) continue; + data[R_][_C] = _cell; + } + } + } + var LUT = { + cmnt: [{ + a: "~54ee77S~", + t: "... the people who are crazy enough to think they can change the world, are the ones who do." + }], + ferr: [], + fmla: [], + nfmt: [], + ofmt: [], + rsst: [{ + v: "~54ee77S~", + l: "https://sheetjs.com/" + }], + sst: ["~Sh33tJ5~"] + }; + var pb = parse_shallow(tmaroot.messages[0].data); + { + pb[6][0].data = write_varint49(range.e.r + 1); + pb[7][0].data = write_varint49(range.e.c + 1); + delete pb[46]; + var store = parse_shallow(pb[4][0].data); + { + var row_header_ref = parse_TSP_Reference(parse_shallow(store[1][0].data)[2][0].data); + numbers_iwa_doit(cfb, deps, row_header_ref, function(rowhead, _x) { + var _a; + var base_bucket = parse_shallow(rowhead.messages[0].data); + if ((_a = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a[0]) for (var R2 = 0; R2 < data.length; ++R2) { + var _bucket = parse_shallow(base_bucket[2][0].data); + _bucket[1][0].data = write_varint49(R2); + _bucket[4][0].data = write_varint49(data[R2].length); + base_bucket[2][R2] = { + type: base_bucket[2][0].type, + data: write_shallow(_bucket) + }; + } + rowhead.messages[0].data = write_shallow(base_bucket); + }); + var col_header_ref = parse_TSP_Reference(store[2][0].data); + numbers_iwa_doit(cfb, deps, col_header_ref, function(colhead, _x) { + var base_bucket = parse_shallow(colhead.messages[0].data); + for (var C$2 = 0; C$2 <= range.e.c; ++C$2) { + var _bucket = parse_shallow(base_bucket[2][0].data); + _bucket[1][0].data = write_varint49(C$2); + _bucket[4][0].data = write_varint49(range.e.r + 1); + base_bucket[2][C$2] = { + type: base_bucket[2][0].type, + data: write_shallow(_bucket) + }; + } + colhead.messages[0].data = write_shallow(base_bucket); + }); + var rbtree = parse_shallow(store[9][0].data); + rbtree[1] = []; + var tilestore = parse_shallow(store[3][0].data); + { + var tstride = 256; + tilestore[2] = [{ + type: 0, + data: write_varint49(tstride) + }]; + var tileref = parse_TSP_Reference(parse_shallow(tilestore[1][0].data)[2][0].data); + var save_token = function() { + var metadata = numbers_iwa_find(cfb, deps, 2); + var mlist = parse_shallow(metadata.messages[0].data); + var mlst = mlist[3].filter(function(m$3) { + return varint_to_i32(parse_shallow(m$3.data)[1][0].data) == tileref; + }); + return (mlst == null ? void 0 : mlst.length) ? varint_to_i32(parse_shallow(mlst[0].data)[12][0].data) : 0; + }(); + { + CFB.utils.cfb_del(cfb, deps[tileref].location); + numbers_iwa_doit(cfb, deps, 2, function(ai) { + var mlist = parse_shallow(ai.messages[0].data); + mlist[3] = mlist[3].filter(function(m$3) { + return varint_to_i32(parse_shallow(m$3.data)[1][0].data) != tileref; + }); + numbers_meta_del_dep(mlist, deps, tmaref, tileref); + ai.messages[0].data = write_shallow(mlist); + }); + numbers_del_oref(tmaroot, tileref); + } + tilestore[1] = []; + var ntiles = Math.ceil((range.e.r + 1) / tstride); + for (var tidx = 0; tidx < ntiles; ++tidx) { + var newtileid = get_unique_msgid({ + deps: [], + location: "", + type: 6002 + }, deps); + deps[newtileid].location = "Root Entry/Index/Tables/Tile-".concat(newtileid, ".iwa"); + var tiledata = [ + [], + [{ + type: 0, + data: write_varint49(0) + }], + [{ + type: 0, + data: write_varint49(Math.min(range.e.r + 1, (tidx + 1) * tstride)) + }], + [{ + type: 0, + data: write_varint49(0) + }], + [{ + type: 0, + data: write_varint49(Math.min((tidx + 1) * tstride, range.e.r + 1) - tidx * tstride) + }], + [], + [{ + type: 0, + data: write_varint49(5) + }], + [{ + type: 0, + data: write_varint49(1) + }], + [{ + type: 0, + data: write_varint49(USE_WIDE_ROWS ? 1 : 0) + }] + ]; + for (var R$1 = tidx * tstride; R$1 <= Math.min(range.e.r, (tidx + 1) * tstride - 1); ++R$1) { + var tilerow = write_TST_TileRowInfo(data[R$1], LUT, USE_WIDE_ROWS); + tilerow[1][0].data = write_varint49(R$1 - tidx * tstride); + tiledata[5].push({ + data: write_shallow(tilerow), + type: 2 + }); + } + tilestore[1].push({ + type: 2, + data: write_shallow([ + [], + [{ + type: 0, + data: write_varint49(tidx) + }], + [{ + type: 2, + data: write_TSP_Reference(newtileid) + }] + ]) + }); + var newtile = { + id: newtileid, + messages: [write_iwam(6002, write_shallow(tiledata))] + }; + var tilecontent = compress_iwa_file(write_iwa_file([newtile])); + CFB.utils.cfb_add(cfb, "/Index/Tables/Tile-".concat(newtileid, ".iwa"), tilecontent); + numbers_iwa_doit(cfb, deps, 2, function(ai) { + var mlist = parse_shallow(ai.messages[0].data); + mlist[3].push({ + type: 2, + data: write_shallow([ + [], + [{ + type: 0, + data: write_varint49(newtileid) + }], + [{ + type: 2, + data: stru8("Tables/Tile") + }], + [{ + type: 2, + data: stru8("Tables/Tile-".concat(newtileid)) + }], + [{ + type: 2, + data: new Uint8Array([ + 2, + 0, + 0 + ]) + }], + [{ + type: 2, + data: new Uint8Array([ + 2, + 0, + 0 + ]) + }], + [], + [], + [], + [], + [{ + type: 0, + data: write_varint49(0) + }], + [], + [{ + type: 0, + data: write_varint49(save_token) + }] + ]) + }); + mlist[1] = [{ + type: 0, + data: write_varint49(Math.max(newtileid + 1, varint_to_i32(mlist[1][0].data))) + }]; + numbers_meta_add_dep(mlist, deps, tmaref, newtileid); + ai.messages[0].data = write_shallow(mlist); + }); + numbers_add_oref(tmaroot, newtileid); + rbtree[1].push({ + type: 2, + data: write_shallow([ + [], + [{ + type: 0, + data: write_varint49(tidx * tstride) + }], + [{ + type: 0, + data: write_varint49(tidx) + }] + ]) + }); + } + } + store[3][0].data = write_shallow(tilestore); + store[9][0].data = write_shallow(rbtree); + store[10] = [{ + type: 2, + data: new Uint8Array([]) + }]; + if (ws["!merges"]) { + var mergeid = get_unique_msgid({ + type: 6144, + deps: [tmaref], + location: deps[tmaref].location + }, deps); + tmafile.push({ + id: mergeid, + messages: [write_iwam(6144, write_shallow([[], ws["!merges"].map(function(m$3) { + return { + type: 2, + data: write_shallow([ + [], + [{ + type: 2, + data: write_shallow([[], [{ + type: 5, + data: new Uint8Array(new Uint16Array([m$3.s.r, m$3.s.c]).buffer) + }]]) + }], + [{ + type: 2, + data: write_shallow([[], [{ + type: 5, + data: new Uint8Array(new Uint16Array([m$3.e.r - m$3.s.r + 1, m$3.e.c - m$3.s.c + 1]).buffer) + }]]) + }] + ]) + }; + })]))] + }); + store[13] = [{ + type: 2, + data: write_TSP_Reference(mergeid) + }]; + numbers_iwa_doit(cfb, deps, 2, function(ai) { + var mlist = parse_shallow(ai.messages[0].data); + numbers_meta_add_dep(mlist, deps, tmaref, mergeid); + ai.messages[0].data = write_shallow(mlist); + }); + numbers_add_oref(tmaroot, mergeid); + } else delete store[13]; + var sstref = parse_TSP_Reference(store[4][0].data); + numbers_iwa_doit(cfb, deps, sstref, function(sstroot) { + var sstdata = parse_shallow(sstroot.messages[0].data); + { + sstdata[3] = []; + LUT.sst.forEach(function(str, i$7) { + if (i$7 == 0) return; + sstdata[3].push({ + type: 2, + data: write_shallow([ + [], + [{ + type: 0, + data: write_varint49(i$7) + }], + [{ + type: 0, + data: write_varint49(1) + }], + [{ + type: 2, + data: stru8(str) + }] + ]) + }); + }); + } + sstroot.messages[0].data = write_shallow(sstdata); + }); + var rsstref = parse_TSP_Reference(store[17][0].data); + numbers_iwa_doit(cfb, deps, rsstref, function(rsstroot) { + var rsstdata = parse_shallow(rsstroot.messages[0].data); + rsstdata[3] = []; + var style_indices = [ + 904980, + 903835, + 903815, + 903845 + ]; + LUT.rsst.forEach(function(rsst, i$7) { + if (i$7 == 0) return; + var tswpsa = [ + [], + [{ + type: 0, + data: new Uint8Array([5]) + }], + [], + [{ + type: 2, + data: stru8(rsst.v) + }] + ]; + tswpsa[10] = [{ + type: 0, + data: new Uint8Array([1]) + }]; + tswpsa[19] = [{ + type: 2, + data: new Uint8Array([ + 10, + 6, + 8, + 0, + 18, + 2, + 101, + 110 + ]) + }]; + tswpsa[5] = [{ + type: 2, + data: new Uint8Array([ + 10, + 8, + 8, + 0, + 18, + 4, + 8, + 155, + 149, + 55 + ]) + }]; + tswpsa[2] = [{ + type: 2, + data: new Uint8Array([ + 8, + 148, + 158, + 55 + ]) + }]; + tswpsa[6] = [{ + type: 2, + data: new Uint8Array([ + 10, + 6, + 8, + 0, + 16, + 0, + 24, + 0 + ]) + }]; + tswpsa[7] = [{ + type: 2, + data: new Uint8Array([ + 10, + 8, + 8, + 0, + 18, + 4, + 8, + 135, + 149, + 55 + ]) + }]; + tswpsa[8] = [{ + type: 2, + data: new Uint8Array([ + 10, + 8, + 8, + 0, + 18, + 4, + 8, + 165, + 149, + 55 + ]) + }]; + tswpsa[14] = [{ + type: 2, + data: new Uint8Array([ + 10, + 6, + 8, + 0, + 16, + 0, + 24, + 0 + ]) + }]; + tswpsa[24] = [{ + type: 2, + data: new Uint8Array([ + 10, + 6, + 8, + 0, + 16, + 0, + 24, + 0 + ]) + }]; + var tswpsaid = get_unique_msgid({ + deps: [], + location: "", + type: 2001 + }, deps); + var tswpsarefs = []; + if (rsst.l) { + var newhlinkid = numbers_add_msg(cfb, 2032, [ + [], + [], + [{ + type: 2, + data: stru8(rsst.l) + }] + ], "/Index/Tables/DataList", deps); + tswpsa[11] = []; + var smartfield = [[], []]; + if (!smartfield[1]) smartfield[1] = []; + smartfield[1].push({ + type: 2, + data: write_shallow([ + [], + [{ + type: 0, + data: write_varint49(0) + }], + [{ + type: 2, + data: write_TSP_Reference(newhlinkid) + }] + ]) + }); + tswpsa[11][0] = { + type: 2, + data: write_shallow(smartfield) + }; + tswpsarefs.push(newhlinkid); + } + numbers_add_msg(cfb, 2001, tswpsa, "/Index/Tables/DataList", deps, tswpsaid); + numbers_iwa_doit(cfb, deps, tswpsaid, function(iwa) { + style_indices.forEach(function(ref) { + return numbers_add_oref(iwa, ref); + }); + tswpsarefs.forEach(function(ref) { + return numbers_add_oref(iwa, ref); + }); + }); + var rtpaid = numbers_add_msg(cfb, 6218, [ + [], + [{ + type: 2, + data: write_TSP_Reference(tswpsaid) + }], + [], + [{ + type: 2, + data: new Uint8Array([ + 13, + 255, + 255, + 255, + 0, + 18, + 10, + 16, + 255, + 255, + 1, + 24, + 255, + 255, + 255, + 255, + 7 + ]) + }] + ], "/Index/Tables/DataList", deps); + numbers_iwa_doit(cfb, deps, rtpaid, function(iwa) { + return numbers_add_oref(iwa, tswpsaid); + }); + rsstdata[3].push({ + type: 2, + data: write_shallow([ + [], + [{ + type: 0, + data: write_varint49(i$7) + }], + [{ + type: 0, + data: write_varint49(1) + }], + [], + [], + [], + [], + [], + [], + [{ + type: 2, + data: write_TSP_Reference(rtpaid) + }] + ]) + }); + numbers_add_oref(rsstroot, rtpaid); + numbers_iwa_doit(cfb, deps, 2, function(ai) { + var mlist = parse_shallow(ai.messages[0].data); + numbers_meta_add_dep(mlist, deps, rsstref, rtpaid); + numbers_meta_add_dep(mlist, deps, rtpaid, tswpsaid); + numbers_meta_add_dep(mlist, deps, tswpsaid, tswpsarefs); + numbers_meta_add_dep(mlist, deps, tswpsaid, style_indices); + ai.messages[0].data = write_shallow(mlist); + }); + }); + rsstroot.messages[0].data = write_shallow(rsstdata); + }); + if (LUT.cmnt.length > 1) { + var cmntref = parse_TSP_Reference(store[19][0].data); + var authors = {}, iauthor = 0; + numbers_iwa_doit(cfb, deps, cmntref, function(cmntroot) { + var cmntdata = parse_shallow(cmntroot.messages[0].data); + { + cmntdata[3] = []; + LUT.cmnt.forEach(function(cc, i$7) { + if (i$7 == 0) return; + var replies = []; + if (cc.replies) cc.replies.forEach(function(c$7) { + if (!authors[c$7.a || ""]) authors[c$7.a || ""] = numbers_add_msg(cfb, 212, [ + [], + [{ + type: 2, + data: stru8(c$7.a || "") + }], + [{ + type: 2, + data: get_author_color(++iauthor) + }], + [], + [{ + type: 0, + data: write_varint49(0) + }] + ], "/Index/Tables/DataList", deps); + var aaaid2 = authors[c$7.a || ""]; + var csaid2 = numbers_add_msg(cfb, 3056, [ + [], + [{ + type: 2, + data: stru8(c$7.t || "") + }], + [{ + type: 2, + data: write_shallow([[], [{ + type: 1, + data: new Uint8Array([ + 0, + 0, + 0, + 128, + 116, + 109, + 182, + 65 + ]) + }]]) + }], + [{ + type: 2, + data: write_TSP_Reference(aaaid2) + }] + ], "/Index/Tables/DataList", deps); + numbers_iwa_doit(cfb, deps, csaid2, function(iwa) { + return numbers_add_oref(iwa, aaaid2); + }); + replies.push(csaid2); + numbers_iwa_doit(cfb, deps, 2, function(ai) { + var mlist = parse_shallow(ai.messages[0].data); + numbers_meta_add_dep(mlist, deps, csaid2, aaaid2); + ai.messages[0].data = write_shallow(mlist); + }); + }); + if (!authors[cc.a || ""]) authors[cc.a || ""] = numbers_add_msg(cfb, 212, [ + [], + [{ + type: 2, + data: stru8(cc.a || "") + }], + [{ + type: 2, + data: get_author_color(++iauthor) + }], + [], + [{ + type: 0, + data: write_varint49(0) + }] + ], "/Index/Tables/DataList", deps); + var aaaid = authors[cc.a || ""]; + var csaid = numbers_add_msg(cfb, 3056, [ + [], + [{ + type: 2, + data: stru8(cc.t || "") + }], + [{ + type: 2, + data: write_shallow([[], [{ + type: 1, + data: new Uint8Array([ + 0, + 0, + 0, + 128, + 116, + 109, + 182, + 65 + ]) + }]]) + }], + [{ + type: 2, + data: write_TSP_Reference(aaaid) + }], + replies.map(function(r$10) { + return { + type: 2, + data: write_TSP_Reference(r$10) + }; + }), + [{ + type: 2, + data: write_shallow([ + [], + [{ + type: 0, + data: write_varint49(i$7) + }], + [{ + type: 0, + data: write_varint49(0) + }] + ]) + }] + ], "/Index/Tables/DataList", deps); + numbers_iwa_doit(cfb, deps, csaid, function(iwa) { + numbers_add_oref(iwa, aaaid); + replies.forEach(function(r$10) { + return numbers_add_oref(iwa, r$10); + }); + }); + cmntdata[3].push({ + type: 2, + data: write_shallow([ + [], + [{ + type: 0, + data: write_varint49(i$7) + }], + [{ + type: 0, + data: write_varint49(1) + }], + [], + [], + [], + [], + [], + [], + [], + [{ + type: 2, + data: write_TSP_Reference(csaid) + }] + ]) + }); + numbers_add_oref(cmntroot, csaid); + numbers_iwa_doit(cfb, deps, 2, function(ai) { + var mlist = parse_shallow(ai.messages[0].data); + numbers_meta_add_dep(mlist, deps, cmntref, csaid); + numbers_meta_add_dep(mlist, deps, csaid, aaaid); + if (replies.length) numbers_meta_add_dep(mlist, deps, csaid, replies); + ai.messages[0].data = write_shallow(mlist); + }); + }); + } + cmntdata[2][0].data = write_varint49(LUT.cmnt.length + 1); + cmntroot.messages[0].data = write_shallow(cmntdata); + }); + } + } + pb[4][0].data = write_shallow(store); + } + tmaroot.messages[0].data = write_shallow(pb); +} +function fix_opts_func(defaults) { + return function fix_opts(opts) { + for (var i$7 = 0; i$7 != defaults.length; ++i$7) { + var d$5 = defaults[i$7]; + if (opts[d$5[0]] === undefined) opts[d$5[0]] = d$5[1]; + if (d$5[2] === "n") opts[d$5[0]] = Number(opts[d$5[0]]); + } + }; +} +function fix_read_opts(opts) { + fix_opts_func([ + ["cellNF", false], + ["cellHTML", true], + ["cellFormula", true], + ["cellStyles", false], + ["cellText", true], + ["cellDates", false], + ["sheetStubs", false], + [ + "sheetRows", + 0, + "n" + ], + ["bookDeps", false], + ["bookSheets", false], + ["bookProps", false], + ["bookFiles", false], + ["bookVBA", false], + ["password", ""], + ["WTF", false] + ])(opts); +} +function fix_write_opts(opts) { + fix_opts_func([ + ["cellDates", false], + ["bookSST", false], + ["bookType", "xlsx"], + ["compression", false], + ["WTF", false] + ])(opts); +} +function get_sheet_type(n$9) { + if (RELS.WS.indexOf(n$9) > -1) return "sheet"; + if (RELS.CS && n$9 == RELS.CS) return "chart"; + if (RELS.DS && n$9 == RELS.DS) return "dialog"; + if (RELS.MS && n$9 == RELS.MS) return "macro"; + return n$9 && n$9.length ? n$9 : "sheet"; +} +function safe_parse_wbrels(wbrels, sheets) { + if (!wbrels) return 0; + try { + wbrels = sheets.map(function pwbr(w$2) { + if (!w$2.id) w$2.id = w$2.strRelID; + return [ + w$2.name, + wbrels["!id"][w$2.id].Target, + get_sheet_type(wbrels["!id"][w$2.id].Type) + ]; + }); + } catch (e$10) { + return null; + } + return !wbrels || wbrels.length === 0 ? null : wbrels; +} +function parse_sheet_legacy_drawing(sheet, type, zip, path$1, idx, opts, wb, comments) { + if (!sheet || !sheet["!legdrawel"]) return; + var dfile = resolve_path(sheet["!legdrawel"].Target, path$1); + var draw = getzipstr(zip, dfile, true); + if (draw) parse_vml(utf8read(draw), sheet, comments || []); +} +function safe_parse_sheet(zip, path$1, relsPath, sheet, idx, sheetRels, sheets, stype, opts, wb, themes, styles$1) { + try { + sheetRels[sheet] = parse_rels(getzipstr(zip, relsPath, true), path$1); + var data = getzipdata(zip, path$1); + var _ws; + switch (stype) { + case "sheet": + _ws = parse_ws(data, path$1, idx, opts, sheetRels[sheet], wb, themes, styles$1); + break; + case "chart": + _ws = parse_cs(data, path$1, idx, opts, sheetRels[sheet], wb, themes, styles$1); + if (!_ws || !_ws["!drawel"]) break; + var dfile = resolve_path(_ws["!drawel"].Target, path$1); + var drelsp = get_rels_path(dfile); + var draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile)); + var chartp = resolve_path(draw, dfile); + var crelsp = get_rels_path(chartp); + _ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws); + break; + case "macro": + _ws = parse_ms(data, path$1, idx, opts, sheetRels[sheet], wb, themes, styles$1); + break; + case "dialog": + _ws = parse_ds(data, path$1, idx, opts, sheetRels[sheet], wb, themes, styles$1); + break; + default: throw new Error("Unrecognized sheet type " + stype); + } + sheets[sheet] = _ws; + var comments = [], tcomments = []; + if (sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n$9) { + var dfile$1 = ""; + if (sheetRels[sheet][n$9].Type == RELS.CMNT) { + dfile$1 = resolve_path(sheetRels[sheet][n$9].Target, path$1); + comments = parse_cmnt(getzipdata(zip, dfile$1, true), dfile$1, opts); + if (!comments || !comments.length) return; + sheet_insert_comments(_ws, comments, false); + } + if (sheetRels[sheet][n$9].Type == RELS.TCMNT) { + dfile$1 = resolve_path(sheetRels[sheet][n$9].Target, path$1); + tcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile$1, true), opts)); + } + }); + if (tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []); + parse_sheet_legacy_drawing(_ws, stype, zip, path$1, idx, opts, wb, comments); + } catch (e$10) { + if (opts.WTF) throw e$10; + } +} +function strip_front_slash(x$2) { + return x$2.charAt(0) == "/" ? x$2.slice(1) : x$2; +} +function parse_zip(zip, opts) { + make_ssf(); + opts = opts || {}; + fix_read_opts(opts); + if (safegetzipfile(zip, "META-INF/manifest.xml")) return parse_ods(zip, opts); + if (safegetzipfile(zip, "objectdata.xml")) return parse_ods(zip, opts); + if (safegetzipfile(zip, "Index/Document.iwa")) { + if (typeof Uint8Array == "undefined") throw new Error("NUMBERS file parsing requires Uint8Array support"); + if (typeof parse_numbers_iwa != "undefined") { + if (zip.FileIndex) return parse_numbers_iwa(zip, opts); + var _zip = CFB.utils.cfb_new(); + zipentries(zip).forEach(function(e$10) { + zip_add_file(_zip, e$10, getzipbin(zip, e$10)); + }); + return parse_numbers_iwa(_zip, opts); + } + throw new Error("Unsupported NUMBERS file"); + } + if (!safegetzipfile(zip, "[Content_Types].xml")) { + if (safegetzipfile(zip, "index.xml.gz")) throw new Error("Unsupported NUMBERS 08 file"); + if (safegetzipfile(zip, "index.xml")) throw new Error("Unsupported NUMBERS 09 file"); + var index_zip = CFB.find(zip, "Index.zip"); + if (index_zip) { + opts = dup(opts); + delete opts.type; + if (typeof index_zip.content == "string") opts.type = "binary"; + if (typeof Bun !== "undefined" && Buffer.isBuffer(index_zip.content)) return readSync(new Uint8Array(index_zip.content), opts); + return readSync(index_zip.content, opts); + } + throw new Error("Unsupported ZIP file"); + } + var entries = zipentries(zip); + var dir = parse_ct(getzipstr(zip, "[Content_Types].xml")); + var xlsb = false; + var sheets, binname; + if (dir.workbooks.length === 0) { + binname = "xl/workbook.xml"; + if (getzipdata(zip, binname, true)) dir.workbooks.push(binname); + } + if (dir.workbooks.length === 0) { + binname = "xl/workbook.bin"; + if (!getzipdata(zip, binname, true)) throw new Error("Could not find workbook"); + dir.workbooks.push(binname); + xlsb = true; + } + if (dir.workbooks[0].slice(-3) == "bin") xlsb = true; + var themes = {}; + var styles$1 = {}; + if (!opts.bookSheets && !opts.bookProps) { + strs = []; + if (dir.sst) try { + strs = parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); + } catch (e$10) { + if (opts.WTF) throw e$10; + } + if (opts.cellStyles && dir.themes.length) themes = parse_theme_xml(getzipstr(zip, dir.themes[0].replace(/^\//, ""), true) || "", opts); + if (dir.style) styles$1 = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts); + } + dir.links.map(function(link) { + try { + var rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link); + return parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts); + } catch (e$10) {} + }); + var wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts); + var props = {}, propdata = ""; + if (dir.coreprops.length) { + propdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true); + if (propdata) props = parse_core_props(propdata); + if (dir.extprops.length !== 0) { + propdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true); + if (propdata) parse_ext_props(propdata, props, opts); + } + } + var custprops = {}; + if (!opts.bookSheets || opts.bookProps) { + if (dir.custprops.length !== 0) { + propdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true); + if (propdata) custprops = parse_cust_props(propdata, opts); + } + } + var out = {}; + if (opts.bookSheets || opts.bookProps) { + if (wb.Sheets) sheets = wb.Sheets.map(function pluck(x$2) { + return x$2.name; + }); + else if (props.Worksheets && props.SheetNames.length > 0) sheets = props.SheetNames; + if (opts.bookProps) { + out.Props = props; + out.Custprops = custprops; + } + if (opts.bookSheets && typeof sheets !== "undefined") out.SheetNames = sheets; + if (opts.bookSheets ? out.SheetNames : opts.bookProps) return out; + } + sheets = {}; + var deps = {}; + if (opts.bookDeps && dir.calcchain) deps = parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)), dir.calcchain, opts); + var i$7 = 0; + var sheetRels = {}; + var path$1, relsPath; + { + var wbsheets = wb.Sheets; + props.Worksheets = wbsheets.length; + props.SheetNames = []; + for (var j$2 = 0; j$2 != wbsheets.length; ++j$2) { + props.SheetNames[j$2] = wbsheets[j$2].name; + } + } + var wbext = xlsb ? "bin" : "xml"; + var wbrelsi = dir.workbooks[0].lastIndexOf("/"); + var wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi + 1) + "_rels/" + dir.workbooks[0].slice(wbrelsi + 1) + ".rels").replace(/^\//, ""); + if (!safegetzipfile(zip, wbrelsfile)) wbrelsfile = "xl/_rels/workbook." + wbext + ".rels"; + var wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, "s5s")); + if ((dir.metadata || []).length >= 1) { + opts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])), dir.metadata[0], opts); + } + if ((dir.people || []).length >= 1) { + opts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])), opts); + } + if (wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets); + var nmode = getzipdata(zip, "xl/worksheets/sheet.xml", true) ? 1 : 0; + wsloop: for (i$7 = 0; i$7 != props.Worksheets; ++i$7) { + var stype = "sheet"; + if (wbrels && wbrels[i$7]) { + path$1 = "xl/" + wbrels[i$7][1].replace(/[\/]?xl\//, ""); + if (!safegetzipfile(zip, path$1)) path$1 = wbrels[i$7][1]; + if (!safegetzipfile(zip, path$1)) path$1 = wbrelsfile.replace(/_rels\/[\S\s]*$/, "") + wbrels[i$7][1]; + stype = wbrels[i$7][2]; + } else { + path$1 = "xl/worksheets/sheet" + (i$7 + 1 - nmode) + "." + wbext; + path$1 = path$1.replace(/sheet0\./, "sheet."); + } + relsPath = path$1.replace(/^(.*)(\/)([^\/]*)$/, "$1/_rels/$3.rels"); + if (opts && opts.sheets != null) switch (typeof opts.sheets) { + case "number": + if (i$7 != opts.sheets) continue wsloop; + break; + case "string": + if (props.SheetNames[i$7].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; + break; + default: if (Array.isArray && Array.isArray(opts.sheets)) { + var snjseen = false; + for (var snj = 0; snj != opts.sheets.length; ++snj) { + if (typeof opts.sheets[snj] == "number" && opts.sheets[snj] == i$7) snjseen = 1; + if (typeof opts.sheets[snj] == "string" && opts.sheets[snj].toLowerCase() == props.SheetNames[i$7].toLowerCase()) snjseen = 1; + } + if (!snjseen) continue wsloop; + } + } + safe_parse_sheet(zip, path$1, relsPath, props.SheetNames[i$7], i$7, sheetRels, sheets, stype, opts, wb, themes, styles$1); + } + out = { + Directory: dir, + Workbook: wb, + Props: props, + Custprops: custprops, + Deps: deps, + Sheets: sheets, + SheetNames: props.SheetNames, + Strings: strs, + Styles: styles$1, + Themes: themes, + SSF: dup(table_fmt) + }; + if (opts && opts.bookFiles) { + if (zip.files) { + out.keys = entries; + out.files = zip.files; + } else { + out.keys = []; + out.files = {}; + zip.FullPaths.forEach(function(p$3, idx) { + p$3 = p$3.replace(/^Root Entry[\/]/, ""); + out.keys.push(p$3); + out.files[p$3] = zip.FileIndex[idx]; + }); + } + } + if (opts && opts.bookVBA) { + if (dir.vba.length > 0) out.vbaraw = getzipdata(zip, strip_front_slash(dir.vba[0]), true); + else if (dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, "xl/vbaProject.bin", true); + } + out.bookType = xlsb ? "xlsb" : "xlsx"; + return out; +} +function parse_xlsxcfb(cfb, _opts) { + var opts = _opts || {}; + var f$4 = "Workbook", data = CFB.find(cfb, f$4); + try { + f$4 = "/!DataSpaces/Version"; + data = CFB.find(cfb, f$4); + if (!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f$4); + parse_DataSpaceVersionInfo(data.content); + f$4 = "/!DataSpaces/DataSpaceMap"; + data = CFB.find(cfb, f$4); + if (!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f$4); + var dsm = parse_DataSpaceMap(data.content); + if (dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== "StrongEncryptionDataSpace" || dsm[0].comps[0].v !== "EncryptedPackage") throw new Error("ECMA-376 Encrypted file bad " + f$4); + f$4 = "/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace"; + data = CFB.find(cfb, f$4); + if (!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f$4); + var seds = parse_DataSpaceDefinition(data.content); + if (seds.length != 1 || seds[0] != "StrongEncryptionTransform") throw new Error("ECMA-376 Encrypted file bad " + f$4); + f$4 = "/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary"; + data = CFB.find(cfb, f$4); + if (!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f$4); + parse_Primary(data.content); + } catch (e$10) {} + f$4 = "/EncryptionInfo"; + data = CFB.find(cfb, f$4); + if (!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f$4); + var einfo = parse_EncryptionInfo(data.content); + f$4 = "/EncryptedPackage"; + data = CFB.find(cfb, f$4); + if (!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f$4); + if (einfo[0] == 4 && typeof decrypt_agile !== "undefined") return decrypt_agile(einfo[1], data.content, opts.password || "", opts); + if (einfo[0] == 2 && typeof decrypt_std76 !== "undefined") return decrypt_std76(einfo[1], data.content, opts.password || "", opts); + throw new Error("File is password-protected"); +} +function write_zip_xlsb(wb, opts) { + if (wb && !wb.SSF) { + wb.SSF = dup(table_fmt); + } + if (wb && wb.SSF) { + make_ssf(); + SSF_load_table(wb.SSF); + opts.revssf = evert_num(wb.SSF); + opts.revssf[wb.SSF[65535]] = 0; + opts.ssf = wb.SSF; + } + opts.rels = {}; + opts.wbrels = {}; + opts.Strings = []; + opts.Strings.Count = 0; + opts.Strings.Unique = 0; + if (browser_has_Map) opts.revStrings = new Map(); + else { + opts.revStrings = {}; + opts.revStrings.foo = []; + delete opts.revStrings.foo; + } + var wbext = "bin"; + var vbafmt = true; + var ct = new_ct(); + fix_write_opts(opts = opts || {}); + var zip = zip_new(); + var f$4 = "", rId = 0; + opts.cellXfs = []; + get_cell_style(opts.cellXfs, {}, { revssf: { "General": 0 } }); + if (!wb.Props) wb.Props = {}; + f$4 = "docProps/core.xml"; + zip_add_file(zip, f$4, write_core_props(wb.Props, opts)); + ct.coreprops.push(f$4); + add_rels(opts.rels, 2, f$4, RELS.CORE_PROPS); + f$4 = "docProps/app.xml"; + if (wb.Props && wb.Props.SheetNames) {} else if (!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames; + else { + var _sn = []; + for (var _i$1 = 0; _i$1 < wb.SheetNames.length; ++_i$1) if ((wb.Workbook.Sheets[_i$1] || {}).Hidden != 2) _sn.push(wb.SheetNames[_i$1]); + wb.Props.SheetNames = _sn; + } + wb.Props.Worksheets = wb.Props.SheetNames.length; + zip_add_file(zip, f$4, write_ext_props(wb.Props, opts)); + ct.extprops.push(f$4); + add_rels(opts.rels, 3, f$4, RELS.EXT_PROPS); + if (wb.Custprops !== wb.Props && keys(wb.Custprops || {}).length > 0) { + f$4 = "docProps/custom.xml"; + zip_add_file(zip, f$4, write_cust_props(wb.Custprops, opts)); + ct.custprops.push(f$4); + add_rels(opts.rels, 4, f$4, RELS.CUST_PROPS); + } + var people = ["SheetJ5"]; + opts.tcid = 0; + for (rId = 1; rId <= wb.SheetNames.length; ++rId) { + var wsrels = { "!id": {} }; + var ws = wb.Sheets[wb.SheetNames[rId - 1]]; + var _type = (ws || {})["!type"] || "sheet"; + switch (_type) { + case "chart": + default: + f$4 = "xl/worksheets/sheet" + rId + "." + wbext; + zip_add_file(zip, f$4, write_ws_bin(rId - 1, opts, wb, wsrels)); + ct.sheets.push(f$4); + add_rels(opts.wbrels, -1, "worksheets/sheet" + rId + "." + wbext, RELS.WS[0]); + } + if (ws) { + var comments = ws["!comments"]; + var need_vml = false; + var cf = ""; + if (comments && comments.length > 0) { + var needtc = false; + comments.forEach(function(carr) { + carr[1].forEach(function(c$7) { + if (c$7.T == true) needtc = true; + }); + }); + if (needtc) { + cf = "xl/threadedComments/threadedComment" + rId + ".xml"; + zip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts)); + ct.threadedcomments.push(cf); + add_rels(wsrels, -1, "../threadedComments/threadedComment" + rId + ".xml", RELS.TCMNT); + } + cf = "xl/comments" + rId + "." + wbext; + zip_add_file(zip, cf, write_comments_bin(comments, opts)); + ct.comments.push(cf); + add_rels(wsrels, -1, "../comments" + rId + "." + wbext, RELS.CMNT); + need_vml = true; + } + if (ws["!legacy"]) { + if (need_vml) zip_add_file(zip, "xl/drawings/vmlDrawing" + rId + ".vml", write_vml(rId, ws["!comments"])); + } + delete ws["!comments"]; + delete ws["!legacy"]; + } + if (wsrels["!id"].rId1) zip_add_file(zip, get_rels_path(f$4), write_rels(wsrels)); + } + if (opts.Strings != null && opts.Strings.length > 0) { + f$4 = "xl/sharedStrings." + wbext; + zip_add_file(zip, f$4, write_sst_bin(opts.Strings, opts)); + ct.strs.push(f$4); + add_rels(opts.wbrels, -1, "sharedStrings." + wbext, RELS.SST); + } + f$4 = "xl/workbook." + wbext; + zip_add_file(zip, f$4, write_wb_bin(wb, opts)); + ct.workbooks.push(f$4); + add_rels(opts.rels, 1, f$4, RELS.WB); + f$4 = "xl/theme/theme1.xml"; + var ww = write_theme(wb.Themes, opts); + zip_add_file(zip, f$4, ww); + ct.themes.push(f$4); + add_rels(opts.wbrels, -1, "theme/theme1.xml", RELS.THEME); + f$4 = "xl/styles." + wbext; + zip_add_file(zip, f$4, write_sty_bin(wb, opts)); + ct.styles.push(f$4); + add_rels(opts.wbrels, -1, "styles." + wbext, RELS.STY); + if (wb.vbaraw && vbafmt) { + f$4 = "xl/vbaProject.bin"; + zip_add_file(zip, f$4, wb.vbaraw); + ct.vba.push(f$4); + add_rels(opts.wbrels, -1, "vbaProject.bin", RELS.VBA); + } + f$4 = "xl/metadata." + wbext; + zip_add_file(zip, f$4, write_xlmeta_bin()); + ct.metadata.push(f$4); + add_rels(opts.wbrels, -1, "metadata." + wbext, RELS.XLMETA); + if (people.length > 1) { + f$4 = "xl/persons/person.xml"; + zip_add_file(zip, f$4, write_people_xml(people, opts)); + ct.people.push(f$4); + add_rels(opts.wbrels, -1, "persons/person.xml", RELS.PEOPLE); + } + zip_add_file(zip, "[Content_Types].xml", write_ct(ct, opts)); + zip_add_file(zip, "_rels/.rels", write_rels(opts.rels)); + zip_add_file(zip, "xl/_rels/workbook." + wbext + ".rels", write_rels(opts.wbrels)); + delete opts.revssf; + delete opts.ssf; + return zip; +} +function write_zip_xlsx(wb, opts) { + if (wb && !wb.SSF) { + wb.SSF = dup(table_fmt); + } + if (wb && wb.SSF) { + make_ssf(); + SSF_load_table(wb.SSF); + opts.revssf = evert_num(wb.SSF); + opts.revssf[wb.SSF[65535]] = 0; + opts.ssf = wb.SSF; + } + opts.rels = {}; + opts.wbrels = {}; + opts.Strings = []; + opts.Strings.Count = 0; + opts.Strings.Unique = 0; + if (browser_has_Map) opts.revStrings = new Map(); + else { + opts.revStrings = {}; + opts.revStrings.foo = []; + delete opts.revStrings.foo; + } + var wbext = "xml"; + var vbafmt = VBAFMTS.indexOf(opts.bookType) > -1; + var ct = new_ct(); + fix_write_opts(opts = opts || {}); + var zip = zip_new(); + var f$4 = "", rId = 0; + opts.cellXfs = []; + get_cell_style(opts.cellXfs, {}, { revssf: { "General": 0 } }); + if (!wb.Props) wb.Props = {}; + f$4 = "docProps/core.xml"; + zip_add_file(zip, f$4, write_core_props(wb.Props, opts)); + ct.coreprops.push(f$4); + add_rels(opts.rels, 2, f$4, RELS.CORE_PROPS); + f$4 = "docProps/app.xml"; + if (wb.Props && wb.Props.SheetNames) {} else if (!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames; + else { + var _sn = []; + for (var _i$1 = 0; _i$1 < wb.SheetNames.length; ++_i$1) if ((wb.Workbook.Sheets[_i$1] || {}).Hidden != 2) _sn.push(wb.SheetNames[_i$1]); + wb.Props.SheetNames = _sn; + } + wb.Props.Worksheets = wb.Props.SheetNames.length; + zip_add_file(zip, f$4, write_ext_props(wb.Props, opts)); + ct.extprops.push(f$4); + add_rels(opts.rels, 3, f$4, RELS.EXT_PROPS); + if (wb.Custprops !== wb.Props && keys(wb.Custprops || {}).length > 0) { + f$4 = "docProps/custom.xml"; + zip_add_file(zip, f$4, write_cust_props(wb.Custprops, opts)); + ct.custprops.push(f$4); + add_rels(opts.rels, 4, f$4, RELS.CUST_PROPS); + } + var people = ["SheetJ5"]; + opts.tcid = 0; + for (rId = 1; rId <= wb.SheetNames.length; ++rId) { + var wsrels = { "!id": {} }; + var ws = wb.Sheets[wb.SheetNames[rId - 1]]; + var _type = (ws || {})["!type"] || "sheet"; + switch (_type) { + case "chart": + default: + f$4 = "xl/worksheets/sheet" + rId + "." + wbext; + zip_add_file(zip, f$4, write_ws_xml(rId - 1, opts, wb, wsrels)); + ct.sheets.push(f$4); + add_rels(opts.wbrels, -1, "worksheets/sheet" + rId + "." + wbext, RELS.WS[0]); + } + if (ws) { + var comments = ws["!comments"]; + var need_vml = false; + var cf = ""; + if (comments && comments.length > 0) { + var needtc = false; + comments.forEach(function(carr) { + carr[1].forEach(function(c$7) { + if (c$7.T == true) needtc = true; + }); + }); + if (needtc) { + cf = "xl/threadedComments/threadedComment" + rId + ".xml"; + zip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts)); + ct.threadedcomments.push(cf); + add_rels(wsrels, -1, "../threadedComments/threadedComment" + rId + ".xml", RELS.TCMNT); + } + cf = "xl/comments" + rId + "." + wbext; + zip_add_file(zip, cf, write_comments_xml(comments, opts)); + ct.comments.push(cf); + add_rels(wsrels, -1, "../comments" + rId + "." + wbext, RELS.CMNT); + need_vml = true; + } + if (ws["!legacy"]) { + if (need_vml) zip_add_file(zip, "xl/drawings/vmlDrawing" + rId + ".vml", write_vml(rId, ws["!comments"])); + } + delete ws["!comments"]; + delete ws["!legacy"]; + } + if (wsrels["!id"].rId1) zip_add_file(zip, get_rels_path(f$4), write_rels(wsrels)); + } + if (opts.Strings != null && opts.Strings.length > 0) { + f$4 = "xl/sharedStrings." + wbext; + zip_add_file(zip, f$4, write_sst_xml(opts.Strings, opts)); + ct.strs.push(f$4); + add_rels(opts.wbrels, -1, "sharedStrings." + wbext, RELS.SST); + } + f$4 = "xl/workbook." + wbext; + zip_add_file(zip, f$4, write_wb_xml(wb, opts)); + ct.workbooks.push(f$4); + add_rels(opts.rels, 1, f$4, RELS.WB); + f$4 = "xl/theme/theme1.xml"; + zip_add_file(zip, f$4, write_theme(wb.Themes, opts)); + ct.themes.push(f$4); + add_rels(opts.wbrels, -1, "theme/theme1.xml", RELS.THEME); + f$4 = "xl/styles." + wbext; + zip_add_file(zip, f$4, write_sty_xml(wb, opts)); + ct.styles.push(f$4); + add_rels(opts.wbrels, -1, "styles." + wbext, RELS.STY); + if (wb.vbaraw && vbafmt) { + f$4 = "xl/vbaProject.bin"; + zip_add_file(zip, f$4, wb.vbaraw); + ct.vba.push(f$4); + add_rels(opts.wbrels, -1, "vbaProject.bin", RELS.VBA); + } + f$4 = "xl/metadata." + wbext; + zip_add_file(zip, f$4, write_xlmeta_xml()); + ct.metadata.push(f$4); + add_rels(opts.wbrels, -1, "metadata." + wbext, RELS.XLMETA); + if (people.length > 1) { + f$4 = "xl/persons/person.xml"; + zip_add_file(zip, f$4, write_people_xml(people, opts)); + ct.people.push(f$4); + add_rels(opts.wbrels, -1, "persons/person.xml", RELS.PEOPLE); + } + zip_add_file(zip, "[Content_Types].xml", write_ct(ct, opts)); + zip_add_file(zip, "_rels/.rels", write_rels(opts.rels)); + zip_add_file(zip, "xl/_rels/workbook." + wbext + ".rels", write_rels(opts.wbrels)); + delete opts.revssf; + delete opts.ssf; + return zip; +} +function firstbyte(f$4, o$10) { + var x$2 = ""; + switch ((o$10 || {}).type || "base64") { + case "buffer": return [ + f$4[0], + f$4[1], + f$4[2], + f$4[3], + f$4[4], + f$4[5], + f$4[6], + f$4[7] + ]; + case "base64": + x$2 = Base64_decode(f$4.slice(0, 12)); + break; + case "binary": + x$2 = f$4; + break; + case "array": return [ + f$4[0], + f$4[1], + f$4[2], + f$4[3], + f$4[4], + f$4[5], + f$4[6], + f$4[7] + ]; + default: throw new Error("Unrecognized type " + (o$10 && o$10.type || "undefined")); + } + return [ + x$2.charCodeAt(0), + x$2.charCodeAt(1), + x$2.charCodeAt(2), + x$2.charCodeAt(3), + x$2.charCodeAt(4), + x$2.charCodeAt(5), + x$2.charCodeAt(6), + x$2.charCodeAt(7) + ]; +} +function read_cfb(cfb, opts) { + if (CFB.find(cfb, "EncryptedPackage")) return parse_xlsxcfb(cfb, opts); + return parse_xlscfb(cfb, opts); +} +function read_zip(data, opts) { + var zip, d$5 = data; + var o$10 = opts || {}; + if (!o$10.type) o$10.type = has_buf && Buffer.isBuffer(data) ? "buffer" : "base64"; + zip = zip_read(d$5, o$10); + return parse_zip(zip, o$10); +} +function read_plaintext(data, o$10) { + var i$7 = 0; + main: while (i$7 < data.length) switch (data.charCodeAt(i$7)) { + case 10: + case 13: + case 32: + ++i$7; + break; + case 60: return parse_xlml(data.slice(i$7), o$10); + default: break main; + } + return PRN.to_workbook(data, o$10); +} +function read_plaintext_raw(data, o$10) { + var str = "", bytes = firstbyte(data, o$10); + switch (o$10.type) { + case "base64": + str = Base64_decode(data); + break; + case "binary": + str = data; + break; + case "buffer": + str = data.toString("binary"); + break; + case "array": + str = cc2str(data); + break; + default: throw new Error("Unrecognized type " + o$10.type); + } + if (bytes[0] == 239 && bytes[1] == 187 && bytes[2] == 191) str = utf8read(str); + o$10.type = "binary"; + return read_plaintext(str, o$10); +} +function read_utf16(data, o$10) { + var d$5 = data; + if (o$10.type == "base64") d$5 = Base64_decode(d$5); + if (typeof ArrayBuffer !== "undefined" && data instanceof ArrayBuffer) d$5 = new Uint8Array(data); + d$5 = typeof $cptable !== "undefined" ? $cptable.utils.decode(1200, d$5.slice(2), "str") : has_buf && Buffer.isBuffer(data) ? data.slice(2).toString("utf16le") : typeof Uint8Array !== "undefined" && d$5 instanceof Uint8Array ? typeof TextDecoder !== "undefined" ? new TextDecoder("utf-16le").decode(d$5.slice(2)) : utf16lereadu(d$5.slice(2)) : utf16leread(d$5.slice(2)); + o$10.type = "binary"; + return read_plaintext(d$5, o$10); +} +function bstrify(data) { + return !data.match(/[^\x00-\x7F]/) ? data : utf8write(data); +} +function read_prn(data, d$5, o$10, str) { + if (str) { + o$10.type = "string"; + return PRN.to_workbook(data, o$10); + } + return PRN.to_workbook(d$5, o$10); +} +function readSync(data, opts) { + reset_cp(); + var o$10 = opts || {}; + if (o$10.codepage && typeof $cptable === "undefined") console.error("Codepage tables are not loaded. Non-ASCII characters may not give expected results"); + if (typeof ArrayBuffer !== "undefined" && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o$10 = dup(o$10), o$10.type = "array", o$10)); + if (typeof Int8Array !== "undefined" && data instanceof Int8Array) return readSync(new Uint8Array(data.buffer, data.byteOffset, data.length), o$10); + if (typeof Uint8Array !== "undefined" && data instanceof Uint8Array && !o$10.type) o$10.type = typeof Deno !== "undefined" ? "buffer" : "array"; + var d$5 = data, n$9 = [ + 0, + 0, + 0, + 0 + ], str = false; + if (o$10.cellStyles) { + o$10.cellNF = true; + o$10.sheetStubs = true; + } + _ssfopts = {}; + if (o$10.dateNF) _ssfopts.dateNF = o$10.dateNF; + if (!o$10.type) o$10.type = has_buf && Buffer.isBuffer(data) ? "buffer" : "base64"; + if (o$10.type == "file") { + o$10.type = has_buf ? "buffer" : "binary"; + d$5 = read_binary(data); + if (typeof Uint8Array !== "undefined" && !has_buf) o$10.type = "array"; + } + if (o$10.type == "string") { + str = true; + o$10.type = "binary"; + o$10.codepage = 65001; + d$5 = bstrify(data); + } + if (o$10.type == "array" && typeof Uint8Array !== "undefined" && data instanceof Uint8Array && typeof ArrayBuffer !== "undefined") { + var ab = new ArrayBuffer(3), vu = new Uint8Array(ab); + vu.foo = "bar"; + if (!vu.foo) { + o$10 = dup(o$10); + o$10.type = "array"; + return readSync(ab2a(d$5), o$10); + } + } + switch ((n$9 = firstbyte(d$5, o$10))[0]) { + case 208: + if (n$9[1] === 207 && n$9[2] === 17 && n$9[3] === 224 && n$9[4] === 161 && n$9[5] === 177 && n$9[6] === 26 && n$9[7] === 225) return read_cfb(CFB.read(d$5, o$10), o$10); + break; + case 9: + if (n$9[1] <= 8) return parse_xlscfb(d$5, o$10); + break; + case 60: return parse_xlml(d$5, o$10); + case 73: + if (n$9[1] === 73 && n$9[2] === 42 && n$9[3] === 0) throw new Error("TIFF Image File is not a spreadsheet"); + if (n$9[1] === 68) return read_wb_ID(d$5, o$10); + break; + case 84: + if (n$9[1] === 65 && n$9[2] === 66 && n$9[3] === 76) return DIF.to_workbook(d$5, o$10); + break; + case 80: return n$9[1] === 75 && n$9[2] < 9 && n$9[3] < 9 ? read_zip(d$5, o$10) : read_prn(data, d$5, o$10, str); + case 239: return n$9[3] === 60 ? parse_xlml(d$5, o$10) : read_prn(data, d$5, o$10, str); + case 255: + if (n$9[1] === 254) { + return read_utf16(d$5, o$10); + } else if (n$9[1] === 0 && n$9[2] === 2 && n$9[3] === 0) return WK_.to_workbook(d$5, o$10); + break; + case 0: + if (n$9[1] === 0) { + if (n$9[2] >= 2 && n$9[3] === 0) return WK_.to_workbook(d$5, o$10); + if (n$9[2] === 0 && (n$9[3] === 8 || n$9[3] === 9)) return WK_.to_workbook(d$5, o$10); + } + break; + case 3: + case 131: + case 139: + case 140: return DBF.to_workbook(d$5, o$10); + case 123: + if (n$9[1] === 92 && n$9[2] === 114 && n$9[3] === 116) return rtf_to_workbook(d$5, o$10); + break; + case 10: + case 13: + case 32: return read_plaintext_raw(d$5, o$10); + case 137: + if (n$9[1] === 80 && n$9[2] === 78 && n$9[3] === 71) throw new Error("PNG Image File is not a spreadsheet"); + break; + case 8: + if (n$9[1] === 231) throw new Error("Unsupported Multiplan 1.x file!"); + break; + case 12: + if (n$9[1] === 236) throw new Error("Unsupported Multiplan 2.x file!"); + if (n$9[1] === 237) throw new Error("Unsupported Multiplan 3.x file!"); + break; + } + if (DBF_SUPPORTED_VERSIONS.indexOf(n$9[0]) > -1 && n$9[2] <= 12 && n$9[3] <= 31) return DBF.to_workbook(d$5, o$10); + return read_prn(data, d$5, o$10, str); +} +function readFileSync(filename, opts) { + var o$10 = opts || {}; + o$10.type = "file"; + return readSync(filename, o$10); +} +function write_cfb_ctr(cfb, o$10) { + switch (o$10.type) { + case "base64": + case "binary": break; + case "buffer": + case "array": + o$10.type = ""; + break; + case "file": return write_dl(o$10.file, CFB.write(cfb, { type: has_buf ? "buffer" : "" })); + case "string": throw new Error("'string' output type invalid for '" + o$10.bookType + "' files"); + default: throw new Error("Unrecognized type " + o$10.type); + } + return CFB.write(cfb, o$10); +} +function write_zip(wb, opts) { + switch (opts.bookType) { + case "ods": return write_ods(wb, opts); + case "numbers": return write_numbers_iwa(wb, opts); + case "xlsb": return write_zip_xlsb(wb, opts); + default: return write_zip_xlsx(wb, opts); + } +} +function write_zip_type(wb, opts) { + var o$10 = dup(opts || {}); + var z$2 = write_zip(wb, o$10); + return write_zip_denouement(z$2, o$10); +} +function write_zip_typeXLSX(wb, opts) { + var o$10 = dup(opts || {}); + var z$2 = write_zip_xlsx(wb, o$10); + return write_zip_denouement(z$2, o$10); +} +function write_zip_denouement(z$2, o$10) { + var oopts = {}; + var ftype = has_buf ? "nodebuffer" : typeof Uint8Array !== "undefined" ? "array" : "string"; + if (o$10.compression) oopts.compression = "DEFLATE"; + if (o$10.password) oopts.type = ftype; + else switch (o$10.type) { + case "base64": + oopts.type = "base64"; + break; + case "binary": + oopts.type = "string"; + break; + case "string": throw new Error("'string' output type invalid for '" + o$10.bookType + "' files"); + case "buffer": + case "file": + oopts.type = ftype; + break; + default: throw new Error("Unrecognized type " + o$10.type); + } + var out = z$2.FullPaths ? CFB.write(z$2, { + fileType: "zip", + type: { + "nodebuffer": "buffer", + "string": "binary" + }[oopts.type] || oopts.type, + compression: !!o$10.compression + }) : z$2.generate(oopts); + if (typeof Deno !== "undefined") { + if (typeof out == "string") { + if (o$10.type == "binary" || o$10.type == "base64") return out; + out = new Uint8Array(s2ab(out)); + } + } + if (o$10.password && typeof encrypt_agile !== "undefined") return write_cfb_ctr(encrypt_agile(out, o$10.password), o$10); + if (o$10.type === "file") return write_dl(o$10.file, out); + return o$10.type == "string" ? utf8read(out) : out; +} +function write_cfb_type(wb, opts) { + var o$10 = opts || {}; + var cfb = write_xlscfb(wb, o$10); + return write_cfb_ctr(cfb, o$10); +} +function write_string_type(out, opts, bom) { + if (!bom) bom = ""; + var o$10 = bom + out; + switch (opts.type) { + case "base64": return Base64_encode(utf8write(o$10)); + case "binary": return utf8write(o$10); + case "string": return out; + case "file": return write_dl(opts.file, o$10, "utf8"); + case "buffer": { + if (has_buf) return Buffer_from(o$10, "utf8"); + else if (typeof TextEncoder !== "undefined") return new TextEncoder().encode(o$10); + else return write_string_type(o$10, { type: "binary" }).split("").map(function(c$7) { + return c$7.charCodeAt(0); + }); + } + } + throw new Error("Unrecognized type " + opts.type); +} +function write_stxt_type(out, opts) { + switch (opts.type) { + case "base64": return Base64_encode_pass(out); + case "binary": return out; + case "string": return out; + case "file": return write_dl(opts.file, out, "binary"); + case "buffer": { + if (has_buf) return Buffer_from(out, "binary"); + else return out.split("").map(function(c$7) { + return c$7.charCodeAt(0); + }); + } + } + throw new Error("Unrecognized type " + opts.type); +} +function write_binary_type(out, opts) { + switch (opts.type) { + case "string": + case "base64": + case "binary": + var bstr = ""; + for (var i$7 = 0; i$7 < out.length; ++i$7) bstr += String.fromCharCode(out[i$7]); + return opts.type == "base64" ? Base64_encode(bstr) : opts.type == "string" ? utf8read(bstr) : bstr; + case "file": return write_dl(opts.file, out); + case "buffer": return out; + default: throw new Error("Unrecognized type " + opts.type); + } +} +function writeSyncXLSX(wb, opts) { + reset_cp(); + check_wb(wb); + var o$10 = dup(opts || {}); + if (o$10.cellStyles) { + o$10.cellNF = true; + o$10.sheetStubs = true; + } + if (o$10.type == "array") { + o$10.type = "binary"; + var out = writeSyncXLSX(wb, o$10); + o$10.type = "array"; + return s2ab(out); + } + return write_zip_typeXLSX(wb, o$10); +} +function writeSync(wb, opts) { + reset_cp(); + check_wb(wb); + var o$10 = dup(opts || {}); + if (o$10.cellStyles) { + o$10.cellNF = true; + o$10.sheetStubs = true; + } + if (o$10.type == "array") { + o$10.type = "binary"; + var out = writeSync(wb, o$10); + o$10.type = "array"; + return s2ab(out); + } + var idx = 0; + if (o$10.sheet) { + if (typeof o$10.sheet == "number") idx = o$10.sheet; + else idx = wb.SheetNames.indexOf(o$10.sheet); + if (!wb.SheetNames[idx]) throw new Error("Sheet not found: " + o$10.sheet + " : " + typeof o$10.sheet); + } + switch (o$10.bookType || "xlsb") { + case "xml": + case "xlml": return write_string_type(write_xlml(wb, o$10), o$10); + case "slk": + case "sylk": return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o$10, wb), o$10); + case "htm": + case "html": return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o$10), o$10); + case "txt": return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o$10), o$10); + case "csv": return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o$10), o$10, ""); + case "dif": return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o$10), o$10); + case "dbf": return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o$10), o$10); + case "prn": return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o$10), o$10); + case "rtf": return write_string_type(sheet_to_rtf(wb.Sheets[wb.SheetNames[idx]], o$10), o$10); + case "eth": return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o$10), o$10); + case "fods": return write_string_type(write_ods(wb, o$10), o$10); + case "wk1": return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o$10), o$10); + case "wk3": return write_binary_type(WK_.book_to_wk3(wb, o$10), o$10); + case "biff2": if (!o$10.biff) o$10.biff = 2; + case "biff3": if (!o$10.biff) o$10.biff = 3; + case "biff4": + if (!o$10.biff) o$10.biff = 4; + return write_binary_type(write_biff_buf(wb, o$10), o$10); + case "biff5": if (!o$10.biff) o$10.biff = 5; + case "biff8": + case "xla": + case "xls": + if (!o$10.biff) o$10.biff = 8; + return write_cfb_type(wb, o$10); + case "xlsx": + case "xlsm": + case "xlam": + case "xlsb": + case "numbers": + case "ods": return write_zip_type(wb, o$10); + default: throw new Error("Unrecognized bookType |" + o$10.bookType + "|"); + } +} +function resolve_book_type(o$10) { + if (o$10.bookType) return; + var _BT = { + "xls": "biff8", + "htm": "html", + "slk": "sylk", + "socialcalc": "eth", + "Sh33tJS": "WTF" + }; + var ext = o$10.file.slice(o$10.file.lastIndexOf(".")).toLowerCase(); + if (ext.match(/^\.[a-z]+$/)) o$10.bookType = ext.slice(1); + o$10.bookType = _BT[o$10.bookType] || o$10.bookType; +} +function writeFileSync(wb, filename, opts) { + var o$10 = opts || {}; + o$10.type = "file"; + o$10.file = filename; + resolve_book_type(o$10); + return writeSync(wb, o$10); +} +function writeFileSyncXLSX(wb, filename, opts) { + var o$10 = opts || {}; + o$10.type = "file"; + o$10.file = filename; + resolve_book_type(o$10); + return writeSyncXLSX(wb, o$10); +} +function writeFileAsync(filename, wb, opts, cb) { + var o$10 = opts || {}; + o$10.type = "file"; + o$10.file = filename; + resolve_book_type(o$10); + o$10.type = "buffer"; + var _cb = cb; + if (!(_cb instanceof Function)) _cb = opts; + return _fs.writeFile(filename, writeSync(wb, o$10), _cb); +} +function make_json_row(sheet, r$10, R$1, cols, header, hdr, o$10) { + var rr = encode_row(R$1); + var defval = o$10.defval, raw = o$10.raw || !Object.prototype.hasOwnProperty.call(o$10, "raw"); + var isempty = true, dense = sheet["!data"] != null; + var row = header === 1 ? [] : {}; + if (header !== 1) { + if (Object.defineProperty) try { + Object.defineProperty(row, "__rowNum__", { + value: R$1, + enumerable: false + }); + } catch (e$10) { + row.__rowNum__ = R$1; + } + else row.__rowNum__ = R$1; + } + if (!dense || sheet["!data"][R$1]) for (var C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) { + var val$1 = dense ? (sheet["!data"][R$1] || [])[C$2] : sheet[cols[C$2] + rr]; + if (val$1 == null || val$1.t === undefined) { + if (defval === undefined) continue; + if (hdr[C$2] != null) { + row[hdr[C$2]] = defval; + } + continue; + } + var v$3 = val$1.v; + switch (val$1.t) { + case "z": + if (v$3 == null) break; + continue; + case "e": + v$3 = v$3 == 0 ? null : void 0; + break; + case "s": + case "b": + case "n": + if (!val$1.z || !fmt_is_date(val$1.z)) break; + v$3 = numdate(v$3); + if (typeof v$3 == "number") break; + case "d": + if (!(o$10 && (o$10.UTC || o$10.raw === false))) v$3 = utc_to_local(new Date(v$3)); + break; + default: throw new Error("unrecognized type " + val$1.t); + } + if (hdr[C$2] != null) { + if (v$3 == null) { + if (val$1.t == "e" && v$3 === null) row[hdr[C$2]] = null; + else if (defval !== undefined) row[hdr[C$2]] = defval; + else if (raw && v$3 === null) row[hdr[C$2]] = null; + else continue; + } else { + row[hdr[C$2]] = (val$1.t === "n" && typeof o$10.rawNumbers === "boolean" ? o$10.rawNumbers : raw) ? v$3 : format_cell(val$1, v$3, o$10); + } + if (v$3 != null) isempty = false; + } + } + return { + row, + isempty + }; +} +function sheet_to_json(sheet, opts) { + if (sheet == null || sheet["!ref"] == null) return []; + var val$1 = { + t: "n", + v: 0 + }, header = 0, offset = 1, hdr = [], v$3 = 0, vv = ""; + var r$10 = { + s: { + r: 0, + c: 0 + }, + e: { + r: 0, + c: 0 + } + }; + var o$10 = opts || {}; + var range = o$10.range != null ? o$10.range : sheet["!ref"]; + if (o$10.header === 1) header = 1; + else if (o$10.header === "A") header = 2; + else if (Array.isArray(o$10.header)) header = 3; + else if (o$10.header == null) header = 0; + switch (typeof range) { + case "string": + r$10 = safe_decode_range(range); + break; + case "number": + r$10 = safe_decode_range(sheet["!ref"]); + r$10.s.r = range; + break; + default: r$10 = range; + } + if (header > 0) offset = 0; + var rr = encode_row(r$10.s.r); + var cols = []; + var out = []; + var outi = 0, counter = 0; + var dense = sheet["!data"] != null; + var R$1 = r$10.s.r, C$2 = 0; + var header_cnt = {}; + if (dense && !sheet["!data"][R$1]) sheet["!data"][R$1] = []; + var colinfo = o$10.skipHidden && sheet["!cols"] || []; + var rowinfo = o$10.skipHidden && sheet["!rows"] || []; + for (C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) { + if ((colinfo[C$2] || {}).hidden) continue; + cols[C$2] = encode_col(C$2); + val$1 = dense ? sheet["!data"][R$1][C$2] : sheet[cols[C$2] + rr]; + switch (header) { + case 1: + hdr[C$2] = C$2 - r$10.s.c; + break; + case 2: + hdr[C$2] = cols[C$2]; + break; + case 3: + hdr[C$2] = o$10.header[C$2 - r$10.s.c]; + break; + default: + if (val$1 == null) val$1 = { + w: "__EMPTY", + t: "s" + }; + vv = v$3 = format_cell(val$1, null, o$10); + counter = header_cnt[v$3] || 0; + if (!counter) header_cnt[v$3] = 1; + else { + do { + vv = v$3 + "_" + counter++; + } while (header_cnt[vv]); + header_cnt[v$3] = counter; + header_cnt[vv] = 1; + } + hdr[C$2] = vv; + } + } + for (R$1 = r$10.s.r + offset; R$1 <= r$10.e.r; ++R$1) { + if ((rowinfo[R$1] || {}).hidden) continue; + var row = make_json_row(sheet, r$10, R$1, cols, header, hdr, o$10); + if (row.isempty === false || (header === 1 ? o$10.blankrows !== false : !!o$10.blankrows)) out[outi++] = row.row; + } + out.length = outi; + return out; +} +function make_csv_row(sheet, r$10, R$1, cols, fs, rs, FS, w$2, o$10) { + var isempty = true; + var row = [], txt = "", rr = encode_row(R$1); + var dense = sheet["!data"] != null; + var datarow = dense && sheet["!data"][R$1] || []; + for (var C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) { + if (!cols[C$2]) continue; + var val$1 = dense ? datarow[C$2] : sheet[cols[C$2] + rr]; + if (val$1 == null) txt = ""; + else if (val$1.v != null) { + isempty = false; + txt = "" + (o$10.rawNumbers && val$1.t == "n" ? val$1.v : format_cell(val$1, null, o$10)); + for (var i$7 = 0, cc = 0; i$7 !== txt.length; ++i$7) if ((cc = txt.charCodeAt(i$7)) === fs || cc === rs || cc === 34 || o$10.forceQuotes) { + txt = "\"" + txt.replace(qreg, "\"\"") + "\""; + break; + } + if (txt == "ID" && w$2 == 0 && row.length == 0) txt = "\"ID\""; + } else if (val$1.f != null && !val$1.F) { + isempty = false; + txt = "=" + val$1.f; + if (txt.indexOf(",") >= 0) txt = "\"" + txt.replace(qreg, "\"\"") + "\""; + } else txt = ""; + row.push(txt); + } + if (o$10.strip) while (row[row.length - 1] === "") --row.length; + if (o$10.blankrows === false && isempty) return null; + return row.join(FS); +} +function sheet_to_csv(sheet, opts) { + var out = []; + var o$10 = opts == null ? {} : opts; + if (sheet == null || sheet["!ref"] == null) return ""; + var r$10 = safe_decode_range(sheet["!ref"]); + var FS = o$10.FS !== undefined ? o$10.FS : ",", fs = FS.charCodeAt(0); + var RS = o$10.RS !== undefined ? o$10.RS : "\n", rs = RS.charCodeAt(0); + var row = "", cols = []; + var colinfo = o$10.skipHidden && sheet["!cols"] || []; + var rowinfo = o$10.skipHidden && sheet["!rows"] || []; + for (var C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) if (!(colinfo[C$2] || {}).hidden) cols[C$2] = encode_col(C$2); + var w$2 = 0; + for (var R$1 = r$10.s.r; R$1 <= r$10.e.r; ++R$1) { + if ((rowinfo[R$1] || {}).hidden) continue; + row = make_csv_row(sheet, r$10, R$1, cols, fs, rs, FS, w$2, o$10); + if (row == null) { + continue; + } + if (row || o$10.blankrows !== false) out.push((w$2++ ? RS : "") + row); + } + return out.join(""); +} +function sheet_to_txt(sheet, opts) { + if (!opts) opts = {}; + opts.FS = " "; + opts.RS = "\n"; + var s$5 = sheet_to_csv(sheet, opts); + if (typeof $cptable == "undefined" || opts.type == "string") return s$5; + var o$10 = $cptable.utils.encode(1200, s$5, "str"); + return String.fromCharCode(255) + String.fromCharCode(254) + o$10; +} +function sheet_to_formulae(sheet, opts) { + var y$3 = "", x$2, val$1 = ""; + if (sheet == null || sheet["!ref"] == null) return []; + var r$10 = safe_decode_range(sheet["!ref"]), rr = "", cols = [], C$2; + var cmds = []; + var dense = sheet["!data"] != null; + for (C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) cols[C$2] = encode_col(C$2); + for (var R$1 = r$10.s.r; R$1 <= r$10.e.r; ++R$1) { + rr = encode_row(R$1); + for (C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) { + y$3 = cols[C$2] + rr; + x$2 = dense ? (sheet["!data"][R$1] || [])[C$2] : sheet[y$3]; + val$1 = ""; + if (x$2 === undefined) continue; + else if (x$2.F != null) { + y$3 = x$2.F; + if (!x$2.f) continue; + val$1 = x$2.f; + if (y$3.indexOf(":") == -1) y$3 = y$3 + ":" + y$3; + } + if (x$2.f != null) val$1 = x$2.f; + else if (opts && opts.values === false) continue; + else if (x$2.t == "z") continue; + else if (x$2.t == "n" && x$2.v != null) val$1 = "" + x$2.v; + else if (x$2.t == "b") val$1 = x$2.v ? "TRUE" : "FALSE"; + else if (x$2.w !== undefined) val$1 = "'" + x$2.w; + else if (x$2.v === undefined) continue; + else if (x$2.t == "s") val$1 = "'" + x$2.v; + else val$1 = "" + x$2.v; + cmds[cmds.length] = y$3 + "=" + val$1; + } + } + return cmds; +} +function sheet_add_json(_ws, js, opts) { + var o$10 = opts || {}; + var dense = _ws ? _ws["!data"] != null : o$10.dense; + if (DENSE != null && dense == null) dense = DENSE; + var offset = +!o$10.skipHeader; + var ws = _ws || {}; + if (!_ws && dense) ws["!data"] = []; + var _R = 0, _C = 0; + if (ws && o$10.origin != null) { + if (typeof o$10.origin == "number") _R = o$10.origin; + else { + var _origin = typeof o$10.origin == "string" ? decode_cell(o$10.origin) : o$10.origin; + _R = _origin.r; + _C = _origin.c; + } + } + var range = { + s: { + c: 0, + r: 0 + }, + e: { + c: _C, + r: _R + js.length - 1 + offset + } + }; + if (ws["!ref"]) { + var _range = safe_decode_range(ws["!ref"]); + range.e.c = Math.max(range.e.c, _range.e.c); + range.e.r = Math.max(range.e.r, _range.e.r); + if (_R == -1) { + _R = _range.e.r + 1; + range.e.r = _R + js.length - 1 + offset; + } + } else { + if (_R == -1) { + _R = 0; + range.e.r = js.length - 1 + offset; + } + } + var hdr = o$10.header || [], C$2 = 0; + var ROW = []; + js.forEach(function(JS, R$1) { + if (dense && !ws["!data"][_R + R$1 + offset]) ws["!data"][_R + R$1 + offset] = []; + if (dense) ROW = ws["!data"][_R + R$1 + offset]; + keys(JS).forEach(function(k$2) { + if ((C$2 = hdr.indexOf(k$2)) == -1) hdr[C$2 = hdr.length] = k$2; + var v$3 = JS[k$2]; + var t$6 = "z"; + var z$2 = ""; + var ref = dense ? "" : encode_col(_C + C$2) + encode_row(_R + R$1 + offset); + var cell = dense ? ROW[_C + C$2] : ws[ref]; + if (v$3 && typeof v$3 === "object" && !(v$3 instanceof Date)) { + if (dense) ROW[_C + C$2] = v$3; + else ws[ref] = v$3; + } else { + if (typeof v$3 == "number") t$6 = "n"; + else if (typeof v$3 == "boolean") t$6 = "b"; + else if (typeof v$3 == "string") t$6 = "s"; + else if (v$3 instanceof Date) { + t$6 = "d"; + if (!o$10.UTC) v$3 = local_to_utc(v$3); + if (!o$10.cellDates) { + t$6 = "n"; + v$3 = datenum(v$3); + } + z$2 = cell != null && cell.z && fmt_is_date(cell.z) ? cell.z : o$10.dateNF || table_fmt[14]; + } else if (v$3 === null && o$10.nullError) { + t$6 = "e"; + v$3 = 0; + } + if (!cell) { + if (!dense) ws[ref] = cell = { + t: t$6, + v: v$3 + }; + else ROW[_C + C$2] = cell = { + t: t$6, + v: v$3 + }; + } else { + cell.t = t$6; + cell.v = v$3; + delete cell.w; + delete cell.R; + if (z$2) cell.z = z$2; + } + if (z$2) cell.z = z$2; + } + }); + }); + range.e.c = Math.max(range.e.c, _C + hdr.length - 1); + var __R = encode_row(_R); + if (dense && !ws["!data"][_R]) ws["!data"][_R] = []; + if (offset) for (C$2 = 0; C$2 < hdr.length; ++C$2) { + if (dense) ws["!data"][_R][C$2 + _C] = { + t: "s", + v: hdr[C$2] + }; + else ws[encode_col(C$2 + _C) + __R] = { + t: "s", + v: hdr[C$2] + }; + } + ws["!ref"] = encode_range(range); + return ws; +} +function json_to_sheet(js, opts) { + return sheet_add_json(null, js, opts); +} +function ws_get_cell_stub(ws, R$1, C$2) { + if (typeof R$1 == "string") { + if (ws["!data"] != null) { + var RC = decode_cell(R$1); + if (!ws["!data"][RC.r]) ws["!data"][RC.r] = []; + return ws["!data"][RC.r][RC.c] || (ws["!data"][RC.r][RC.c] = { t: "z" }); + } + return ws[R$1] || (ws[R$1] = { t: "z" }); + } + if (typeof R$1 != "number") return ws_get_cell_stub(ws, encode_cell(R$1)); + return ws_get_cell_stub(ws, encode_col(C$2 || 0) + encode_row(R$1)); +} +function wb_sheet_idx(wb, sh) { + if (typeof sh == "number") { + if (sh >= 0 && wb.SheetNames.length > sh) return sh; + throw new Error("Cannot find sheet # " + sh); + } else if (typeof sh == "string") { + var idx = wb.SheetNames.indexOf(sh); + if (idx > -1) return idx; + throw new Error("Cannot find sheet name |" + sh + "|"); + } else throw new Error("Cannot find sheet |" + sh + "|"); +} +function book_new(ws, wsname) { + var wb = { + SheetNames: [], + Sheets: {} + }; + if (ws) book_append_sheet(wb, ws, wsname || "Sheet1"); + return wb; +} +function book_append_sheet(wb, ws, name, roll) { + var i$7 = 1; + if (!name) { + for (; i$7 <= 65535; ++i$7, name = undefined) if (wb.SheetNames.indexOf(name = "Sheet" + i$7) == -1) break; + } + if (!name || wb.SheetNames.length >= 65535) throw new Error("Too many worksheets"); + if (roll && wb.SheetNames.indexOf(name) >= 0 && name.length < 32) { + var m$3 = name.match(/\d+$/); + i$7 = m$3 && +m$3[0] || 0; + var root = m$3 && name.slice(0, m$3.index) || name; + for (++i$7; i$7 <= 65535; ++i$7) if (wb.SheetNames.indexOf(name = root + i$7) == -1) break; + } + check_ws_name(name); + if (wb.SheetNames.indexOf(name) >= 0) throw new Error("Worksheet with name |" + name + "| already exists!"); + wb.SheetNames.push(name); + wb.Sheets[name] = ws; + return name; +} +function book_set_sheet_visibility(wb, sh, vis) { + if (!wb.Workbook) wb.Workbook = {}; + if (!wb.Workbook.Sheets) wb.Workbook.Sheets = []; + var idx = wb_sheet_idx(wb, sh); + if (!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {}; + switch (vis) { + case 0: + case 1: + case 2: break; + default: throw new Error("Bad sheet visibility setting " + vis); + } + wb.Workbook.Sheets[idx].Hidden = vis; +} +function cell_set_number_format(cell, fmt) { + cell.z = fmt; + return cell; +} +function cell_set_hyperlink(cell, target, tooltip) { + if (!target) { + delete cell.l; + } else { + cell.l = { Target: target }; + if (tooltip) cell.l.Tooltip = tooltip; + } + return cell; +} +function cell_set_internal_link(cell, range, tooltip) { + return cell_set_hyperlink(cell, "#" + range, tooltip); +} +function cell_add_comment(cell, text$2, author) { + if (!cell.c) cell.c = []; + cell.c.push({ + t: text$2, + a: author || "SheetJS" + }); +} +function sheet_set_array_formula(ws, range, formula, dynamic) { + var rng = typeof range != "string" ? range : safe_decode_range(range); + var rngstr = typeof range == "string" ? range : encode_range(range); + for (var R$1 = rng.s.r; R$1 <= rng.e.r; ++R$1) for (var C$2 = rng.s.c; C$2 <= rng.e.c; ++C$2) { + var cell = ws_get_cell_stub(ws, R$1, C$2); + cell.t = "n"; + cell.F = rngstr; + delete cell.v; + if (R$1 == rng.s.r && C$2 == rng.s.c) { + cell.f = formula; + if (dynamic) cell.D = true; + } + } + var wsr = decode_range(ws["!ref"]); + if (wsr.s.r > rng.s.r) wsr.s.r = rng.s.r; + if (wsr.s.c > rng.s.c) wsr.s.c = rng.s.c; + if (wsr.e.r < rng.e.r) wsr.e.r = rng.e.r; + if (wsr.e.c < rng.e.c) wsr.e.c = rng.e.c; + ws["!ref"] = encode_range(wsr); + return ws; +} +function set_readable(R$1) { + _Readable = R$1; +} +function write_csv_stream(sheet, opts) { + var stream = _Readable(); + var o$10 = opts == null ? {} : opts; + if (sheet == null || sheet["!ref"] == null) { + stream.push(null); + return stream; + } + var r$10 = safe_decode_range(sheet["!ref"]); + var FS = o$10.FS !== undefined ? o$10.FS : ",", fs = FS.charCodeAt(0); + var RS = o$10.RS !== undefined ? o$10.RS : "\n", rs = RS.charCodeAt(0); + var row = "", cols = []; + var colinfo = o$10.skipHidden && sheet["!cols"] || []; + var rowinfo = o$10.skipHidden && sheet["!rows"] || []; + for (var C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) if (!(colinfo[C$2] || {}).hidden) cols[C$2] = encode_col(C$2); + var R$1 = r$10.s.r; + var BOM = false, w$2 = 0; + stream._read = function() { + if (!BOM) { + BOM = true; + return stream.push(""); + } + while (R$1 <= r$10.e.r) { + ++R$1; + if ((rowinfo[R$1 - 1] || {}).hidden) continue; + row = make_csv_row(sheet, r$10, R$1 - 1, cols, fs, rs, FS, w$2, o$10); + if (row != null) { + if (row || o$10.blankrows !== false) return stream.push((w$2++ ? RS : "") + row); + } + } + return stream.push(null); + }; + return stream; +} +function write_html_stream(ws, opts) { + var stream = _Readable(); + var o$10 = opts || {}; + var header = o$10.header != null ? o$10.header : HTML_BEGIN; + var footer = o$10.footer != null ? o$10.footer : HTML_END; + stream.push(header); + var r$10 = decode_range(ws["!ref"]); + stream.push(make_html_preamble(ws, r$10, o$10)); + var R$1 = r$10.s.r; + var end = false; + stream._read = function() { + if (R$1 > r$10.e.r) { + if (!end) { + end = true; + stream.push("" + footer); + } + return stream.push(null); + } + while (R$1 <= r$10.e.r) { + stream.push(make_html_row(ws, r$10, R$1, o$10)); + ++R$1; + break; + } + }; + return stream; +} +function write_json_stream(sheet, opts) { + var stream = _Readable({ objectMode: true }); + if (sheet == null || sheet["!ref"] == null) { + stream.push(null); + return stream; + } + var val$1 = { + t: "n", + v: 0 + }, header = 0, offset = 1, hdr = [], v$3 = 0, vv = ""; + var r$10 = { + s: { + r: 0, + c: 0 + }, + e: { + r: 0, + c: 0 + } + }; + var o$10 = opts || {}; + var range = o$10.range != null ? o$10.range : sheet["!ref"]; + if (o$10.header === 1) header = 1; + else if (o$10.header === "A") header = 2; + else if (Array.isArray(o$10.header)) header = 3; + switch (typeof range) { + case "string": + r$10 = safe_decode_range(range); + break; + case "number": + r$10 = safe_decode_range(sheet["!ref"]); + r$10.s.r = range; + break; + default: r$10 = range; + } + if (header > 0) offset = 0; + var rr = encode_row(r$10.s.r); + var cols = []; + var counter = 0; + var dense = sheet["!data"] != null; + var R$1 = r$10.s.r, C$2 = 0; + var header_cnt = {}; + if (dense && !sheet["!data"][R$1]) sheet["!data"][R$1] = []; + var colinfo = o$10.skipHidden && sheet["!cols"] || []; + var rowinfo = o$10.skipHidden && sheet["!rows"] || []; + for (C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) { + if ((colinfo[C$2] || {}).hidden) continue; + cols[C$2] = encode_col(C$2); + val$1 = dense ? sheet["!data"][R$1][C$2] : sheet[cols[C$2] + rr]; + switch (header) { + case 1: + hdr[C$2] = C$2 - r$10.s.c; + break; + case 2: + hdr[C$2] = cols[C$2]; + break; + case 3: + hdr[C$2] = o$10.header[C$2 - r$10.s.c]; + break; + default: + if (val$1 == null) val$1 = { + w: "__EMPTY", + t: "s" + }; + vv = v$3 = format_cell(val$1, null, o$10); + counter = header_cnt[v$3] || 0; + if (!counter) header_cnt[v$3] = 1; + else { + do { + vv = v$3 + "_" + counter++; + } while (header_cnt[vv]); + header_cnt[v$3] = counter; + header_cnt[vv] = 1; + } + hdr[C$2] = vv; + } + } + R$1 = r$10.s.r + offset; + stream._read = function() { + while (R$1 <= r$10.e.r) { + if ((rowinfo[R$1 - 1] || {}).hidden) continue; + var row = make_json_row(sheet, r$10, R$1, cols, header, hdr, o$10); + ++R$1; + if (row.isempty === false || (header === 1 ? o$10.blankrows !== false : !!o$10.blankrows)) { + stream.push(row.row); + return; + } + } + return stream.push(null); + }; + return stream; +} +function write_xlml_stream(wb, o$10) { + var stream = _Readable(); + var opts = o$10 == null ? {} : o$10; + var stride = +opts.stride || 10; + if (!wb.SSF) wb.SSF = dup(table_fmt); + if (wb.SSF) { + make_ssf(); + SSF_load_table(wb.SSF); + opts.revssf = evert_num(wb.SSF); + opts.revssf[wb.SSF[65535]] = 0; + opts.ssf = wb.SSF; + opts.cellXfs = []; + get_cell_style(opts.cellXfs, {}, { revssf: { "General": 0 } }); + } + wb.SheetNames.forEach(function(n$9) { + var ws$1 = wb.Sheets[n$9]; + if (!ws$1 || !ws$1["!ref"]) return; + var range$1 = decode_range(ws$1["!ref"]); + var dense$1 = ws$1["!data"] != null; + var ddata = dense$1 ? ws$1["!data"] : []; + var addr$1 = { + r: 0, + c: 0 + }; + for (var R$2 = range$1.s.r; R$2 <= range$1.e.r; ++R$2) { + addr$1.r = R$2; + if (dense$1 && !ddata[R$2]) continue; + for (var C$2 = range$1.s.c; C$2 <= range$1.e.c; ++C$2) { + addr$1.c = C$2; + var cell = dense$1 ? ddata[R$2][C$2] : ws$1[encode_col(C$2) + encode_row(R$2)]; + if (!cell) continue; + if (cell.t == "d" && cell.z == null) { + cell = dup(cell); + cell.z = table_fmt[14]; + } + void get_cell_style(opts.cellXfs, cell, opts); + } + } + }); + var sty = write_sty_xlml(wb, opts); + var stage = 0, wsidx = 0, ws = wb.Sheets[wb.SheetNames[wsidx]], range = safe_decode_range(ws), R$1 = -1, T$3 = false; + var marr = [], mi = 0, dense = false, darr = [], addr = { + r: 0, + c: 0 + }; + stream._read = function() { + switch (stage) { + case 0: + { + stage = 1; + stream.push(XML_HEADER); + stream.push(""); + } + break; + case 1: + { + stage = 2; + stream.push(write_props_xlml(wb, opts)); + stream.push(write_wb_xlml(wb, opts)); + } + break; + case 2: + { + stage = 3; + stream.push(sty); + stream.push(write_names_xlml(wb, opts)); + } + break; + case 3: + { + T$3 = false; + if (wsidx >= wb.SheetNames.length) { + stage = -1; + stream.push(""); + break; + } + stream.push(""); + ws = wb.Sheets[wb.SheetNames[wsidx]]; + if (!ws) { + stream.push(""); + return void ++wsidx; + } + var names = write_ws_xlml_names(ws, opts, wsidx, wb); + if (names.length) stream.push("" + names + ""); + if (!ws["!ref"]) return stage = 5; + range = safe_decode_range(ws["!ref"]); + R$1 = range.s.r; + stage = 4; + } + break; + case 4: + { + if (R$1 < 0 || R$1 > range.e.r) { + if (T$3) stream.push(""); + return void (stage = 5); + } + if (R$1 <= range.s.r) { + if (ws["!cols"]) ws["!cols"].forEach(function(n$9, i$7) { + process_col(n$9); + var w$2 = !!n$9.width; + var p$3 = col_obj_w(i$7, n$9); + var k$2 = { "ss:Index": i$7 + 1 }; + if (w$2) k$2["ss:Width"] = width2px(p$3.width); + if (n$9.hidden) k$2["ss:Hidden"] = "1"; + if (!T$3) { + T$3 = true; + stream.push(""); + } + stream.push(writextag("Column", null, k$2)); + }); + dense = ws["!data"] != null; + if (dense) darr = ws["!data"]; + addr.r = addr.c = 0; + } + for (var cnt = 0; R$1 <= range.e.r && cnt < stride; ++R$1, ++cnt) { + var row = [write_ws_xlml_row(R$1, (ws["!rows"] || [])[R$1])]; + addr.r = R$1; + if (!(dense && !darr[R$1])) for (var C$2 = range.s.c; C$2 <= range.e.c; ++C$2) { + addr.c = C$2; + var skip = false; + for (mi = 0; mi != marr.length; ++mi) { + if (marr[mi].s.c > C$2) continue; + if (marr[mi].s.r > R$1) continue; + if (marr[mi].e.c < C$2) continue; + if (marr[mi].e.r < R$1) continue; + if (marr[mi].s.c != C$2 || marr[mi].s.r != R$1) skip = true; + break; + } + if (skip) continue; + var ref = encode_col(C$2) + encode_row(R$1), cell = dense ? darr[R$1][C$2] : ws[ref]; + row.push(write_ws_xlml_cell(cell, ref, ws, opts, wsidx, wb, addr)); + } + row.push(""); + if (!T$3) { + T$3 = true; + stream.push("
"); + } + stream.push(row.join("")); + } + } + break; + case 5: { + stream.push(write_ws_xlml_wsopts(ws, opts, wsidx, wb)); + if (ws && ws["!autofilter"]) stream.push(""); + stream.push(""); + wsidx++; + R$1 = -1; + return void (stage = 3); + } + case -1: + { + stage = -2; + stream.push(""); + } + break; + case -2: + stream.push(null); + break; + } + }; + return stream; +} +var XLSX, current_codepage, current_ansi, $cptable, VALID_ANSI, CS2CP, set_ansi, set_cp, debom, _getchar, _getansi, DENSE, DIF_XL, Base64_map, has_buf, Buffer_from, buf_utf16le, s2a, bconcat, chr0, chr1, p2_32, days, months, table_fmt, SSF_default_map, SSF_default_str, pct1, frac1, dec1, closeparen, phone, SSF_abstime, cfregex2, SSF, SSFImplicit, dateNFregex, bad_formats, CRC32, CFB, _fs, dnthresh, dnthresh1, dnthresh2, pdre1, pdre2, pdre3, FDRE1, FDRE2, FDISO, utc_append_works, lower_months, split_regex, xml_boundary, str_match_xml_ns, str_match_xml_ns_g, str_remove_xml_ns_g, str_match_xml_ig, XML_HEADER, attregexg, tagregex1, tagregex2, tagregex, nsregex, nsregex2, encodings, rencoding, unescapexml, decregex, charegex, htmlcharegex, xlml_fixstr, utf8corpus, utf8read, utf8write, htmldecode, vtvregex, vtmregex, wtregex, xlmlregex, XMLNS, XMLNS_main, XLMLNS, ___toBuffer, __toBuffer, ___utf16le, __utf16le, ___hexlify, __hexlify, ___utf8, __utf8, ___lpstr, __lpstr, ___cpstr, __cpstr, ___lpwstr, __lpwstr, ___lpp4, __lpp4, ___8lpp4, __8lpp4, ___double, __double, is_buf, __readUInt8, __readUInt16LE, __readInt16LE, __readUInt32LE, __readInt32LE, __readInt32BE, __writeUInt32LE, __writeInt32LE, __writeUInt16LE, parse_BrtCommentText, parse_XLSBCodeName, write_XLSBCodeName, parse_XLNameWideString, parse_RelID, write_RelID, parse_UncheckedRfX, write_UncheckedRfX, VT_I2, VT_I4, VT_BOOL, VT_VARIANT, VT_UI4, VT_FILETIME, VT_BLOB, VT_CF, VT_VECTOR_VARIANT, VT_VECTOR_LPSTR, VT_STRING, VT_USTR, VT_CUSTOM, DocSummaryPIDDSI, SummaryPIDSI, CountryEnum, XLSFillPattern, _XLSIcv, XLSIcv, BErr, RBErr, XLSLblBuiltIn, ct2type, CT_LIST, RELS, CT_ODS, CORE_PROPS, EXT_PROPS, PseudoPropsPairs, custregex, XLMLDocPropsMap, evert_XLMLDPM, XLSPSSkip, parse_Ref, FtTab, parse_BIFF2Format, write_BIFF4XF, parse_XLHeaderFooter, parse_BIFF5OT, parse_Blank, parse_Scl, parse_String, DBF_SUPPORTED_VERSIONS, DBF, SYLK, DIF, ETH, PRN, WK_, parse_rs, rs_to_html, sitregex, sirregex, sstr1, sstr2, straywsregex, write_BrtSSTItem, crypto_CreateXorArray_Method1, crypto_DecryptData_Method1, crypto_MakeXorDecryptor, DEF_MDW, MAX_MDW, MIN_MDW, MDW, DEF_PPI, PPI, XLMLPatternTypeMap, cellXF_uint, cellXF_bool, parse_sty_xml, XLSBFillPTNames, rev_XLSBFillPTNames, parse_BrtFill, parse_BrtBorder, XLSXThemeClrScheme, parse_BrtCommentAuthor, CT_VBA, VBAFMTS, rc_to_a1, crefregex, a1_to_rc, parse_PtgMemErr, parse_PtgMemNoMem, parse_PtgTbl, parse_PtgElfCol, parse_PtgElfColS, parse_PtgElfColSV, parse_PtgElfColV, parse_PtgElfRadical, parse_PtgElfRadicalLel, parse_PtgElfRadicalS, parse_PtgElfRw, parse_PtgElfRwV, PtgListRT, PtgTypes, PtgDupes, Ptg18, Ptg19, PtgBinOp, parse_XLSBArrayParsedFormula, parse_XLSBCellParsedFormula, parse_XLSBNameParsedFormula, parse_XLSBSharedParsedFormula, write_XLSBNameParsedFormula, Cetab, Ftab, FtabArgc, strs, _ssfopts, browser_has_Map, mergecregex, hlinkregex, dimregex, colregex, afregex, marginregex, sheetprregex, sheetprot_deffalse, sheetprot_deftrue, sviewregex, parse_ws_xml_data, parse_BrtWsDim, write_BrtWsDim, parse_BrtMergeCell, write_BrtMergeCell, BrtMarginKeys, WBPropsDef, WBViewDef, SheetDef, CalcPrDef, badchars, wbnsregex, attregexg2, attregex2, XLMLFormatMap, CONTINUE_RT, PSCLSID, XLSBRecordEnum, XLSRecordEnum, b8oid, b8ocnts, HTML_BEGIN, HTML_END, write_styles_ods, write_content_ods, subarray, numbers_lut_new, USE_WIDE_ROWS, qreg, utils$1, _Readable, __stream, version$3, xlsx_default; +var init_xlsx = __esmMin((() => { + XLSX = {}; + XLSX.version = "0.20.3"; + current_codepage = 1200, current_ansi = 1252; + ; + VALID_ANSI = [ + 874, + 932, + 936, + 949, + 950, + 1250, + 1251, + 1252, + 1253, + 1254, + 1255, + 1256, + 1257, + 1258, + 1e4 + ]; + CS2CP = { + 0: 1252, + 1: 65001, + 2: 65001, + 77: 1e4, + 128: 932, + 129: 949, + 130: 1361, + 134: 936, + 136: 950, + 161: 1253, + 162: 1254, + 163: 1258, + 177: 1255, + 178: 1256, + 186: 1257, + 204: 1251, + 222: 874, + 238: 1250, + 255: 1252, + 69: 6969 + }; + set_ansi = function(cp) { + if (VALID_ANSI.indexOf(cp) == -1) return; + current_ansi = CS2CP[0] = cp; + }; + set_cp = function(cp) { + current_codepage = cp; + set_ansi(cp); + }; + debom = function(data) { + var c1 = data.charCodeAt(0), c2 = data.charCodeAt(1); + if (c1 == 255 && c2 == 254) return utf16leread(data.slice(2)); + if (c1 == 254 && c2 == 255) return utf16beread(data.slice(2)); + if (c1 == 65279) return data.slice(1); + return data; + }; + _getchar = function _gc1(x$2) { + return String.fromCharCode(x$2); + }; + _getansi = function _ga1(x$2) { + return String.fromCharCode(x$2); + }; + DENSE = null; + DIF_XL = true; + Base64_map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + has_buf = /* @__PURE__ */ (function() { + return typeof Buffer !== "undefined" && typeof process !== "undefined" && typeof process.versions !== "undefined" && !!process.versions.node; + })(); + Buffer_from = /* @__PURE__ */ (function() { + if (typeof Buffer !== "undefined") { + var nbfs = !Buffer.from; + if (!nbfs) try { + Buffer.from("foo", "utf8"); + } catch (e$10) { + nbfs = true; + } + return nbfs ? function(buf, enc) { + return enc ? new Buffer(buf, enc) : new Buffer(buf); + } : Buffer.from.bind(Buffer); + } + return function() {}; + })(); + buf_utf16le = /* @__PURE__ */ (function() { + if (typeof Buffer === "undefined") return false; + var x$2 = Buffer_from([65, 0]); + if (!x$2) return false; + var o$10 = x$2.toString("utf16le"); + return o$10.length == 1; + })(); + s2a = function s2a$1(s$5) { + if (has_buf) return Buffer_from(s$5, "binary"); + return s$5.split("").map(function(x$2) { + return x$2.charCodeAt(0) & 255; + }); + }; + bconcat = has_buf ? function(bufs) { + return Buffer.concat(bufs.map(function(buf) { + return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); + })); + } : function(bufs) { + if (typeof Uint8Array !== "undefined") { + var i$7 = 0, maxlen = 0; + for (i$7 = 0; i$7 < bufs.length; ++i$7) maxlen += bufs[i$7].length; + var o$10 = new Uint8Array(maxlen); + var len = 0; + for (i$7 = 0, maxlen = 0; i$7 < bufs.length; maxlen += len, ++i$7) { + len = bufs[i$7].length; + if (bufs[i$7] instanceof Uint8Array) o$10.set(bufs[i$7], maxlen); + else if (typeof bufs[i$7] == "string") o$10.set(new Uint8Array(s2a(bufs[i$7])), maxlen); + else o$10.set(new Uint8Array(bufs[i$7]), maxlen); + } + return o$10; + } + return [].concat.apply([], bufs.map(function(buf) { + return Array.isArray(buf) ? buf : [].slice.call(buf); + })); + }; + chr0 = /\u0000/g, chr1 = /[\u0001-\u0006]/g; + p2_32 = /* @__PURE__ */ Math.pow(2, 32); + days = [ + ["Sun", "Sunday"], + ["Mon", "Monday"], + ["Tue", "Tuesday"], + ["Wed", "Wednesday"], + ["Thu", "Thursday"], + ["Fri", "Friday"], + ["Sat", "Saturday"] + ]; + months = [ + [ + "J", + "Jan", + "January" + ], + [ + "F", + "Feb", + "February" + ], + [ + "M", + "Mar", + "March" + ], + [ + "A", + "Apr", + "April" + ], + [ + "M", + "May", + "May" + ], + [ + "J", + "Jun", + "June" + ], + [ + "J", + "Jul", + "July" + ], + [ + "A", + "Aug", + "August" + ], + [ + "S", + "Sep", + "September" + ], + [ + "O", + "Oct", + "October" + ], + [ + "N", + "Nov", + "November" + ], + [ + "D", + "Dec", + "December" + ] + ]; + table_fmt = { + 0: "General", + 1: "0", + 2: "0.00", + 3: "#,##0", + 4: "#,##0.00", + 9: "0%", + 10: "0.00%", + 11: "0.00E+00", + 12: "# ?/?", + 13: "# ??/??", + 14: "m/d/yy", + 15: "d-mmm-yy", + 16: "d-mmm", + 17: "mmm-yy", + 18: "h:mm AM/PM", + 19: "h:mm:ss AM/PM", + 20: "h:mm", + 21: "h:mm:ss", + 22: "m/d/yy h:mm", + 37: "#,##0 ;(#,##0)", + 38: "#,##0 ;[Red](#,##0)", + 39: "#,##0.00;(#,##0.00)", + 40: "#,##0.00;[Red](#,##0.00)", + 45: "mm:ss", + 46: "[h]:mm:ss", + 47: "mmss.0", + 48: "##0.0E+0", + 49: "@", + 56: "\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"" + }; + SSF_default_map = { + 5: 37, + 6: 38, + 7: 39, + 8: 40, + 23: 0, + 24: 0, + 25: 0, + 26: 0, + 27: 14, + 28: 14, + 29: 14, + 30: 14, + 31: 14, + 50: 14, + 51: 14, + 52: 14, + 53: 14, + 54: 14, + 55: 14, + 56: 14, + 57: 14, + 58: 14, + 59: 1, + 60: 2, + 61: 3, + 62: 4, + 67: 9, + 68: 10, + 69: 12, + 70: 13, + 71: 14, + 72: 14, + 73: 15, + 74: 16, + 75: 17, + 76: 20, + 77: 21, + 78: 22, + 79: 45, + 80: 46, + 81: 47, + 82: 0 + }; + SSF_default_str = { + 5: "\"$\"#,##0_);\\(\"$\"#,##0\\)", + 63: "\"$\"#,##0_);\\(\"$\"#,##0\\)", + 6: "\"$\"#,##0_);[Red]\\(\"$\"#,##0\\)", + 64: "\"$\"#,##0_);[Red]\\(\"$\"#,##0\\)", + 7: "\"$\"#,##0.00_);\\(\"$\"#,##0.00\\)", + 65: "\"$\"#,##0.00_);\\(\"$\"#,##0.00\\)", + 8: "\"$\"#,##0.00_);[Red]\\(\"$\"#,##0.00\\)", + 66: "\"$\"#,##0.00_);[Red]\\(\"$\"#,##0.00\\)", + 41: "_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)", + 42: "_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)", + 43: "_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)", + 44: "_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)" + }; + pct1 = /%/g; + frac1 = /# (\?+)( ?)\/( ?)(\d+)/; + dec1 = /^#*0*\.([0#]+)/; + closeparen = /\)[^)]*[0#]/; + phone = /\(###\) ###\\?-####/; + SSF_abstime = /\[[HhMmSs\u0E0A\u0E19\u0E17]*\]/; + cfregex2 = /\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/; + SSF = { + format: SSF_format, + load: SSF_load, + _table: table_fmt, + load_table: SSF_load_table, + parse_date_code: SSF_parse_date_code, + is_date: fmt_is_date, + get_table: function get_table() { + return SSF._table = table_fmt; + } + }; + SSFImplicit = { + "5": "\"$\"#,##0_);\\(\"$\"#,##0\\)", + "6": "\"$\"#,##0_);[Red]\\(\"$\"#,##0\\)", + "7": "\"$\"#,##0.00_);\\(\"$\"#,##0.00\\)", + "8": "\"$\"#,##0.00_);[Red]\\(\"$\"#,##0.00\\)", + "23": "General", + "24": "General", + "25": "General", + "26": "General", + "27": "m/d/yy", + "28": "m/d/yy", + "29": "m/d/yy", + "30": "m/d/yy", + "31": "m/d/yy", + "32": "h:mm:ss", + "33": "h:mm:ss", + "34": "h:mm:ss", + "35": "h:mm:ss", + "36": "m/d/yy", + "41": "_(* #,##0_);_(* (#,##0);_(* \"-\"_);_(@_)", + "42": "_(\"$\"* #,##0_);_(\"$\"* (#,##0);_(\"$\"* \"-\"_);_(@_)", + "43": "_(* #,##0.00_);_(* (#,##0.00);_(* \"-\"??_);_(@_)", + "44": "_(\"$\"* #,##0.00_);_(\"$\"* (#,##0.00);_(\"$\"* \"-\"??_);_(@_)", + "50": "m/d/yy", + "51": "m/d/yy", + "52": "m/d/yy", + "53": "m/d/yy", + "54": "m/d/yy", + "55": "m/d/yy", + "56": "m/d/yy", + "57": "m/d/yy", + "58": "m/d/yy", + "59": "0", + "60": "0.00", + "61": "#,##0", + "62": "#,##0.00", + "63": "\"$\"#,##0_);\\(\"$\"#,##0\\)", + "64": "\"$\"#,##0_);[Red]\\(\"$\"#,##0\\)", + "65": "\"$\"#,##0.00_);\\(\"$\"#,##0.00\\)", + "66": "\"$\"#,##0.00_);[Red]\\(\"$\"#,##0.00\\)", + "67": "0%", + "68": "0.00%", + "69": "# ?/?", + "70": "# ??/??", + "71": "m/d/yy", + "72": "m/d/yy", + "73": "d-mmm-yy", + "74": "d-mmm", + "75": "mmm-yy", + "76": "h:mm", + "77": "h:mm:ss", + "78": "m/d/yy h:mm", + "79": "mm:ss", + "80": "[h]:mm:ss", + "81": "mmss.0" + }; + dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g; + bad_formats = { "d.m": "d\\.m" }; + CRC32 = /* @__PURE__ */ (function() { + var CRC32$1 = {}; + CRC32$1.version = "1.2.0"; + function signed_crc_table() { + var c$7 = 0, table = new Array(256); + for (var n$9 = 0; n$9 != 256; ++n$9) { + c$7 = n$9; + c$7 = c$7 & 1 ? -306674912 ^ c$7 >>> 1 : c$7 >>> 1; + c$7 = c$7 & 1 ? -306674912 ^ c$7 >>> 1 : c$7 >>> 1; + c$7 = c$7 & 1 ? -306674912 ^ c$7 >>> 1 : c$7 >>> 1; + c$7 = c$7 & 1 ? -306674912 ^ c$7 >>> 1 : c$7 >>> 1; + c$7 = c$7 & 1 ? -306674912 ^ c$7 >>> 1 : c$7 >>> 1; + c$7 = c$7 & 1 ? -306674912 ^ c$7 >>> 1 : c$7 >>> 1; + c$7 = c$7 & 1 ? -306674912 ^ c$7 >>> 1 : c$7 >>> 1; + c$7 = c$7 & 1 ? -306674912 ^ c$7 >>> 1 : c$7 >>> 1; + table[n$9] = c$7; + } + return typeof Int32Array !== "undefined" ? new Int32Array(table) : table; + } + var T0 = signed_crc_table(); + function slice_by_16_tables(T$3) { + var c$7 = 0, v$3 = 0, n$9 = 0, table = typeof Int32Array !== "undefined" ? new Int32Array(4096) : new Array(4096); + for (n$9 = 0; n$9 != 256; ++n$9) table[n$9] = T$3[n$9]; + for (n$9 = 0; n$9 != 256; ++n$9) { + v$3 = T$3[n$9]; + for (c$7 = 256 + n$9; c$7 < 4096; c$7 += 256) v$3 = table[c$7] = v$3 >>> 8 ^ T$3[v$3 & 255]; + } + var out = []; + for (n$9 = 1; n$9 != 16; ++n$9) out[n$9 - 1] = typeof Int32Array !== "undefined" && typeof table.subarray == "function" ? table.subarray(n$9 * 256, n$9 * 256 + 256) : table.slice(n$9 * 256, n$9 * 256 + 256); + return out; + } + var TT = slice_by_16_tables(T0); + var T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4]; + var T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9]; + var Tb = TT[10], Tc$1 = TT[11], Td = TT[12], Te$1 = TT[13], Tf = TT[14]; + function crc32_bstr(bstr, seed) { + var C$2 = seed ^ -1; + for (var i$7 = 0, L$2 = bstr.length; i$7 < L$2;) C$2 = C$2 >>> 8 ^ T0[(C$2 ^ bstr.charCodeAt(i$7++)) & 255]; + return ~C$2; + } + function crc32_buf(B$2, seed) { + var C$2 = seed ^ -1, L$2 = B$2.length - 15, i$7 = 0; + for (; i$7 < L$2;) C$2 = Tf[B$2[i$7++] ^ C$2 & 255] ^ Te$1[B$2[i$7++] ^ C$2 >> 8 & 255] ^ Td[B$2[i$7++] ^ C$2 >> 16 & 255] ^ Tc$1[B$2[i$7++] ^ C$2 >>> 24] ^ Tb[B$2[i$7++]] ^ Ta[B$2[i$7++]] ^ T9[B$2[i$7++]] ^ T8[B$2[i$7++]] ^ T7[B$2[i$7++]] ^ T6[B$2[i$7++]] ^ T5[B$2[i$7++]] ^ T4[B$2[i$7++]] ^ T3[B$2[i$7++]] ^ T2[B$2[i$7++]] ^ T1[B$2[i$7++]] ^ T0[B$2[i$7++]]; + L$2 += 15; + while (i$7 < L$2) C$2 = C$2 >>> 8 ^ T0[(C$2 ^ B$2[i$7++]) & 255]; + return ~C$2; + } + function crc32_str(str, seed) { + var C$2 = seed ^ -1; + for (var i$7 = 0, L$2 = str.length, c$7 = 0, d$5 = 0; i$7 < L$2;) { + c$7 = str.charCodeAt(i$7++); + if (c$7 < 128) { + C$2 = C$2 >>> 8 ^ T0[(C$2 ^ c$7) & 255]; + } else if (c$7 < 2048) { + C$2 = C$2 >>> 8 ^ T0[(C$2 ^ (192 | c$7 >> 6 & 31)) & 255]; + C$2 = C$2 >>> 8 ^ T0[(C$2 ^ (128 | c$7 & 63)) & 255]; + } else if (c$7 >= 55296 && c$7 < 57344) { + c$7 = (c$7 & 1023) + 64; + d$5 = str.charCodeAt(i$7++) & 1023; + C$2 = C$2 >>> 8 ^ T0[(C$2 ^ (240 | c$7 >> 8 & 7)) & 255]; + C$2 = C$2 >>> 8 ^ T0[(C$2 ^ (128 | c$7 >> 2 & 63)) & 255]; + C$2 = C$2 >>> 8 ^ T0[(C$2 ^ (128 | d$5 >> 6 & 15 | (c$7 & 3) << 4)) & 255]; + C$2 = C$2 >>> 8 ^ T0[(C$2 ^ (128 | d$5 & 63)) & 255]; + } else { + C$2 = C$2 >>> 8 ^ T0[(C$2 ^ (224 | c$7 >> 12 & 15)) & 255]; + C$2 = C$2 >>> 8 ^ T0[(C$2 ^ (128 | c$7 >> 6 & 63)) & 255]; + C$2 = C$2 >>> 8 ^ T0[(C$2 ^ (128 | c$7 & 63)) & 255]; + } + } + return ~C$2; + } + CRC32$1.table = T0; + CRC32$1.bstr = crc32_bstr; + CRC32$1.buf = crc32_buf; + CRC32$1.str = crc32_str; + return CRC32$1; + })(); + CFB = /* @__PURE__ */ (function _CFB() { + var exports$1 = {}; + exports$1.version = "1.2.2"; + function namecmp(l$3, r$10) { + var L$2 = l$3.split("/"), R$1 = r$10.split("/"); + for (var i$8 = 0, c$7 = 0, Z$1 = Math.min(L$2.length, R$1.length); i$8 < Z$1; ++i$8) { + if (c$7 = L$2[i$8].length - R$1[i$8].length) return c$7; + if (L$2[i$8] != R$1[i$8]) return L$2[i$8] < R$1[i$8] ? -1 : 1; + } + return L$2.length - R$1.length; + } + function dirname(p$3) { + if (p$3.charAt(p$3.length - 1) == "/") return p$3.slice(0, -1).indexOf("/") === -1 ? p$3 : dirname(p$3.slice(0, -1)); + var c$7 = p$3.lastIndexOf("/"); + return c$7 === -1 ? p$3 : p$3.slice(0, c$7 + 1); + } + function filename(p$3) { + if (p$3.charAt(p$3.length - 1) == "/") return filename(p$3.slice(0, -1)); + var c$7 = p$3.lastIndexOf("/"); + return c$7 === -1 ? p$3 : p$3.slice(c$7 + 1); + } + function write_dos_date(buf, date) { + if (typeof date === "string") date = new Date(date); + var hms = date.getHours(); + hms = hms << 6 | date.getMinutes(); + hms = hms << 5 | date.getSeconds() >>> 1; + buf.write_shift(2, hms); + var ymd = date.getFullYear() - 1980; + ymd = ymd << 4 | date.getMonth() + 1; + ymd = ymd << 5 | date.getDate(); + buf.write_shift(2, ymd); + } + function parse_dos_date(buf) { + var hms = buf.read_shift(2) & 65535; + var ymd = buf.read_shift(2) & 65535; + var val$1 = new Date(); + var d$5 = ymd & 31; + ymd >>>= 5; + var m$3 = ymd & 15; + ymd >>>= 4; + val$1.setMilliseconds(0); + val$1.setFullYear(ymd + 1980); + val$1.setMonth(m$3 - 1); + val$1.setDate(d$5); + var S$4 = hms & 31; + hms >>>= 5; + var M$3 = hms & 63; + hms >>>= 6; + val$1.setHours(hms); + val$1.setMinutes(M$3); + val$1.setSeconds(S$4 << 1); + return val$1; + } + function parse_extra_field(blob) { + prep_blob(blob, 0); + var o$10 = {}; + var flags = 0; + while (blob.l <= blob.length - 4) { + var type = blob.read_shift(2); + var sz = blob.read_shift(2), tgt = blob.l + sz; + var p$3 = {}; + switch (type) { + case 21589: + { + flags = blob.read_shift(1); + if (flags & 1) p$3.mtime = blob.read_shift(4); + if (sz > 5) { + if (flags & 2) p$3.atime = blob.read_shift(4); + if (flags & 4) p$3.ctime = blob.read_shift(4); + } + if (p$3.mtime) p$3.mt = new Date(p$3.mtime * 1e3); + } + break; + case 1: + { + var sz1 = blob.read_shift(4), sz2 = blob.read_shift(4); + p$3.usz = sz2 * Math.pow(2, 32) + sz1; + sz1 = blob.read_shift(4); + sz2 = blob.read_shift(4); + p$3.csz = sz2 * Math.pow(2, 32) + sz1; + } + break; + } + blob.l = tgt; + o$10[type] = p$3; + } + return o$10; + } + var fs; + function get_fs() { + return fs || (fs = _fs); + } + function parse(file, options) { + if (file[0] == 80 && file[1] == 75) return parse_zip$1(file, options); + if ((file[0] | 32) == 109 && (file[1] | 32) == 105) return parse_mad(file, options); + if (file.length < 512) throw new Error("CFB file size " + file.length + " < 512"); + var mver = 3; + var ssz = 512; + var nmfs = 0; + var difat_sec_cnt = 0; + var dir_start = 0; + var minifat_start = 0; + var difat_start = 0; + var fat_addrs = []; + var blob = file.slice(0, 512); + prep_blob(blob, 0); + var mv = check_get_mver(blob); + mver = mv[0]; + switch (mver) { + case 3: + ssz = 512; + break; + case 4: + ssz = 4096; + break; + case 0: if (mv[1] == 0) return parse_zip$1(file, options); + default: throw new Error("Major Version: Expected 3 or 4 saw " + mver); + } + if (ssz !== 512) { + blob = file.slice(0, ssz); + prep_blob(blob, 28); + } + var header = file.slice(0, ssz); + check_shifts(blob, mver); + var dir_cnt = blob.read_shift(4, "i"); + if (mver === 3 && dir_cnt !== 0) throw new Error("# Directory Sectors: Expected 0 saw " + dir_cnt); + blob.l += 4; + dir_start = blob.read_shift(4, "i"); + blob.l += 4; + blob.chk("00100000", "Mini Stream Cutoff Size: "); + minifat_start = blob.read_shift(4, "i"); + nmfs = blob.read_shift(4, "i"); + difat_start = blob.read_shift(4, "i"); + difat_sec_cnt = blob.read_shift(4, "i"); + for (var q$3 = -1, j$2 = 0; j$2 < 109; ++j$2) { + q$3 = blob.read_shift(4, "i"); + if (q$3 < 0) break; + fat_addrs[j$2] = q$3; + } + /** Break the file up into sectors */ + var sectors = sectorify(file, ssz); + sleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs); + /** Chains */ + var sector_list = make_sector_list(sectors, dir_start, fat_addrs, ssz); + if (dir_start < sector_list.length) sector_list[dir_start].name = "!Directory"; + if (nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = "!MiniFAT"; + sector_list[fat_addrs[0]].name = "!FAT"; + sector_list.fat_addrs = fat_addrs; + sector_list.ssz = ssz; + var files = {}, Paths = [], FileIndex = [], FullPaths = []; + read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start); + build_full_paths(FileIndex, FullPaths, Paths); + Paths.shift(); + var o$10 = { + FileIndex, + FullPaths + }; + if (options && options.raw) o$10.raw = { + header, + sectors + }; + return o$10; + } + function check_get_mver(blob) { + if (blob[blob.l] == 80 && blob[blob.l + 1] == 75) return [0, 0]; + blob.chk(HEADER_SIGNATURE, "Header Signature: "); + blob.l += 16; + var mver = blob.read_shift(2, "u"); + return [blob.read_shift(2, "u"), mver]; + } + function check_shifts(blob, mver) { + var shift = 9; + blob.l += 2; + switch (shift = blob.read_shift(2)) { + case 9: + if (mver != 3) throw new Error("Sector Shift: Expected 9 saw " + shift); + break; + case 12: + if (mver != 4) throw new Error("Sector Shift: Expected 12 saw " + shift); + break; + default: throw new Error("Sector Shift: Expected 9 or 12 saw " + shift); + } + blob.chk("0600", "Mini Sector Shift: "); + blob.chk("000000000000", "Reserved: "); + } + /** Break the file up into sectors */ + function sectorify(file, ssz) { + var nsectors = Math.ceil(file.length / ssz) - 1; + var sectors = []; + for (var i$8 = 1; i$8 < nsectors; ++i$8) sectors[i$8 - 1] = file.slice(i$8 * ssz, (i$8 + 1) * ssz); + sectors[nsectors - 1] = file.slice(nsectors * ssz); + return sectors; + } + function build_full_paths(FI, FP, Paths) { + var i$8 = 0, L$2 = 0, R$1 = 0, C$2 = 0, j$2 = 0, pl = Paths.length; + var dad = [], q$3 = []; + for (; i$8 < pl; ++i$8) { + dad[i$8] = q$3[i$8] = i$8; + FP[i$8] = Paths[i$8]; + } + for (; j$2 < q$3.length; ++j$2) { + i$8 = q$3[j$2]; + L$2 = FI[i$8].L; + R$1 = FI[i$8].R; + C$2 = FI[i$8].C; + if (dad[i$8] === i$8) { + if (L$2 !== -1 && dad[L$2] !== L$2) dad[i$8] = dad[L$2]; + if (R$1 !== -1 && dad[R$1] !== R$1) dad[i$8] = dad[R$1]; + } + if (C$2 !== -1) dad[C$2] = i$8; + if (L$2 !== -1 && i$8 != dad[i$8]) { + dad[L$2] = dad[i$8]; + if (q$3.lastIndexOf(L$2) < j$2) q$3.push(L$2); + } + if (R$1 !== -1 && i$8 != dad[i$8]) { + dad[R$1] = dad[i$8]; + if (q$3.lastIndexOf(R$1) < j$2) q$3.push(R$1); + } + } + for (i$8 = 1; i$8 < pl; ++i$8) if (dad[i$8] === i$8) { + if (R$1 !== -1 && dad[R$1] !== R$1) dad[i$8] = dad[R$1]; + else if (L$2 !== -1 && dad[L$2] !== L$2) dad[i$8] = dad[L$2]; + } + for (i$8 = 1; i$8 < pl; ++i$8) { + if (FI[i$8].type === 0) continue; + j$2 = i$8; + if (j$2 != dad[j$2]) do { + j$2 = dad[j$2]; + FP[i$8] = FP[j$2] + "/" + FP[i$8]; + } while (j$2 !== 0 && -1 !== dad[j$2] && j$2 != dad[j$2]); + dad[i$8] = -1; + } + FP[0] += "/"; + for (i$8 = 1; i$8 < pl; ++i$8) { + if (FI[i$8].type !== 2) FP[i$8] += "/"; + } + } + function get_mfat_entry(entry, payload, mini) { + var start = entry.start, size = entry.size; + var o$10 = []; + var idx = start; + while (mini && size > 0 && idx >= 0) { + o$10.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ)); + size -= MSSZ; + idx = __readInt32LE(mini, idx * 4); + } + if (o$10.length === 0) return new_buf(0); + return bconcat(o$10).slice(0, entry.size); + } + /** Chase down the rest of the DIFAT chain to build a comprehensive list + DIFAT chains by storing the next sector number as the last 32 bits */ + function sleuth_fat(idx, cnt, sectors, ssz, fat_addrs) { + var q$3 = ENDOFCHAIN; + if (idx === ENDOFCHAIN) { + if (cnt !== 0) throw new Error("DIFAT chain shorter than expected"); + } else if (idx !== -1) { + var sector = sectors[idx], m$3 = (ssz >>> 2) - 1; + if (!sector) return; + for (var i$8 = 0; i$8 < m$3; ++i$8) { + if ((q$3 = __readInt32LE(sector, i$8 * 4)) === ENDOFCHAIN) break; + fat_addrs.push(q$3); + } + if (cnt >= 1) sleuth_fat(__readInt32LE(sector, ssz - 4), cnt - 1, sectors, ssz, fat_addrs); + } + } + /** Follow the linked list of sectors for a given starting point */ + function get_sector_list(sectors, start, fat_addrs, ssz, chkd) { + var buf = [], buf_chain = []; + if (!chkd) chkd = []; + var modulus = ssz - 1, j$2 = 0, jj = 0; + for (j$2 = start; j$2 >= 0;) { + chkd[j$2] = true; + buf[buf.length] = j$2; + buf_chain.push(sectors[j$2]); + var addr = fat_addrs[Math.floor(j$2 * 4 / ssz)]; + jj = j$2 * 4 & modulus; + if (ssz < 4 + jj) throw new Error("FAT boundary crossed: " + j$2 + " 4 " + ssz); + if (!sectors[addr]) break; + j$2 = __readInt32LE(sectors[addr], jj); + } + return { + nodes: buf, + data: __toBuffer([buf_chain]) + }; + } + /** Chase down the sector linked lists */ + function make_sector_list(sectors, dir_start, fat_addrs, ssz) { + var sl = sectors.length, sector_list = []; + var chkd = [], buf = [], buf_chain = []; + var modulus = ssz - 1, i$8 = 0, j$2 = 0, k$2 = 0, jj = 0; + for (i$8 = 0; i$8 < sl; ++i$8) { + buf = []; + k$2 = i$8 + dir_start; + if (k$2 >= sl) k$2 -= sl; + if (chkd[k$2]) continue; + buf_chain = []; + var seen = []; + for (j$2 = k$2; j$2 >= 0;) { + seen[j$2] = true; + chkd[j$2] = true; + buf[buf.length] = j$2; + buf_chain.push(sectors[j$2]); + var addr = fat_addrs[Math.floor(j$2 * 4 / ssz)]; + jj = j$2 * 4 & modulus; + if (ssz < 4 + jj) throw new Error("FAT boundary crossed: " + j$2 + " 4 " + ssz); + if (!sectors[addr]) break; + j$2 = __readInt32LE(sectors[addr], jj); + if (seen[j$2]) break; + } + sector_list[k$2] = { + nodes: buf, + data: __toBuffer([buf_chain]) + }; + } + return sector_list; + } + function read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, mini) { + var minifat_store = 0, pl = Paths.length ? 2 : 0; + var sector = sector_list[dir_start].data; + var i$8 = 0, namelen = 0, name; + for (; i$8 < sector.length; i$8 += 128) { + var blob = sector.slice(i$8, i$8 + 128); + prep_blob(blob, 64); + namelen = blob.read_shift(2); + name = __utf16le(blob, 0, namelen - pl); + Paths.push(name); + var o$10 = { + name, + type: blob.read_shift(1), + color: blob.read_shift(1), + L: blob.read_shift(4, "i"), + R: blob.read_shift(4, "i"), + C: blob.read_shift(4, "i"), + clsid: blob.read_shift(16), + state: blob.read_shift(4, "i"), + start: 0, + size: 0 + }; + var ctime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if (ctime !== 0) o$10.ct = read_date(blob, blob.l - 8); + var mtime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if (mtime !== 0) o$10.mt = read_date(blob, blob.l - 8); + o$10.start = blob.read_shift(4, "i"); + o$10.size = blob.read_shift(4, "i"); + if (o$10.size < 0 && o$10.start < 0) { + o$10.size = o$10.type = 0; + o$10.start = ENDOFCHAIN; + o$10.name = ""; + } + if (o$10.type === 5) { + minifat_store = o$10.start; + if (nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = "!StreamData"; + } else if (o$10.size >= 4096) { + o$10.storage = "fat"; + if (sector_list[o$10.start] === undefined) sector_list[o$10.start] = get_sector_list(sectors, o$10.start, sector_list.fat_addrs, sector_list.ssz); + sector_list[o$10.start].name = o$10.name; + o$10.content = sector_list[o$10.start].data.slice(0, o$10.size); + } else { + o$10.storage = "minifat"; + if (o$10.size < 0) o$10.size = 0; + else if (minifat_store !== ENDOFCHAIN && o$10.start !== ENDOFCHAIN && sector_list[minifat_store]) { + o$10.content = get_mfat_entry(o$10, sector_list[minifat_store].data, (sector_list[mini] || {}).data); + } + } + if (o$10.content) prep_blob(o$10.content, 0); + files[name] = o$10; + FileIndex.push(o$10); + } + } + function read_date(blob, offset) { + return new Date((__readUInt32LE(blob, offset + 4) / 1e7 * Math.pow(2, 32) + __readUInt32LE(blob, offset) / 1e7 - 11644473600) * 1e3); + } + function read_file(filename$1, options) { + get_fs(); + return parse(fs.readFileSync(filename$1), options); + } + function read(blob, options) { + var type = options && options.type; + if (!type) { + if (has_buf && Buffer.isBuffer(blob)) type = "buffer"; + } + switch (type || "base64") { + case "file": return read_file(blob, options); + case "base64": return parse(s2a(Base64_decode(blob)), options); + case "binary": return parse(s2a(blob), options); + } + return parse(blob, options); + } + function init_cfb(cfb, opts) { + var o$10 = opts || {}, root = o$10.root || "Root Entry"; + if (!cfb.FullPaths) cfb.FullPaths = []; + if (!cfb.FileIndex) cfb.FileIndex = []; + if (cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error("inconsistent CFB structure"); + if (cfb.FullPaths.length === 0) { + cfb.FullPaths[0] = root + "/"; + cfb.FileIndex[0] = { + name: root, + type: 5 + }; + } + if (o$10.CLSID) cfb.FileIndex[0].clsid = o$10.CLSID; + seed_cfb(cfb); + } + function seed_cfb(cfb) { + var nm = "Sh33tJ5"; + if (CFB.find(cfb, "/" + nm)) return; + var p$3 = new_buf(4); + p$3[0] = 55; + p$3[1] = p$3[3] = 50; + p$3[2] = 54; + cfb.FileIndex.push({ + name: nm, + type: 2, + content: p$3, + size: 4, + L: 69, + R: 69, + C: 69 + }); + cfb.FullPaths.push(cfb.FullPaths[0] + nm); + rebuild_cfb(cfb); + } + function rebuild_cfb(cfb, f$4) { + init_cfb(cfb); + var gc = false, s$5 = false; + for (var i$8 = cfb.FullPaths.length - 1; i$8 >= 0; --i$8) { + var _file = cfb.FileIndex[i$8]; + switch (_file.type) { + case 0: + if (s$5) gc = true; + else { + cfb.FileIndex.pop(); + cfb.FullPaths.pop(); + } + break; + case 1: + case 2: + case 5: + s$5 = true; + if (isNaN(_file.R * _file.L * _file.C)) gc = true; + if (_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true; + break; + default: + gc = true; + break; + } + } + if (!gc && !f$4) return; + var now = new Date(1987, 1, 19), j$2 = 0; + var fullPaths = Object.create ? Object.create(null) : {}; + var data = []; + for (i$8 = 0; i$8 < cfb.FullPaths.length; ++i$8) { + fullPaths[cfb.FullPaths[i$8]] = true; + if (cfb.FileIndex[i$8].type === 0) continue; + data.push([cfb.FullPaths[i$8], cfb.FileIndex[i$8]]); + } + for (i$8 = 0; i$8 < data.length; ++i$8) { + var dad = dirname(data[i$8][0]); + s$5 = fullPaths[dad]; + while (!s$5) { + while (dirname(dad) && !fullPaths[dirname(dad)]) dad = dirname(dad); + data.push([dad, { + name: filename(dad).replace("/", ""), + type: 1, + clsid: HEADER_CLSID, + ct: now, + mt: now, + content: null + }]); + fullPaths[dad] = true; + dad = dirname(data[i$8][0]); + s$5 = fullPaths[dad]; + } + } + data.sort(function(x$2, y$3) { + return namecmp(x$2[0], y$3[0]); + }); + cfb.FullPaths = []; + cfb.FileIndex = []; + for (i$8 = 0; i$8 < data.length; ++i$8) { + cfb.FullPaths[i$8] = data[i$8][0]; + cfb.FileIndex[i$8] = data[i$8][1]; + } + for (i$8 = 0; i$8 < data.length; ++i$8) { + var elt = cfb.FileIndex[i$8]; + var nm = cfb.FullPaths[i$8]; + elt.name = filename(nm).replace("/", ""); + elt.L = elt.R = elt.C = -(elt.color = 1); + elt.size = elt.content ? elt.content.length : 0; + elt.start = 0; + elt.clsid = elt.clsid || HEADER_CLSID; + if (i$8 === 0) { + elt.C = data.length > 1 ? 1 : -1; + elt.size = 0; + elt.type = 5; + } else if (nm.slice(-1) == "/") { + for (j$2 = i$8 + 1; j$2 < data.length; ++j$2) if (dirname(cfb.FullPaths[j$2]) == nm) break; + elt.C = j$2 >= data.length ? -1 : j$2; + for (j$2 = i$8 + 1; j$2 < data.length; ++j$2) if (dirname(cfb.FullPaths[j$2]) == dirname(nm)) break; + elt.R = j$2 >= data.length ? -1 : j$2; + elt.type = 1; + } else { + if (dirname(cfb.FullPaths[i$8 + 1] || "") == dirname(nm)) elt.R = i$8 + 1; + elt.type = 2; + } + } + } + function _write(cfb, options) { + var _opts = options || {}; + if (_opts.fileType == "mad") return write_mad(cfb, _opts); + rebuild_cfb(cfb); + switch (_opts.fileType) { + case "zip": return write_zip$1(cfb, _opts); + } + var L$2 = (function(cfb$1) { + var mini_size = 0, fat_size = 0; + for (var i$9 = 0; i$9 < cfb$1.FileIndex.length; ++i$9) { + var file$1 = cfb$1.FileIndex[i$9]; + if (!file$1.content) continue; + var flen$1 = file$1.content.length; + if (flen$1 > 0) { + if (flen$1 < 4096) mini_size += flen$1 + 63 >> 6; + else fat_size += flen$1 + 511 >> 9; + } + } + var dir_cnt = cfb$1.FullPaths.length + 3 >> 2; + var mini_cnt = mini_size + 7 >> 3; + var mfat_cnt = mini_size + 127 >> 7; + var fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt; + var fat_cnt = fat_base + 127 >> 7; + var difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt - 109) / 127); + while (fat_base + fat_cnt + difat_cnt + 127 >> 7 > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt - 109) / 127); + var L$3 = [ + 1, + difat_cnt, + fat_cnt, + mfat_cnt, + dir_cnt, + fat_size, + mini_size, + 0 + ]; + cfb$1.FileIndex[0].size = mini_size << 6; + L$3[7] = (cfb$1.FileIndex[0].start = L$3[0] + L$3[1] + L$3[2] + L$3[3] + L$3[4] + L$3[5]) + (L$3[6] + 7 >> 3); + return L$3; + })(cfb); + var o$10 = new_buf(L$2[7] << 9); + var i$8 = 0, T$3 = 0; + { + for (i$8 = 0; i$8 < 8; ++i$8) o$10.write_shift(1, HEADER_SIG[i$8]); + for (i$8 = 0; i$8 < 8; ++i$8) o$10.write_shift(2, 0); + o$10.write_shift(2, 62); + o$10.write_shift(2, 3); + o$10.write_shift(2, 65534); + o$10.write_shift(2, 9); + o$10.write_shift(2, 6); + for (i$8 = 0; i$8 < 3; ++i$8) o$10.write_shift(2, 0); + o$10.write_shift(4, 0); + o$10.write_shift(4, L$2[2]); + o$10.write_shift(4, L$2[0] + L$2[1] + L$2[2] + L$2[3] - 1); + o$10.write_shift(4, 0); + o$10.write_shift(4, 1 << 12); + o$10.write_shift(4, L$2[3] ? L$2[0] + L$2[1] + L$2[2] - 1 : ENDOFCHAIN); + o$10.write_shift(4, L$2[3]); + o$10.write_shift(-4, L$2[1] ? L$2[0] - 1 : ENDOFCHAIN); + o$10.write_shift(4, L$2[1]); + for (i$8 = 0; i$8 < 109; ++i$8) o$10.write_shift(-4, i$8 < L$2[2] ? L$2[1] + i$8 : -1); + } + if (L$2[1]) { + for (T$3 = 0; T$3 < L$2[1]; ++T$3) { + for (; i$8 < 236 + T$3 * 127; ++i$8) o$10.write_shift(-4, i$8 < L$2[2] ? L$2[1] + i$8 : -1); + o$10.write_shift(-4, T$3 === L$2[1] - 1 ? ENDOFCHAIN : T$3 + 1); + } + } + var chainit = function(w$2) { + for (T$3 += w$2; i$8 < T$3 - 1; ++i$8) o$10.write_shift(-4, i$8 + 1); + if (w$2) { + ++i$8; + o$10.write_shift(-4, ENDOFCHAIN); + } + }; + T$3 = i$8 = 0; + for (T$3 += L$2[1]; i$8 < T$3; ++i$8) o$10.write_shift(-4, consts.DIFSECT); + for (T$3 += L$2[2]; i$8 < T$3; ++i$8) o$10.write_shift(-4, consts.FATSECT); + chainit(L$2[3]); + chainit(L$2[4]); + var j$2 = 0, flen = 0; + var file = cfb.FileIndex[0]; + for (; j$2 < cfb.FileIndex.length; ++j$2) { + file = cfb.FileIndex[j$2]; + if (!file.content) continue; + flen = file.content.length; + if (flen < 4096) continue; + file.start = T$3; + chainit(flen + 511 >> 9); + } + chainit(L$2[6] + 7 >> 3); + while (o$10.l & 511) o$10.write_shift(-4, consts.ENDOFCHAIN); + T$3 = i$8 = 0; + for (j$2 = 0; j$2 < cfb.FileIndex.length; ++j$2) { + file = cfb.FileIndex[j$2]; + if (!file.content) continue; + flen = file.content.length; + if (!flen || flen >= 4096) continue; + file.start = T$3; + chainit(flen + 63 >> 6); + } + while (o$10.l & 511) o$10.write_shift(-4, consts.ENDOFCHAIN); + for (i$8 = 0; i$8 < L$2[4] << 2; ++i$8) { + var nm = cfb.FullPaths[i$8]; + if (!nm || nm.length === 0) { + for (j$2 = 0; j$2 < 17; ++j$2) o$10.write_shift(4, 0); + for (j$2 = 0; j$2 < 3; ++j$2) o$10.write_shift(4, -1); + for (j$2 = 0; j$2 < 12; ++j$2) o$10.write_shift(4, 0); + continue; + } + file = cfb.FileIndex[i$8]; + if (i$8 === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN; + var _nm = i$8 === 0 && _opts.root || file.name; + if (_nm.length > 31) { + console.error("Name " + _nm + " will be truncated to " + _nm.slice(0, 31)); + _nm = _nm.slice(0, 31); + } + flen = 2 * (_nm.length + 1); + o$10.write_shift(64, _nm, "utf16le"); + o$10.write_shift(2, flen); + o$10.write_shift(1, file.type); + o$10.write_shift(1, file.color); + o$10.write_shift(-4, file.L); + o$10.write_shift(-4, file.R); + o$10.write_shift(-4, file.C); + if (!file.clsid) for (j$2 = 0; j$2 < 4; ++j$2) o$10.write_shift(4, 0); + else o$10.write_shift(16, file.clsid, "hex"); + o$10.write_shift(4, file.state || 0); + o$10.write_shift(4, 0); + o$10.write_shift(4, 0); + o$10.write_shift(4, 0); + o$10.write_shift(4, 0); + o$10.write_shift(4, file.start); + o$10.write_shift(4, file.size); + o$10.write_shift(4, 0); + } + for (i$8 = 1; i$8 < cfb.FileIndex.length; ++i$8) { + file = cfb.FileIndex[i$8]; + if (file.size >= 4096) { + o$10.l = file.start + 1 << 9; + if (has_buf && Buffer.isBuffer(file.content)) { + file.content.copy(o$10, o$10.l, 0, file.size); + o$10.l += file.size + 511 & -512; + } else { + for (j$2 = 0; j$2 < file.size; ++j$2) o$10.write_shift(1, file.content[j$2]); + for (; j$2 & 511; ++j$2) o$10.write_shift(1, 0); + } + } + } + for (i$8 = 1; i$8 < cfb.FileIndex.length; ++i$8) { + file = cfb.FileIndex[i$8]; + if (file.size > 0 && file.size < 4096) { + if (has_buf && Buffer.isBuffer(file.content)) { + file.content.copy(o$10, o$10.l, 0, file.size); + o$10.l += file.size + 63 & -64; + } else { + for (j$2 = 0; j$2 < file.size; ++j$2) o$10.write_shift(1, file.content[j$2]); + for (; j$2 & 63; ++j$2) o$10.write_shift(1, 0); + } + } + } + if (has_buf) { + o$10.l = o$10.length; + } else { + while (o$10.l < o$10.length) o$10.write_shift(1, 0); + } + return o$10; + } + function find(cfb, path$1) { + var UCFullPaths = cfb.FullPaths.map(function(x$2) { + return x$2.toUpperCase(); + }); + var UCPaths = UCFullPaths.map(function(x$2) { + var y$3 = x$2.split("/"); + return y$3[y$3.length - (x$2.slice(-1) == "/" ? 2 : 1)]; + }); + var k$2 = false; + if (path$1.charCodeAt(0) === 47) { + k$2 = true; + path$1 = UCFullPaths[0].slice(0, -1) + path$1; + } else k$2 = path$1.indexOf("/") !== -1; + var UCPath = path$1.toUpperCase(); + var w$2 = k$2 === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath); + if (w$2 !== -1) return cfb.FileIndex[w$2]; + var m$3 = !UCPath.match(chr1); + UCPath = UCPath.replace(chr0, ""); + if (m$3) UCPath = UCPath.replace(chr1, "!"); + for (w$2 = 0; w$2 < UCFullPaths.length; ++w$2) { + if ((m$3 ? UCFullPaths[w$2].replace(chr1, "!") : UCFullPaths[w$2]).replace(chr0, "") == UCPath) return cfb.FileIndex[w$2]; + if ((m$3 ? UCPaths[w$2].replace(chr1, "!") : UCPaths[w$2]).replace(chr0, "") == UCPath) return cfb.FileIndex[w$2]; + } + return null; + } + /** CFB Constants */ + var MSSZ = 64; + var ENDOFCHAIN = -2; + var HEADER_SIGNATURE = "d0cf11e0a1b11ae1"; + var HEADER_SIG = [ + 208, + 207, + 17, + 224, + 161, + 177, + 26, + 225 + ]; + var HEADER_CLSID = "00000000000000000000000000000000"; + var consts = { + MAXREGSECT: -6, + DIFSECT: -4, + FATSECT: -3, + ENDOFCHAIN, + FREESECT: -1, + HEADER_SIGNATURE, + HEADER_MINOR_VERSION: "3e00", + MAXREGSID: -6, + NOSTREAM: -1, + HEADER_CLSID, + EntryTypes: [ + "unknown", + "storage", + "stream", + "lockbytes", + "property", + "root" + ] + }; + function write_file(cfb, filename$1, options) { + get_fs(); + var o$10 = _write(cfb, options); + fs.writeFileSync(filename$1, o$10); + } + function a2s$1(o$10) { + var out = new Array(o$10.length); + for (var i$8 = 0; i$8 < o$10.length; ++i$8) out[i$8] = String.fromCharCode(o$10[i$8]); + return out.join(""); + } + function write(cfb, options) { + var o$10 = _write(cfb, options); + switch (options && options.type || "buffer") { + case "file": + get_fs(); + fs.writeFileSync(options.filename, o$10); + return o$10; + case "binary": return typeof o$10 == "string" ? o$10 : a2s$1(o$10); + case "base64": return Base64_encode(typeof o$10 == "string" ? o$10 : a2s$1(o$10)); + case "buffer": if (has_buf) return Buffer.isBuffer(o$10) ? o$10 : Buffer_from(o$10); + case "array": return typeof o$10 == "string" ? s2a(o$10) : o$10; + } + return o$10; + } + var _zlib; + function use_zlib(zlib) { + try { + var InflateRaw = zlib.InflateRaw; + var InflRaw = new InflateRaw(); + InflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag); + if (InflRaw.bytesRead) _zlib = zlib; + else throw new Error("zlib does not expose bytesRead"); + } catch (e$10) { + console.error("cannot use native zlib: " + (e$10.message || e$10)); + } + } + function _inflateRawSync(payload, usz) { + if (!_zlib) return _inflate(payload, usz); + var InflateRaw = _zlib.InflateRaw; + var InflRaw = new InflateRaw(); + var out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag); + payload.l += InflRaw.bytesRead; + return out; + } + function _deflateRawSync(payload) { + return _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload); + } + var CLEN_ORDER = [ + 16, + 17, + 18, + 0, + 8, + 7, + 9, + 6, + 10, + 5, + 11, + 4, + 12, + 3, + 13, + 2, + 14, + 1, + 15 + ]; + var LEN_LN = [ + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 13, + 15, + 17, + 19, + 23, + 27, + 31, + 35, + 43, + 51, + 59, + 67, + 83, + 99, + 115, + 131, + 163, + 195, + 227, + 258 + ]; + var DST_LN = [ + 1, + 2, + 3, + 4, + 5, + 7, + 9, + 13, + 17, + 25, + 33, + 49, + 65, + 97, + 129, + 193, + 257, + 385, + 513, + 769, + 1025, + 1537, + 2049, + 3073, + 4097, + 6145, + 8193, + 12289, + 16385, + 24577 + ]; + function bit_swap_8(n$9) { + var t$6 = (n$9 << 1 | n$9 << 11) & 139536 | (n$9 << 5 | n$9 << 15) & 558144; + return (t$6 >> 16 | t$6 >> 8 | t$6) & 255; + } + var use_typed_arrays = typeof Uint8Array !== "undefined"; + var bitswap8 = use_typed_arrays ? new Uint8Array(1 << 8) : []; + for (var q$2 = 0; q$2 < 1 << 8; ++q$2) bitswap8[q$2] = bit_swap_8(q$2); + function bit_swap_n(n$9, b$3) { + var rev = bitswap8[n$9 & 255]; + if (b$3 <= 8) return rev >>> 8 - b$3; + rev = rev << 8 | bitswap8[n$9 >> 8 & 255]; + if (b$3 <= 16) return rev >>> 16 - b$3; + rev = rev << 8 | bitswap8[n$9 >> 16 & 255]; + return rev >>> 24 - b$3; + } + function read_bits_2(buf, bl) { + var w$2 = bl & 7, h$5 = bl >>> 3; + return (buf[h$5] | (w$2 <= 6 ? 0 : buf[h$5 + 1] << 8)) >>> w$2 & 3; + } + function read_bits_3(buf, bl) { + var w$2 = bl & 7, h$5 = bl >>> 3; + return (buf[h$5] | (w$2 <= 5 ? 0 : buf[h$5 + 1] << 8)) >>> w$2 & 7; + } + function read_bits_4(buf, bl) { + var w$2 = bl & 7, h$5 = bl >>> 3; + return (buf[h$5] | (w$2 <= 4 ? 0 : buf[h$5 + 1] << 8)) >>> w$2 & 15; + } + function read_bits_5(buf, bl) { + var w$2 = bl & 7, h$5 = bl >>> 3; + return (buf[h$5] | (w$2 <= 3 ? 0 : buf[h$5 + 1] << 8)) >>> w$2 & 31; + } + function read_bits_7(buf, bl) { + var w$2 = bl & 7, h$5 = bl >>> 3; + return (buf[h$5] | (w$2 <= 1 ? 0 : buf[h$5 + 1] << 8)) >>> w$2 & 127; + } + function read_bits_n(buf, bl, n$9) { + var w$2 = bl & 7, h$5 = bl >>> 3, f$4 = (1 << n$9) - 1; + var v$3 = buf[h$5] >>> w$2; + if (n$9 < 8 - w$2) return v$3 & f$4; + v$3 |= buf[h$5 + 1] << 8 - w$2; + if (n$9 < 16 - w$2) return v$3 & f$4; + v$3 |= buf[h$5 + 2] << 16 - w$2; + if (n$9 < 24 - w$2) return v$3 & f$4; + v$3 |= buf[h$5 + 3] << 24 - w$2; + return v$3 & f$4; + } + function write_bits_3(buf, bl, v$3) { + var w$2 = bl & 7, h$5 = bl >>> 3; + if (w$2 <= 5) buf[h$5] |= (v$3 & 7) << w$2; + else { + buf[h$5] |= v$3 << w$2 & 255; + buf[h$5 + 1] = (v$3 & 7) >> 8 - w$2; + } + return bl + 3; + } + function write_bits_1(buf, bl, v$3) { + var w$2 = bl & 7, h$5 = bl >>> 3; + v$3 = (v$3 & 1) << w$2; + buf[h$5] |= v$3; + return bl + 1; + } + function write_bits_8(buf, bl, v$3) { + var w$2 = bl & 7, h$5 = bl >>> 3; + v$3 <<= w$2; + buf[h$5] |= v$3 & 255; + v$3 >>>= 8; + buf[h$5 + 1] = v$3; + return bl + 8; + } + function write_bits_16(buf, bl, v$3) { + var w$2 = bl & 7, h$5 = bl >>> 3; + v$3 <<= w$2; + buf[h$5] |= v$3 & 255; + v$3 >>>= 8; + buf[h$5 + 1] = v$3 & 255; + buf[h$5 + 2] = v$3 >>> 8; + return bl + 16; + } + function realloc(b$3, sz) { + var L$2 = b$3.length, M$3 = 2 * L$2 > sz ? 2 * L$2 : sz + 5, i$8 = 0; + if (L$2 >= sz) return b$3; + if (has_buf) { + var o$10 = new_unsafe_buf(M$3); + if (b$3.copy) b$3.copy(o$10); + else for (; i$8 < b$3.length; ++i$8) o$10[i$8] = b$3[i$8]; + return o$10; + } else if (use_typed_arrays) { + var a$2 = new Uint8Array(M$3); + if (a$2.set) a$2.set(b$3); + else for (; i$8 < L$2; ++i$8) a$2[i$8] = b$3[i$8]; + return a$2; + } + b$3.length = M$3; + return b$3; + } + function zero_fill_array(n$9) { + var o$10 = new Array(n$9); + for (var i$8 = 0; i$8 < n$9; ++i$8) o$10[i$8] = 0; + return o$10; + } + function build_tree(clens, cmap, MAX) { + var maxlen = 1, w$2 = 0, i$8 = 0, j$2 = 0, ccode = 0, L$2 = clens.length; + var bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32); + for (i$8 = 0; i$8 < 32; ++i$8) bl_count[i$8] = 0; + for (i$8 = L$2; i$8 < MAX; ++i$8) clens[i$8] = 0; + L$2 = clens.length; + var ctree = use_typed_arrays ? new Uint16Array(L$2) : zero_fill_array(L$2); + for (i$8 = 0; i$8 < L$2; ++i$8) { + bl_count[w$2 = clens[i$8]]++; + if (maxlen < w$2) maxlen = w$2; + ctree[i$8] = 0; + } + bl_count[0] = 0; + for (i$8 = 1; i$8 <= maxlen; ++i$8) bl_count[i$8 + 16] = ccode = ccode + bl_count[i$8 - 1] << 1; + for (i$8 = 0; i$8 < L$2; ++i$8) { + ccode = clens[i$8]; + if (ccode != 0) ctree[i$8] = bl_count[ccode + 16]++; + } + var cleni = 0; + for (i$8 = 0; i$8 < L$2; ++i$8) { + cleni = clens[i$8]; + if (cleni != 0) { + ccode = bit_swap_n(ctree[i$8], maxlen) >> maxlen - cleni; + for (j$2 = (1 << maxlen + 4 - cleni) - 1; j$2 >= 0; --j$2) cmap[ccode | j$2 << cleni] = cleni & 15 | i$8 << 4; + } + } + return maxlen; + } + var fix_lmap = use_typed_arrays ? new Uint16Array(512) : zero_fill_array(512); + var fix_dmap = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32); + if (!use_typed_arrays) { + for (var i$7 = 0; i$7 < 512; ++i$7) fix_lmap[i$7] = 0; + for (i$7 = 0; i$7 < 32; ++i$7) fix_dmap[i$7] = 0; + } + (function() { + var dlens = []; + var i$8 = 0; + for (; i$8 < 32; i$8++) dlens.push(5); + build_tree(dlens, fix_dmap, 32); + var clens = []; + i$8 = 0; + for (; i$8 <= 143; i$8++) clens.push(8); + for (; i$8 <= 255; i$8++) clens.push(9); + for (; i$8 <= 279; i$8++) clens.push(7); + for (; i$8 <= 287; i$8++) clens.push(8); + build_tree(clens, fix_lmap, 288); + })(); + var _deflateRaw = /* @__PURE__ */ (function _deflateRawIIFE() { + var DST_LN_RE = use_typed_arrays ? new Uint8Array(32768) : []; + var j$2 = 0, k$2 = 0; + for (; j$2 < DST_LN.length - 1; ++j$2) { + for (; k$2 < DST_LN[j$2 + 1]; ++k$2) DST_LN_RE[k$2] = j$2; + } + for (; k$2 < 32768; ++k$2) DST_LN_RE[k$2] = 29; + var LEN_LN_RE = use_typed_arrays ? new Uint8Array(259) : []; + for (j$2 = 0, k$2 = 0; j$2 < LEN_LN.length - 1; ++j$2) { + for (; k$2 < LEN_LN[j$2 + 1]; ++k$2) LEN_LN_RE[k$2] = j$2; + } + function write_stored(data, out) { + var boff = 0; + while (boff < data.length) { + var L$2 = Math.min(65535, data.length - boff); + var h$5 = boff + L$2 == data.length; + out.write_shift(1, +h$5); + out.write_shift(2, L$2); + out.write_shift(2, ~L$2 & 65535); + while (L$2-- > 0) out[out.l++] = data[boff++]; + } + return out.l; + } + function write_huff_fixed(data, out) { + var bl = 0; + var boff = 0; + var addrs = use_typed_arrays ? new Uint16Array(32768) : []; + while (boff < data.length) { + var L$2 = Math.min(65535, data.length - boff); + if (L$2 < 10) { + bl = write_bits_3(out, bl, +!!(boff + L$2 == data.length)); + if (bl & 7) bl += 8 - (bl & 7); + out.l = bl / 8 | 0; + out.write_shift(2, L$2); + out.write_shift(2, ~L$2 & 65535); + while (L$2-- > 0) out[out.l++] = data[boff++]; + bl = out.l * 8; + continue; + } + bl = write_bits_3(out, bl, +!!(boff + L$2 == data.length) + 2); + var hash = 0; + while (L$2-- > 0) { + var d$5 = data[boff]; + hash = (hash << 5 ^ d$5) & 32767; + var match = -1, mlen = 0; + if (match = addrs[hash]) { + match |= boff & ~32767; + if (match > boff) match -= 32768; + if (match < boff) while (data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen; + } + if (mlen > 2) { + d$5 = LEN_LN_RE[mlen]; + if (d$5 <= 22) bl = write_bits_8(out, bl, bitswap8[d$5 + 1] >> 1) - 1; + else { + write_bits_8(out, bl, 3); + bl += 5; + write_bits_8(out, bl, bitswap8[d$5 - 23] >> 5); + bl += 3; + } + var len_eb = d$5 < 8 ? 0 : d$5 - 4 >> 2; + if (len_eb > 0) { + write_bits_16(out, bl, mlen - LEN_LN[d$5]); + bl += len_eb; + } + d$5 = DST_LN_RE[boff - match]; + bl = write_bits_8(out, bl, bitswap8[d$5] >> 3); + bl -= 3; + var dst_eb = d$5 < 4 ? 0 : d$5 - 2 >> 1; + if (dst_eb > 0) { + write_bits_16(out, bl, boff - match - DST_LN[d$5]); + bl += dst_eb; + } + for (var q$3 = 0; q$3 < mlen; ++q$3) { + addrs[hash] = boff & 32767; + hash = (hash << 5 ^ data[boff]) & 32767; + ++boff; + } + L$2 -= mlen - 1; + } else { + if (d$5 <= 143) d$5 = d$5 + 48; + else bl = write_bits_1(out, bl, 1); + bl = write_bits_8(out, bl, bitswap8[d$5]); + addrs[hash] = boff & 32767; + ++boff; + } + } + bl = write_bits_8(out, bl, 0) - 1; + } + out.l = (bl + 7) / 8 | 0; + return out.l; + } + return function _deflateRaw$1(data, out) { + if (data.length < 8) return write_stored(data, out); + return write_huff_fixed(data, out); + }; + })(); + function _deflate(data) { + var buf = new_buf(50 + Math.floor(data.length * 1.1)); + var off = _deflateRaw(data, buf); + return buf.slice(0, off); + } + var dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768); + var dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768); + var dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128); + var dyn_len_1 = 1, dyn_len_2 = 1; + function dyn(data, boff) { + var _HLIT = read_bits_5(data, boff) + 257; + boff += 5; + var _HDIST = read_bits_5(data, boff) + 1; + boff += 5; + var _HCLEN = read_bits_4(data, boff) + 4; + boff += 4; + var w$2 = 0; + var clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19); + var ctree = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]; + var maxlen = 1; + var bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8); + var next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8); + var L$2 = clens.length; + for (var i$8 = 0; i$8 < _HCLEN; ++i$8) { + clens[CLEN_ORDER[i$8]] = w$2 = read_bits_3(data, boff); + if (maxlen < w$2) maxlen = w$2; + bl_count[w$2]++; + boff += 3; + } + var ccode = 0; + bl_count[0] = 0; + for (i$8 = 1; i$8 <= maxlen; ++i$8) next_code[i$8] = ccode = ccode + bl_count[i$8 - 1] << 1; + for (i$8 = 0; i$8 < L$2; ++i$8) if ((ccode = clens[i$8]) != 0) ctree[i$8] = next_code[ccode]++; + var cleni = 0; + for (i$8 = 0; i$8 < L$2; ++i$8) { + cleni = clens[i$8]; + if (cleni != 0) { + ccode = bitswap8[ctree[i$8]] >> 8 - cleni; + for (var j$2 = (1 << 7 - cleni) - 1; j$2 >= 0; --j$2) dyn_cmap[ccode | j$2 << cleni] = cleni & 7 | i$8 << 3; + } + } + var hcodes = []; + maxlen = 1; + for (; hcodes.length < _HLIT + _HDIST;) { + ccode = dyn_cmap[read_bits_7(data, boff)]; + boff += ccode & 7; + switch (ccode >>>= 3) { + case 16: + w$2 = 3 + read_bits_2(data, boff); + boff += 2; + ccode = hcodes[hcodes.length - 1]; + while (w$2-- > 0) hcodes.push(ccode); + break; + case 17: + w$2 = 3 + read_bits_3(data, boff); + boff += 3; + while (w$2-- > 0) hcodes.push(0); + break; + case 18: + w$2 = 11 + read_bits_7(data, boff); + boff += 7; + while (w$2-- > 0) hcodes.push(0); + break; + default: + hcodes.push(ccode); + if (maxlen < ccode) maxlen = ccode; + break; + } + } + var h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT); + for (i$8 = _HLIT; i$8 < 286; ++i$8) h1[i$8] = 0; + for (i$8 = _HDIST; i$8 < 30; ++i$8) h2[i$8] = 0; + dyn_len_1 = build_tree(h1, dyn_lmap, 286); + dyn_len_2 = build_tree(h2, dyn_dmap, 30); + return boff; + } + function inflate(data, usz) { + if (data[0] == 3 && !(data[1] & 3)) { + return [new_raw_buf(usz), 2]; + } + var boff = 0; + var header = 0; + var outbuf = new_unsafe_buf(usz ? usz : 1 << 18); + var woff = 0; + var OL = outbuf.length >>> 0; + var max_len_1 = 0, max_len_2 = 0; + while ((header & 1) == 0) { + header = read_bits_3(data, boff); + boff += 3; + if (header >>> 1 == 0) { + if (boff & 7) boff += 8 - (boff & 7); + var sz = data[boff >>> 3] | data[(boff >>> 3) + 1] << 8; + boff += 32; + if (sz > 0) { + if (!usz && OL < woff + sz) { + outbuf = realloc(outbuf, woff + sz); + OL = outbuf.length; + } + while (sz-- > 0) { + outbuf[woff++] = data[boff >>> 3]; + boff += 8; + } + } + continue; + } else if (header >> 1 == 1) { + max_len_1 = 9; + max_len_2 = 5; + } else { + boff = dyn(data, boff); + max_len_1 = dyn_len_1; + max_len_2 = dyn_len_2; + } + for (;;) { + if (!usz && OL < woff + 32767) { + outbuf = realloc(outbuf, woff + 32767); + OL = outbuf.length; + } + var bits = read_bits_n(data, boff, max_len_1); + var code = header >>> 1 == 1 ? fix_lmap[bits] : dyn_lmap[bits]; + boff += code & 15; + code >>>= 4; + if ((code >>> 8 & 255) === 0) outbuf[woff++] = code; + else if (code == 256) break; + else { + code -= 257; + var len_eb = code < 8 ? 0 : code - 4 >> 2; + if (len_eb > 5) len_eb = 0; + var tgt = woff + LEN_LN[code]; + if (len_eb > 0) { + tgt += read_bits_n(data, boff, len_eb); + boff += len_eb; + } + bits = read_bits_n(data, boff, max_len_2); + code = header >>> 1 == 1 ? fix_dmap[bits] : dyn_dmap[bits]; + boff += code & 15; + code >>>= 4; + var dst_eb = code < 4 ? 0 : code - 2 >> 1; + var dst = DST_LN[code]; + if (dst_eb > 0) { + dst += read_bits_n(data, boff, dst_eb); + boff += dst_eb; + } + if (!usz && OL < tgt) { + outbuf = realloc(outbuf, tgt + 100); + OL = outbuf.length; + } + while (woff < tgt) { + outbuf[woff] = outbuf[woff - dst]; + ++woff; + } + } + } + } + if (usz) return [outbuf, boff + 7 >>> 3]; + return [outbuf.slice(0, woff), boff + 7 >>> 3]; + } + function _inflate(payload, usz) { + var data = payload.slice(payload.l || 0); + var out = inflate(data, usz); + payload.l += out[1]; + return out[0]; + } + function warn_or_throw(wrn, msg) { + if (wrn) { + if (typeof console !== "undefined") console.error(msg); + } else throw new Error(msg); + } + function parse_zip$1(file, options) { + var blob = file; + prep_blob(blob, 0); + var FileIndex = [], FullPaths = []; + var o$10 = { + FileIndex, + FullPaths + }; + init_cfb(o$10, { root: options.root }); + var i$8 = blob.length - 4; + while ((blob[i$8] != 80 || blob[i$8 + 1] != 75 || blob[i$8 + 2] != 5 || blob[i$8 + 3] != 6) && i$8 >= 0) --i$8; + blob.l = i$8 + 4; + blob.l += 4; + var fcnt = blob.read_shift(2); + blob.l += 6; + var start_cd = blob.read_shift(4); + blob.l = start_cd; + for (i$8 = 0; i$8 < fcnt; ++i$8) { + blob.l += 20; + var csz = blob.read_shift(4); + var usz = blob.read_shift(4); + var namelen = blob.read_shift(2); + var efsz = blob.read_shift(2); + var fcsz = blob.read_shift(2); + blob.l += 8; + var offset = blob.read_shift(4); + var EF = parse_extra_field(blob.slice(blob.l + namelen, blob.l + namelen + efsz)); + blob.l += namelen + efsz + fcsz; + var L$2 = blob.l; + blob.l = offset + 4; + if (EF && EF[1]) { + if ((EF[1] || {}).usz) usz = EF[1].usz; + if ((EF[1] || {}).csz) csz = EF[1].csz; + } + parse_local_file(blob, csz, usz, o$10, EF); + blob.l = L$2; + } + return o$10; + } + function parse_local_file(blob, csz, usz, o$10, EF) { + blob.l += 2; + var flags = blob.read_shift(2); + var meth = blob.read_shift(2); + var date = parse_dos_date(blob); + if (flags & 8257) throw new Error("Unsupported ZIP encryption"); + var crc32 = blob.read_shift(4); + var _csz = blob.read_shift(4); + var _usz = blob.read_shift(4); + var namelen = blob.read_shift(2); + var efsz = blob.read_shift(2); + var name = ""; + for (var i$8 = 0; i$8 < namelen; ++i$8) name += String.fromCharCode(blob[blob.l++]); + if (efsz) { + var ef = parse_extra_field(blob.slice(blob.l, blob.l + efsz)); + if ((ef[21589] || {}).mt) date = ef[21589].mt; + if ((ef[1] || {}).usz) _usz = ef[1].usz; + if ((ef[1] || {}).csz) _csz = ef[1].csz; + if (EF) { + if ((EF[21589] || {}).mt) date = EF[21589].mt; + if ((EF[1] || {}).usz) _usz = EF[1].usz; + if ((EF[1] || {}).csz) _csz = EF[1].csz; + } + } + blob.l += efsz; + var data = blob.slice(blob.l, blob.l + _csz); + switch (meth) { + case 8: + data = _inflateRawSync(blob, _usz); + break; + case 0: + blob.l += _csz; + break; + default: throw new Error("Unsupported ZIP Compression method " + meth); + } + var wrn = false; + if (flags & 8) { + crc32 = blob.read_shift(4); + if (crc32 == 134695760) { + crc32 = blob.read_shift(4); + wrn = true; + } + _csz = blob.read_shift(4); + _usz = blob.read_shift(4); + } + if (_csz != csz) warn_or_throw(wrn, "Bad compressed size: " + csz + " != " + _csz); + if (_usz != usz) warn_or_throw(wrn, "Bad uncompressed size: " + usz + " != " + _usz); + cfb_add(o$10, name, data, { + unsafe: true, + mt: date + }); + } + function write_zip$1(cfb, options) { + var _opts = options || {}; + var out = [], cdirs = []; + var o$10 = new_buf(1); + var method = _opts.compression ? 8 : 0, flags = 0; + var desc = false; + if (desc) flags |= 8; + var i$8 = 0, j$2 = 0; + var start_cd = 0, fcnt = 0; + var root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0]; + var crcs = []; + var sz_cd = 0; + for (i$8 = 1; i$8 < cfb.FullPaths.length; ++i$8) { + fp = cfb.FullPaths[i$8].slice(root.length); + fi = cfb.FileIndex[i$8]; + if (!fi.size || !fi.content || Array.isArray(fi.content) && fi.content.length == 0 || fp == "Sh33tJ5") continue; + var start = start_cd; + var namebuf = new_buf(fp.length); + for (j$2 = 0; j$2 < fp.length; ++j$2) namebuf.write_shift(1, fp.charCodeAt(j$2) & 127); + namebuf = namebuf.slice(0, namebuf.l); + crcs[fcnt] = typeof fi.content == "string" ? CRC32.bstr(fi.content, 0) : CRC32.buf(fi.content, 0); + var outbuf = typeof fi.content == "string" ? s2a(fi.content) : fi.content; + if (method == 8) outbuf = _deflateRawSync(outbuf); + o$10 = new_buf(30); + o$10.write_shift(4, 67324752); + o$10.write_shift(2, 20); + o$10.write_shift(2, flags); + o$10.write_shift(2, method); + if (fi.mt) write_dos_date(o$10, fi.mt); + else o$10.write_shift(4, 0); + o$10.write_shift(-4, flags & 8 ? 0 : crcs[fcnt]); + o$10.write_shift(4, flags & 8 ? 0 : outbuf.length); + o$10.write_shift(4, flags & 8 ? 0 : fi.content.length); + o$10.write_shift(2, namebuf.length); + o$10.write_shift(2, 0); + start_cd += o$10.length; + out.push(o$10); + start_cd += namebuf.length; + out.push(namebuf); + start_cd += outbuf.length; + out.push(outbuf); + if (flags & 8) { + o$10 = new_buf(12); + o$10.write_shift(-4, crcs[fcnt]); + o$10.write_shift(4, outbuf.length); + o$10.write_shift(4, fi.content.length); + start_cd += o$10.l; + out.push(o$10); + } + o$10 = new_buf(46); + o$10.write_shift(4, 33639248); + o$10.write_shift(2, 0); + o$10.write_shift(2, 20); + o$10.write_shift(2, flags); + o$10.write_shift(2, method); + o$10.write_shift(4, 0); + o$10.write_shift(-4, crcs[fcnt]); + o$10.write_shift(4, outbuf.length); + o$10.write_shift(4, fi.content.length); + o$10.write_shift(2, namebuf.length); + o$10.write_shift(2, 0); + o$10.write_shift(2, 0); + o$10.write_shift(2, 0); + o$10.write_shift(2, 0); + o$10.write_shift(4, 0); + o$10.write_shift(4, start); + sz_cd += o$10.l; + cdirs.push(o$10); + sz_cd += namebuf.length; + cdirs.push(namebuf); + ++fcnt; + } + o$10 = new_buf(22); + o$10.write_shift(4, 101010256); + o$10.write_shift(2, 0); + o$10.write_shift(2, 0); + o$10.write_shift(2, fcnt); + o$10.write_shift(2, fcnt); + o$10.write_shift(4, sz_cd); + o$10.write_shift(4, start_cd); + o$10.write_shift(2, 0); + return bconcat([ + bconcat(out), + bconcat(cdirs), + o$10 + ]); + } + var ContentTypeMap = { + "htm": "text/html", + "xml": "text/xml", + "gif": "image/gif", + "jpg": "image/jpeg", + "png": "image/png", + "mso": "application/x-mso", + "thmx": "application/vnd.ms-officetheme", + "sh33tj5": "application/octet-stream" + }; + function get_content_type(fi, fp) { + if (fi.ctype) return fi.ctype; + var ext = fi.name || "", m$3 = ext.match(/\.([^\.]+)$/); + if (m$3 && ContentTypeMap[m$3[1]]) return ContentTypeMap[m$3[1]]; + if (fp) { + m$3 = (ext = fp).match(/[\.\\]([^\.\\])+$/); + if (m$3 && ContentTypeMap[m$3[1]]) return ContentTypeMap[m$3[1]]; + } + return "application/octet-stream"; + } + function write_base64_76(bstr) { + var data = Base64_encode(bstr); + var o$10 = []; + for (var i$8 = 0; i$8 < data.length; i$8 += 76) o$10.push(data.slice(i$8, i$8 + 76)); + return o$10.join("\r\n") + "\r\n"; + } + function write_quoted_printable(text$2) { + var encoded = text$2.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF=]/g, function(c$7) { + var w$2 = c$7.charCodeAt(0).toString(16).toUpperCase(); + return "=" + (w$2.length == 1 ? "0" + w$2 : w$2); + }); + encoded = encoded.replace(/ $/gm, "=20").replace(/\t$/gm, "=09"); + if (encoded.charAt(0) == "\n") encoded = "=0D" + encoded.slice(1); + encoded = encoded.replace(/\r(?!\n)/gm, "=0D").replace(/\n\n/gm, "\n=0A").replace(/([^\r\n])\n/gm, "$1=0A"); + var o$10 = [], split = encoded.split("\r\n"); + for (var si = 0; si < split.length; ++si) { + var str = split[si]; + if (str.length == 0) { + o$10.push(""); + continue; + } + for (var i$8 = 0; i$8 < str.length;) { + var end = 76; + var tmp = str.slice(i$8, i$8 + end); + if (tmp.charAt(end - 1) == "=") end--; + else if (tmp.charAt(end - 2) == "=") end -= 2; + else if (tmp.charAt(end - 3) == "=") end -= 3; + tmp = str.slice(i$8, i$8 + end); + i$8 += end; + if (i$8 < str.length) tmp += "="; + o$10.push(tmp); + } + } + return o$10.join("\r\n"); + } + function parse_quoted_printable(data) { + var o$10 = []; + for (var di = 0; di < data.length; ++di) { + var line = data[di]; + while (di <= data.length && line.charAt(line.length - 1) == "=") line = line.slice(0, line.length - 1) + data[++di]; + o$10.push(line); + } + for (var oi = 0; oi < o$10.length; ++oi) o$10[oi] = o$10[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { + return String.fromCharCode(parseInt($$.slice(1), 16)); + }); + return s2a(o$10.join("\r\n")); + } + function parse_mime(cfb, data, root) { + var fname = "", cte = "", ctype = "", fdata; + var di = 0; + for (; di < 10; ++di) { + var line = data[di]; + if (!line || line.match(/^\s*$/)) break; + var m$3 = line.match(/^([^:]*?):\s*([^\s].*)$/); + if (m$3) switch (m$3[1].toLowerCase()) { + case "content-location": + fname = m$3[2].trim(); + break; + case "content-type": + ctype = m$3[2].trim(); + break; + case "content-transfer-encoding": + cte = m$3[2].trim(); + break; + } + } + ++di; + switch (cte.toLowerCase()) { + case "base64": + fdata = s2a(Base64_decode(data.slice(di).join(""))); + break; + case "quoted-printable": + fdata = parse_quoted_printable(data.slice(di)); + break; + default: throw new Error("Unsupported Content-Transfer-Encoding " + cte); + } + var file = cfb_add(cfb, fname.slice(root.length), fdata, { unsafe: true }); + if (ctype) file.ctype = ctype; + } + function parse_mad(file, options) { + if (a2s$1(file.slice(0, 13)).toLowerCase() != "mime-version:") throw new Error("Unsupported MAD header"); + var root = options && options.root || ""; + var data = (has_buf && Buffer.isBuffer(file) ? file.toString("binary") : a2s$1(file)).split("\r\n"); + var di = 0, row = ""; + for (di = 0; di < data.length; ++di) { + row = data[di]; + if (!/^Content-Location:/i.test(row)) continue; + row = row.slice(row.indexOf("file")); + if (!root) root = row.slice(0, row.lastIndexOf("/") + 1); + if (row.slice(0, root.length) == root) continue; + while (root.length > 0) { + root = root.slice(0, root.length - 1); + root = root.slice(0, root.lastIndexOf("/") + 1); + if (row.slice(0, root.length) == root) break; + } + } + var mboundary = (data[1] || "").match(/boundary="(.*?)"/); + if (!mboundary) throw new Error("MAD cannot find boundary"); + var boundary = "--" + (mboundary[1] || ""); + var FileIndex = [], FullPaths = []; + var o$10 = { + FileIndex, + FullPaths + }; + init_cfb(o$10); + var start_di, fcnt = 0; + for (di = 0; di < data.length; ++di) { + var line = data[di]; + if (line !== boundary && line !== boundary + "--") continue; + if (fcnt++) parse_mime(o$10, data.slice(start_di, di), root); + start_di = di; + } + return o$10; + } + function write_mad(cfb, options) { + var opts = options || {}; + var boundary = opts.boundary || "SheetJS"; + boundary = "------=" + boundary; + var out = [ + "MIME-Version: 1.0", + "Content-Type: multipart/related; boundary=\"" + boundary.slice(2) + "\"", + "", + "", + "" + ]; + var root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0]; + for (var i$8 = 1; i$8 < cfb.FullPaths.length; ++i$8) { + fp = cfb.FullPaths[i$8].slice(root.length); + fi = cfb.FileIndex[i$8]; + if (!fi.size || !fi.content || fp == "Sh33tJ5") continue; + fp = fp.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF]/g, function(c$7) { + return "_x" + c$7.charCodeAt(0).toString(16) + "_"; + }).replace(/[\u0080-\uFFFF]/g, function(u$4) { + return "_u" + u$4.charCodeAt(0).toString(16) + "_"; + }); + var ca = fi.content; + var cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString("binary") : a2s$1(ca); + var dispcnt = 0, L$2 = Math.min(1024, cstr.length), cc = 0; + for (var csl = 0; csl <= L$2; ++csl) if ((cc = cstr.charCodeAt(csl)) >= 32 && cc < 128) ++dispcnt; + var qp = dispcnt >= L$2 * 4 / 5; + out.push(boundary); + out.push("Content-Location: " + (opts.root || "file:///C:/SheetJS/") + fp); + out.push("Content-Transfer-Encoding: " + (qp ? "quoted-printable" : "base64")); + out.push("Content-Type: " + get_content_type(fi, fp)); + out.push(""); + out.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr)); + } + out.push(boundary + "--\r\n"); + return out.join("\r\n"); + } + function cfb_new(opts) { + var o$10 = {}; + init_cfb(o$10, opts); + return o$10; + } + function cfb_add(cfb, name, content, opts) { + var unsafe = opts && opts.unsafe; + if (!unsafe) init_cfb(cfb); + var file = !unsafe && CFB.find(cfb, name); + if (!file) { + var fpath = cfb.FullPaths[0]; + if (name.slice(0, fpath.length) == fpath) fpath = name; + else { + if (fpath.slice(-1) != "/") fpath += "/"; + fpath = (fpath + name).replace("//", "/"); + } + file = { + name: filename(name), + type: 2 + }; + cfb.FileIndex.push(file); + cfb.FullPaths.push(fpath); + if (!unsafe) CFB.utils.cfb_gc(cfb); + } + file.content = content; + file.size = content ? content.length : 0; + if (opts) { + if (opts.CLSID) file.clsid = opts.CLSID; + if (opts.mt) file.mt = opts.mt; + if (opts.ct) file.ct = opts.ct; + } + return file; + } + function cfb_del(cfb, name) { + init_cfb(cfb); + var file = CFB.find(cfb, name); + if (file) { + for (var j$2 = 0; j$2 < cfb.FileIndex.length; ++j$2) if (cfb.FileIndex[j$2] == file) { + cfb.FileIndex.splice(j$2, 1); + cfb.FullPaths.splice(j$2, 1); + return true; + } + } + return false; + } + function cfb_mov(cfb, old_name, new_name) { + init_cfb(cfb); + var file = CFB.find(cfb, old_name); + if (file) { + for (var j$2 = 0; j$2 < cfb.FileIndex.length; ++j$2) if (cfb.FileIndex[j$2] == file) { + cfb.FileIndex[j$2].name = filename(new_name); + cfb.FullPaths[j$2] = new_name; + return true; + } + } + return false; + } + function cfb_gc(cfb) { + rebuild_cfb(cfb, true); + } + exports$1.find = find; + exports$1.read = read; + exports$1.parse = parse; + exports$1.write = write; + exports$1.writeFile = write_file; + exports$1.utils = { + cfb_new, + cfb_add, + cfb_del, + cfb_mov, + cfb_gc, + ReadShift, + CheckField, + prep_blob, + bconcat, + use_zlib, + _deflateRaw: _deflate, + _inflateRaw: _inflate, + consts + }; + return exports$1; + })(); + ; + dnthresh = /* @__PURE__ */ Date.UTC(1899, 11, 30, 0, 0, 0); + dnthresh1 = /* @__PURE__ */ Date.UTC(1899, 11, 31, 0, 0, 0); + dnthresh2 = /* @__PURE__ */ Date.UTC(1904, 0, 1, 0, 0, 0); + pdre1 = /^(\d+):(\d+)(:\d+)?(\.\d+)?$/; + pdre2 = /^(\d+)-(\d+)-(\d+)$/; + pdre3 = /^(\d+)-(\d+)-(\d+)[T ](\d+):(\d+)(:\d+)?(\.\d+)?$/; + FDRE1 = /^(0?\d|1[0-2])(?:|:([0-5]?\d)(?:|(\.\d+)(?:|:([0-5]?\d))|:([0-5]?\d)(|\.\d+)))\s+([ap])m?$/; + FDRE2 = /^([01]?\d|2[0-3])(?:|:([0-5]?\d)(?:|(\.\d+)(?:|:([0-5]?\d))|:([0-5]?\d)(|\.\d+)))$/; + FDISO = /^(\d+)-(\d+)-(\d+)[T ](\d+):(\d+)(:\d+)(\.\d+)?[Z]?$/; + utc_append_works = new Date("6/9/69 00:00 UTC").valueOf() == -177984e5; + lower_months = [ + "january", + "february", + "march", + "april", + "may", + "june", + "july", + "august", + "september", + "october", + "november", + "december" + ]; + split_regex = /* @__PURE__ */ (function() { + var safe_split_regex = "abacaba".split(/(:?b)/i).length == 5; + return function split_regex$1(str, re$1, def) { + if (safe_split_regex || typeof re$1 == "string") return str.split(re$1); + var p$3 = str.split(re$1), o$10 = [p$3[0]]; + for (var i$7 = 1; i$7 < p$3.length; ++i$7) { + o$10.push(def); + o$10.push(p$3[i$7]); + } + return o$10; + }; + })(); + xml_boundary = { + " ": 1, + " ": 1, + "\r": 1, + "\n": 1, + ">": 1 + }; + str_match_xml_ns = /* @__PURE__ */ (function() { + var str_match_xml_ns_cache = {}; + return function str_match_xml_ns$1(str, tag) { + var res = str_match_xml_ns_cache[tag]; + if (!res) str_match_xml_ns_cache[tag] = res = [new RegExp("<(?:\\w+:)?" + tag + "\\b[^<>]*>", "g"), new RegExp("", "g")]; + res[0].lastIndex = res[1].lastIndex = 0; + var m$3 = res[0].exec(str); + if (!m$3) return null; + var si = m$3.index; + var sf = res[0].lastIndex; + res[1].lastIndex = res[0].lastIndex; + m$3 = res[1].exec(str); + if (!m$3) return null; + var ei = m$3.index; + var ef = res[1].lastIndex; + return [str.slice(si, ef), str.slice(sf, ei)]; + }; + })(); + str_match_xml_ns_g = /* @__PURE__ */ (function() { + var str_match_xml_ns_cache = {}; + return function str_match_xml_ns$1(str, tag) { + var out = []; + var res = str_match_xml_ns_cache[tag]; + if (!res) str_match_xml_ns_cache[tag] = res = [new RegExp("<(?:\\w+:)?" + tag + "\\b[^<>]*>", "g"), new RegExp("", "g")]; + res[0].lastIndex = res[1].lastIndex = 0; + var m$3; + while (m$3 = res[0].exec(str)) { + var si = m$3.index; + res[1].lastIndex = res[0].lastIndex; + m$3 = res[1].exec(str); + if (!m$3) return null; + var ef = res[1].lastIndex; + out.push(str.slice(si, ef)); + res[0].lastIndex = res[1].lastIndex; + } + return out.length == 0 ? null : out; + }; + })(); + str_remove_xml_ns_g = /* @__PURE__ */ (function() { + var str_remove_xml_ns_cache = {}; + return function str_remove_xml_ns_g$1(str, tag) { + var out = []; + var res = str_remove_xml_ns_cache[tag]; + if (!res) str_remove_xml_ns_cache[tag] = res = [new RegExp("<(?:\\w+:)?" + tag + "\\b[^<>]*>", "g"), new RegExp("", "g")]; + res[0].lastIndex = res[1].lastIndex = 0; + var m$3; + var si = 0, ef = 0; + while (m$3 = res[0].exec(str)) { + si = m$3.index; + out.push(str.slice(ef, si)); + ef = si; + res[1].lastIndex = res[0].lastIndex; + m$3 = res[1].exec(str); + if (!m$3) return null; + ef = res[1].lastIndex; + res[0].lastIndex = res[1].lastIndex; + } + out.push(str.slice(ef)); + return out.length == 0 ? "" : out.join(""); + }; + })(); + str_match_xml_ig = /* @__PURE__ */ (function() { + var str_match_xml_ns_cache = {}; + return function str_match_xml_ns$1(str, tag) { + var out = []; + var res = str_match_xml_ns_cache[tag]; + if (!res) str_match_xml_ns_cache[tag] = res = [new RegExp("<" + tag + "\\b[^<>]*>", "ig"), new RegExp("", "ig")]; + res[0].lastIndex = res[1].lastIndex = 0; + var m$3; + while (m$3 = res[0].exec(str)) { + var si = m$3.index; + res[1].lastIndex = res[0].lastIndex; + m$3 = res[1].exec(str); + if (!m$3) return null; + var ef = res[1].lastIndex; + out.push(str.slice(si, ef)); + res[0].lastIndex = res[1].lastIndex; + } + return out.length == 0 ? null : out; + }; + })(); + XML_HEADER = "\r\n"; + attregexg = /\s([^"\s?>\/]+)\s*=\s*((?:")([^"]*)(?:")|(?:')([^']*)(?:')|([^'">\s]+))/g; + tagregex1 = /<[\/\?]?[a-zA-Z0-9:_-]+(?:\s+[^"\s?<>\/]+\s*=\s*(?:"[^"]*"|'[^']*'|[^'"<>\s=]+))*\s*[\/\?]?>/gm, tagregex2 = /<[^<>]*>/g; + tagregex = /* @__PURE__ */ XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2; + nsregex = /<\w*:/, nsregex2 = /<(\/?)\w+:/; + encodings = { + """: "\"", + "'": "'", + ">": ">", + "<": "<", + "&": "&" + }; + rencoding = /* @__PURE__ */ evert(encodings); + unescapexml = /* @__PURE__ */ (function() { + var encregex = /&(?:quot|apos|gt|lt|amp|#x?([\da-fA-F]+));/gi, coderegex = /_x([\da-fA-F]{4})_/gi; + function raw_unescapexml(text$2) { + var s$5 = text$2 + "", i$7 = s$5.indexOf(" -1 ? 16 : 10)) || $$; + }).replace(coderegex, function(m$3, c$7) { + return String.fromCharCode(parseInt(c$7, 16)); + }); + var j$2 = s$5.indexOf("]]>"); + return raw_unescapexml(s$5.slice(0, i$7)) + s$5.slice(i$7 + 9, j$2) + raw_unescapexml(s$5.slice(j$2 + 3)); + } + return function unescapexml$1(text$2, xlsx) { + var out = raw_unescapexml(text$2); + return xlsx ? out.replace(/\r\n/g, "\n") : out; + }; + })(); + decregex = /[&<>'"]/g, charegex = /[\u0000-\u0008\u000b-\u001f\uFFFE-\uFFFF]/g; + htmlcharegex = /[\u0000-\u001f]/g; + xlml_fixstr = /* @__PURE__ */ (function() { + var entregex = /&#(\d+);/g; + function entrepl($$, $1) { + return String.fromCharCode(parseInt($1, 10)); + } + return function xlml_fixstr$1(str) { + return str.replace(entregex, entrepl); + }; + })(); + utf8corpus = "foo bar baz☃🍣"; + utf8read = has_buf && (/* @__PURE__ */ utf8readc(utf8corpus) == /* @__PURE__ */ utf8reada(utf8corpus) && utf8readc || /* @__PURE__ */ utf8readb(utf8corpus) == /* @__PURE__ */ utf8reada(utf8corpus) && utf8readb) || utf8reada; + utf8write = has_buf ? function(data) { + return Buffer_from(data, "utf8").toString("binary"); + } : function(orig) { + var out = [], i$7 = 0, c$7 = 0, d$5 = 0; + while (i$7 < orig.length) { + c$7 = orig.charCodeAt(i$7++); + switch (true) { + case c$7 < 128: + out.push(String.fromCharCode(c$7)); + break; + case c$7 < 2048: + out.push(String.fromCharCode(192 + (c$7 >> 6))); + out.push(String.fromCharCode(128 + (c$7 & 63))); + break; + case c$7 >= 55296 && c$7 < 57344: + c$7 -= 55296; + d$5 = orig.charCodeAt(i$7++) - 56320 + (c$7 << 10); + out.push(String.fromCharCode(240 + (d$5 >> 18 & 7))); + out.push(String.fromCharCode(144 + (d$5 >> 12 & 63))); + out.push(String.fromCharCode(128 + (d$5 >> 6 & 63))); + out.push(String.fromCharCode(128 + (d$5 & 63))); + break; + default: + out.push(String.fromCharCode(224 + (c$7 >> 12))); + out.push(String.fromCharCode(128 + (c$7 >> 6 & 63))); + out.push(String.fromCharCode(128 + (c$7 & 63))); + } + } + return out.join(""); + }; + htmldecode = /* @__PURE__ */ (function() { + var entities = [ + ["nbsp", " "], + ["middot", "·"], + ["quot", "\""], + ["apos", "'"], + ["gt", ">"], + ["lt", "<"], + ["amp", "&"] + ].map(function(x$2) { + return [new RegExp("&" + x$2[0] + ";", "ig"), x$2[1]]; + }); + return function htmldecode$1(str) { + var o$10 = str.replace(/^[\t\n\r ]+/, "").replace(/(^|[^\t\n\r ])[\t\n\r ]+$/, "$1").replace(/>\s+/g, ">").replace(/\b\s+/g, "\n").replace(/<[^<>]*>/g, ""); + for (var i$7 = 0; i$7 < entities.length; ++i$7) o$10 = o$10.replace(entities[i$7][0], entities[i$7][1]); + return o$10; + }; + })(); + vtvregex = /<\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^<"'>]*)>([\s\S]*):\/"]+)(?:\s+[^<>=?"'\s]+="[^"]*?")*\s*[\/]?>/gm; + XMLNS = { + CORE_PROPS: "http://schemas.openxmlformats.org/package/2006/metadata/core-properties", + CUST_PROPS: "http://schemas.openxmlformats.org/officeDocument/2006/custom-properties", + EXT_PROPS: "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties", + CT: "http://schemas.openxmlformats.org/package/2006/content-types", + RELS: "http://schemas.openxmlformats.org/package/2006/relationships", + TCMNT: "http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments", + "dc": "http://purl.org/dc/elements/1.1/", + "dcterms": "http://purl.org/dc/terms/", + "dcmitype": "http://purl.org/dc/dcmitype/", + "mx": "http://schemas.microsoft.com/office/mac/excel/2008/main", + "r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships", + "sjs": "http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties", + "vt": "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes", + "xsi": "http://www.w3.org/2001/XMLSchema-instance", + "xsd": "http://www.w3.org/2001/XMLSchema" + }; + XMLNS_main = [ + "http://schemas.openxmlformats.org/spreadsheetml/2006/main", + "http://purl.oclc.org/ooxml/spreadsheetml/main", + "http://schemas.microsoft.com/office/excel/2006/main", + "http://schemas.microsoft.com/office/excel/2006/2" + ]; + XLMLNS = { + "o": "urn:schemas-microsoft-com:office:office", + "x": "urn:schemas-microsoft-com:office:excel", + "ss": "urn:schemas-microsoft-com:office:spreadsheet", + "dt": "uuid:C2F41010-65B3-11d1-A29F-00AA00C14882", + "mv": "http://macVmlSchemaUri", + "v": "urn:schemas-microsoft-com:vml", + "html": "http://www.w3.org/TR/REC-html40" + }; + ___toBuffer = function(bufs) { + var x$2 = [], w$2 = 10240; + for (var i$7 = 0; i$7 < bufs[0].length; ++i$7) if (bufs[0][i$7]) for (var j$2 = 0, L$2 = bufs[0][i$7].length; j$2 < L$2; j$2 += w$2) x$2.push.apply(x$2, bufs[0][i$7].slice(j$2, j$2 + w$2)); + return x$2; + }; + __toBuffer = has_buf ? function(bufs) { + return bufs[0].length > 0 && Buffer.isBuffer(bufs[0][0]) ? Buffer.concat(bufs[0].map(function(x$2) { + return Buffer.isBuffer(x$2) ? x$2 : Buffer_from(x$2); + })) : ___toBuffer(bufs); + } : ___toBuffer; + ___utf16le = function(b$3, s$5, e$10) { + var ss = []; + for (var i$7 = s$5; i$7 < e$10; i$7 += 2) ss.push(String.fromCharCode(__readUInt16LE(b$3, i$7))); + return ss.join("").replace(chr0, ""); + }; + __utf16le = has_buf ? function(b$3, s$5, e$10) { + if (!Buffer.isBuffer(b$3) || !buf_utf16le) return ___utf16le(b$3, s$5, e$10); + return b$3.toString("utf16le", s$5, e$10).replace(chr0, ""); + } : ___utf16le; + ___hexlify = function(b$3, s$5, l$3) { + var ss = []; + for (var i$7 = s$5; i$7 < s$5 + l$3; ++i$7) ss.push(("0" + b$3[i$7].toString(16)).slice(-2)); + return ss.join(""); + }; + __hexlify = has_buf ? function(b$3, s$5, l$3) { + return Buffer.isBuffer(b$3) ? b$3.toString("hex", s$5, s$5 + l$3) : ___hexlify(b$3, s$5, l$3); + } : ___hexlify; + ___utf8 = function(b$3, s$5, e$10) { + var ss = []; + for (var i$7 = s$5; i$7 < e$10; i$7++) ss.push(String.fromCharCode(__readUInt8(b$3, i$7))); + return ss.join(""); + }; + __utf8 = has_buf ? function utf8_b(b$3, s$5, e$10) { + return Buffer.isBuffer(b$3) ? b$3.toString("utf8", s$5, e$10) : ___utf8(b$3, s$5, e$10); + } : ___utf8; + ___lpstr = function(b$3, i$7) { + var len = __readUInt32LE(b$3, i$7); + return len > 0 ? __utf8(b$3, i$7 + 4, i$7 + 4 + len - 1) : ""; + }; + __lpstr = ___lpstr; + ___cpstr = function(b$3, i$7) { + var len = __readUInt32LE(b$3, i$7); + return len > 0 ? __utf8(b$3, i$7 + 4, i$7 + 4 + len - 1) : ""; + }; + __cpstr = ___cpstr; + ___lpwstr = function(b$3, i$7) { + var len = 2 * __readUInt32LE(b$3, i$7); + return len > 0 ? __utf8(b$3, i$7 + 4, i$7 + 4 + len - 1) : ""; + }; + __lpwstr = ___lpwstr; + ___lpp4 = function lpp4_(b$3, i$7) { + var len = __readUInt32LE(b$3, i$7); + return len > 0 ? __utf16le(b$3, i$7 + 4, i$7 + 4 + len) : ""; + }; + __lpp4 = ___lpp4; + ___8lpp4 = function(b$3, i$7) { + var len = __readUInt32LE(b$3, i$7); + return len > 0 ? __utf8(b$3, i$7 + 4, i$7 + 4 + len) : ""; + }; + __8lpp4 = ___8lpp4; + ___double = function(b$3, idx) { + return read_double_le(b$3, idx); + }; + __double = ___double; + is_buf = function is_buf_a(a$2) { + return Array.isArray(a$2) || typeof Uint8Array !== "undefined" && a$2 instanceof Uint8Array; + }; + if (has_buf) { + __lpstr = function lpstr_b(b$3, i$7) { + if (!Buffer.isBuffer(b$3)) return ___lpstr(b$3, i$7); + var len = b$3.readUInt32LE(i$7); + return len > 0 ? b$3.toString("utf8", i$7 + 4, i$7 + 4 + len - 1) : ""; + }; + __cpstr = function cpstr_b(b$3, i$7) { + if (!Buffer.isBuffer(b$3)) return ___cpstr(b$3, i$7); + var len = b$3.readUInt32LE(i$7); + return len > 0 ? b$3.toString("utf8", i$7 + 4, i$7 + 4 + len - 1) : ""; + }; + __lpwstr = function lpwstr_b(b$3, i$7) { + if (!Buffer.isBuffer(b$3) || !buf_utf16le) return ___lpwstr(b$3, i$7); + var len = 2 * b$3.readUInt32LE(i$7); + return b$3.toString("utf16le", i$7 + 4, i$7 + 4 + len - 1); + }; + __lpp4 = function lpp4_b(b$3, i$7) { + if (!Buffer.isBuffer(b$3) || !buf_utf16le) return ___lpp4(b$3, i$7); + var len = b$3.readUInt32LE(i$7); + return b$3.toString("utf16le", i$7 + 4, i$7 + 4 + len); + }; + __8lpp4 = function lpp4_8b(b$3, i$7) { + if (!Buffer.isBuffer(b$3)) return ___8lpp4(b$3, i$7); + var len = b$3.readUInt32LE(i$7); + return b$3.toString("utf8", i$7 + 4, i$7 + 4 + len); + }; + __double = function double_(b$3, i$7) { + if (Buffer.isBuffer(b$3)) return b$3.readDoubleLE(i$7); + return ___double(b$3, i$7); + }; + is_buf = function is_buf_b(a$2) { + return Buffer.isBuffer(a$2) || Array.isArray(a$2) || typeof Uint8Array !== "undefined" && a$2 instanceof Uint8Array; + }; + } + if (typeof $cptable !== "undefined") cpdoit(); + __readUInt8 = function(b$3, idx) { + return b$3[idx]; + }; + __readUInt16LE = function(b$3, idx) { + return b$3[idx + 1] * (1 << 8) + b$3[idx]; + }; + __readInt16LE = function(b$3, idx) { + var u$4 = b$3[idx + 1] * (1 << 8) + b$3[idx]; + return u$4 < 32768 ? u$4 : (65535 - u$4 + 1) * -1; + }; + __readUInt32LE = function(b$3, idx) { + return b$3[idx + 3] * (1 << 24) + (b$3[idx + 2] << 16) + (b$3[idx + 1] << 8) + b$3[idx]; + }; + __readInt32LE = function(b$3, idx) { + return b$3[idx + 3] << 24 | b$3[idx + 2] << 16 | b$3[idx + 1] << 8 | b$3[idx]; + }; + __readInt32BE = function(b$3, idx) { + return b$3[idx] << 24 | b$3[idx + 1] << 16 | b$3[idx + 2] << 8 | b$3[idx + 3]; + }; + __writeUInt32LE = function(b$3, val$1, idx) { + b$3[idx] = val$1 & 255; + b$3[idx + 1] = val$1 >>> 8 & 255; + b$3[idx + 2] = val$1 >>> 16 & 255; + b$3[idx + 3] = val$1 >>> 24 & 255; + }; + __writeInt32LE = function(b$3, val$1, idx) { + b$3[idx] = val$1 & 255; + b$3[idx + 1] = val$1 >> 8 & 255; + b$3[idx + 2] = val$1 >> 16 & 255; + b$3[idx + 3] = val$1 >> 24 & 255; + }; + __writeUInt16LE = function(b$3, val$1, idx) { + b$3[idx] = val$1 & 255; + b$3[idx + 1] = val$1 >>> 8 & 255; + }; + parse_BrtCommentText = parse_RichStr; + parse_XLSBCodeName = parse_XLWideString; + write_XLSBCodeName = write_XLWideString; + parse_XLNameWideString = parse_XLWideString; + parse_RelID = parse_XLNullableWideString; + write_RelID = write_XLNullableWideString; + parse_UncheckedRfX = parse_RfX; + write_UncheckedRfX = write_RfX; + VT_I2 = 2; + VT_I4 = 3; + VT_BOOL = 11; + VT_VARIANT = 12; + VT_UI4 = 19; + VT_FILETIME = 64; + VT_BLOB = 65; + VT_CF = 71; + VT_VECTOR_VARIANT = 4108; + VT_VECTOR_LPSTR = 4126; + VT_STRING = 80; + VT_USTR = 81; + VT_CUSTOM = [VT_STRING, VT_USTR]; + DocSummaryPIDDSI = { + 1: { + n: "CodePage", + t: VT_I2 + }, + 2: { + n: "Category", + t: VT_STRING + }, + 3: { + n: "PresentationFormat", + t: VT_STRING + }, + 4: { + n: "ByteCount", + t: VT_I4 + }, + 5: { + n: "LineCount", + t: VT_I4 + }, + 6: { + n: "ParagraphCount", + t: VT_I4 + }, + 7: { + n: "SlideCount", + t: VT_I4 + }, + 8: { + n: "NoteCount", + t: VT_I4 + }, + 9: { + n: "HiddenCount", + t: VT_I4 + }, + 10: { + n: "MultimediaClipCount", + t: VT_I4 + }, + 11: { + n: "ScaleCrop", + t: VT_BOOL + }, + 12: { + n: "HeadingPairs", + t: VT_VECTOR_VARIANT + }, + 13: { + n: "TitlesOfParts", + t: VT_VECTOR_LPSTR + }, + 14: { + n: "Manager", + t: VT_STRING + }, + 15: { + n: "Company", + t: VT_STRING + }, + 16: { + n: "LinksUpToDate", + t: VT_BOOL + }, + 17: { + n: "CharacterCount", + t: VT_I4 + }, + 19: { + n: "SharedDoc", + t: VT_BOOL + }, + 22: { + n: "HyperlinksChanged", + t: VT_BOOL + }, + 23: { + n: "AppVersion", + t: VT_I4, + p: "version" + }, + 24: { + n: "DigSig", + t: VT_BLOB + }, + 26: { + n: "ContentType", + t: VT_STRING + }, + 27: { + n: "ContentStatus", + t: VT_STRING + }, + 28: { + n: "Language", + t: VT_STRING + }, + 29: { + n: "Version", + t: VT_STRING + }, + 255: {}, + 2147483648: { + n: "Locale", + t: VT_UI4 + }, + 2147483651: { + n: "Behavior", + t: VT_UI4 + }, + 1919054434: {} + }; + SummaryPIDSI = { + 1: { + n: "CodePage", + t: VT_I2 + }, + 2: { + n: "Title", + t: VT_STRING + }, + 3: { + n: "Subject", + t: VT_STRING + }, + 4: { + n: "Author", + t: VT_STRING + }, + 5: { + n: "Keywords", + t: VT_STRING + }, + 6: { + n: "Comments", + t: VT_STRING + }, + 7: { + n: "Template", + t: VT_STRING + }, + 8: { + n: "LastAuthor", + t: VT_STRING + }, + 9: { + n: "RevNumber", + t: VT_STRING + }, + 10: { + n: "EditTime", + t: VT_FILETIME + }, + 11: { + n: "LastPrinted", + t: VT_FILETIME + }, + 12: { + n: "CreatedDate", + t: VT_FILETIME + }, + 13: { + n: "ModifiedDate", + t: VT_FILETIME + }, + 14: { + n: "PageCount", + t: VT_I4 + }, + 15: { + n: "WordCount", + t: VT_I4 + }, + 16: { + n: "CharCount", + t: VT_I4 + }, + 17: { + n: "Thumbnail", + t: VT_CF + }, + 18: { + n: "Application", + t: VT_STRING + }, + 19: { + n: "DocSecurity", + t: VT_I4 + }, + 255: {}, + 2147483648: { + n: "Locale", + t: VT_UI4 + }, + 2147483651: { + n: "Behavior", + t: VT_UI4 + }, + 1919054434: {} + }; + CountryEnum = { + 1: "US", + 2: "CA", + 3: "", + 7: "RU", + 20: "EG", + 30: "GR", + 31: "NL", + 32: "BE", + 33: "FR", + 34: "ES", + 36: "HU", + 39: "IT", + 41: "CH", + 43: "AT", + 44: "GB", + 45: "DK", + 46: "SE", + 47: "NO", + 48: "PL", + 49: "DE", + 52: "MX", + 55: "BR", + 61: "AU", + 64: "NZ", + 66: "TH", + 81: "JP", + 82: "KR", + 84: "VN", + 86: "CN", + 90: "TR", + 105: "JS", + 213: "DZ", + 216: "MA", + 218: "LY", + 351: "PT", + 354: "IS", + 358: "FI", + 420: "CZ", + 886: "TW", + 961: "LB", + 962: "JO", + 963: "SY", + 964: "IQ", + 965: "KW", + 966: "SA", + 971: "AE", + 972: "IL", + 974: "QA", + 981: "IR", + 65535: "US" + }; + XLSFillPattern = [ + null, + "solid", + "mediumGray", + "darkGray", + "lightGray", + "darkHorizontal", + "darkVertical", + "darkDown", + "darkUp", + "darkGrid", + "darkTrellis", + "lightHorizontal", + "lightVertical", + "lightDown", + "lightUp", + "lightGrid", + "lightTrellis", + "gray125", + "gray0625" + ]; + _XLSIcv = /* @__PURE__ */ rgbify([ + 0, + 16777215, + 16711680, + 65280, + 255, + 16776960, + 16711935, + 65535, + 0, + 16777215, + 16711680, + 65280, + 255, + 16776960, + 16711935, + 65535, + 8388608, + 32768, + 128, + 8421376, + 8388736, + 32896, + 12632256, + 8421504, + 10066431, + 10040166, + 16777164, + 13434879, + 6684774, + 16744576, + 26316, + 13421823, + 128, + 16711935, + 16776960, + 65535, + 8388736, + 8388608, + 32896, + 255, + 52479, + 13434879, + 13434828, + 16777113, + 10079487, + 16751052, + 13408767, + 16764057, + 3368703, + 3394764, + 10079232, + 16763904, + 16750848, + 16737792, + 6710937, + 9868950, + 13158, + 3381606, + 13056, + 3355392, + 10040064, + 10040166, + 3355545, + 3355443, + 0, + 16777215, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]); + XLSIcv = /* @__PURE__ */ dup(_XLSIcv); + BErr = { + 0: "#NULL!", + 7: "#DIV/0!", + 15: "#VALUE!", + 23: "#REF!", + 29: "#NAME?", + 36: "#NUM!", + 42: "#N/A", + 43: "#GETTING_DATA", + 255: "#WTF?" + }; + RBErr = { + "#NULL!": 0, + "#DIV/0!": 7, + "#VALUE!": 15, + "#REF!": 23, + "#NAME?": 29, + "#NUM!": 36, + "#N/A": 42, + "#GETTING_DATA": 43, + "#WTF?": 255 + }; + XLSLblBuiltIn = [ + "_xlnm.Consolidate_Area", + "_xlnm.Auto_Open", + "_xlnm.Auto_Close", + "_xlnm.Extract", + "_xlnm.Database", + "_xlnm.Criteria", + "_xlnm.Print_Area", + "_xlnm.Print_Titles", + "_xlnm.Recorder", + "_xlnm.Data_Form", + "_xlnm.Auto_Activate", + "_xlnm.Auto_Deactivate", + "_xlnm.Sheet_Title", + "_xlnm._FilterDatabase" + ]; + ct2type = { + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": "workbooks", + "application/vnd.ms-excel.sheet.macroEnabled.main+xml": "workbooks", + "application/vnd.ms-excel.sheet.binary.macroEnabled.main": "workbooks", + "application/vnd.ms-excel.addin.macroEnabled.main+xml": "workbooks", + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": "workbooks", + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": "sheets", + "application/vnd.ms-excel.worksheet": "sheets", + "application/vnd.ms-excel.binIndexWs": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": "charts", + "application/vnd.ms-excel.chartsheet": "charts", + "application/vnd.ms-excel.macrosheet+xml": "macros", + "application/vnd.ms-excel.macrosheet": "macros", + "application/vnd.ms-excel.intlmacrosheet": "TODO", + "application/vnd.ms-excel.binIndexMs": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": "dialogs", + "application/vnd.ms-excel.dialogsheet": "dialogs", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml": "strs", + "application/vnd.ms-excel.sharedStrings": "strs", + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": "styles", + "application/vnd.ms-excel.styles": "styles", + "application/vnd.openxmlformats-package.core-properties+xml": "coreprops", + "application/vnd.openxmlformats-officedocument.custom-properties+xml": "custprops", + "application/vnd.openxmlformats-officedocument.extended-properties+xml": "extprops", + "application/vnd.openxmlformats-officedocument.customXmlProperties+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": "comments", + "application/vnd.ms-excel.comments": "comments", + "application/vnd.ms-excel.threadedcomments+xml": "threadedcomments", + "application/vnd.ms-excel.person+xml": "people", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml": "metadata", + "application/vnd.ms-excel.sheetMetadata": "metadata", + "application/vnd.ms-excel.pivotTable": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": "TODO", + "application/vnd.ms-office.chartcolorstyle+xml": "TODO", + "application/vnd.ms-office.chartstyle+xml": "TODO", + "application/vnd.ms-office.chartex+xml": "TODO", + "application/vnd.ms-excel.calcChain": "calcchains", + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml": "calcchains", + "application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings": "TODO", + "application/vnd.ms-office.activeX": "TODO", + "application/vnd.ms-office.activeX+xml": "TODO", + "application/vnd.ms-excel.attachedToolbars": "TODO", + "application/vnd.ms-excel.connections": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": "TODO", + "application/vnd.ms-excel.externalLink": "links", + "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml": "links", + "application/vnd.ms-excel.pivotCacheDefinition": "TODO", + "application/vnd.ms-excel.pivotCacheRecords": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml": "TODO", + "application/vnd.ms-excel.queryTable": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml": "TODO", + "application/vnd.ms-excel.userNames": "TODO", + "application/vnd.ms-excel.revisionHeaders": "TODO", + "application/vnd.ms-excel.revisionLog": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml": "TODO", + "application/vnd.ms-excel.tableSingleCells": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml": "TODO", + "application/vnd.ms-excel.slicer": "TODO", + "application/vnd.ms-excel.slicerCache": "TODO", + "application/vnd.ms-excel.slicer+xml": "TODO", + "application/vnd.ms-excel.slicerCache+xml": "TODO", + "application/vnd.ms-excel.wsSortMap": "TODO", + "application/vnd.ms-excel.table": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": "TODO", + "application/vnd.openxmlformats-officedocument.theme+xml": "themes", + "application/vnd.openxmlformats-officedocument.themeOverride+xml": "TODO", + "application/vnd.ms-excel.Timeline+xml": "TODO", + "application/vnd.ms-excel.TimelineCache+xml": "TODO", + "application/vnd.ms-office.vbaProject": "vba", + "application/vnd.ms-office.vbaProjectSignature": "TODO", + "application/vnd.ms-office.volatileDependencies": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml": "TODO", + "application/vnd.ms-excel.controlproperties+xml": "TODO", + "application/vnd.openxmlformats-officedocument.model+data": "TODO", + "application/vnd.ms-excel.Survey+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawing+xml": "drawings", + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml": "TODO", + "application/vnd.openxmlformats-officedocument.vmlDrawing": "TODO", + "application/vnd.openxmlformats-package.relationships+xml": "rels", + "application/vnd.openxmlformats-officedocument.oleObject": "TODO", + "image/png": "TODO", + "sheet": "js" + }; + CT_LIST = { + workbooks: { + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", + xlsm: "application/vnd.ms-excel.sheet.macroEnabled.main+xml", + xlsb: "application/vnd.ms-excel.sheet.binary.macroEnabled.main", + xlam: "application/vnd.ms-excel.addin.macroEnabled.main+xml", + xltx: "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml" + }, + strs: { + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml", + xlsb: "application/vnd.ms-excel.sharedStrings" + }, + comments: { + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml", + xlsb: "application/vnd.ms-excel.comments" + }, + sheets: { + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml", + xlsb: "application/vnd.ms-excel.worksheet" + }, + charts: { + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml", + xlsb: "application/vnd.ms-excel.chartsheet" + }, + dialogs: { + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml", + xlsb: "application/vnd.ms-excel.dialogsheet" + }, + macros: { + xlsx: "application/vnd.ms-excel.macrosheet+xml", + xlsb: "application/vnd.ms-excel.macrosheet" + }, + metadata: { + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml", + xlsb: "application/vnd.ms-excel.sheetMetadata" + }, + styles: { + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml", + xlsb: "application/vnd.ms-excel.styles" + } + }; + RELS = { + WB: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", + SHEET: "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument", + HLINK: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink", + VML: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing", + XPATH: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath", + XMISS: "http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing", + XLINK: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink", + CXML: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml", + CXMLP: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps", + CMNT: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments", + CORE_PROPS: "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties", + EXT_PROPS: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties", + CUST_PROPS: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties", + SST: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings", + STY: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles", + THEME: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme", + CHART: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart", + CHARTEX: "http://schemas.microsoft.com/office/2014/relationships/chartEx", + CS: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet", + WS: ["http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet", "http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet"], + DS: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet", + MS: "http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet", + IMG: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + DRAW: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing", + XLMETA: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata", + TCMNT: "http://schemas.microsoft.com/office/2017/10/relationships/threadedComment", + PEOPLE: "http://schemas.microsoft.com/office/2017/10/relationships/person", + CONN: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/connections", + VBA: "http://schemas.microsoft.com/office/2006/relationships/vbaProject" + }; + CT_ODS = "application/vnd.oasis.opendocument.spreadsheet"; + CORE_PROPS = [ + ["cp:category", "Category"], + ["cp:contentStatus", "ContentStatus"], + ["cp:keywords", "Keywords"], + ["cp:lastModifiedBy", "LastAuthor"], + ["cp:lastPrinted", "LastPrinted"], + ["cp:revision", "RevNumber"], + ["cp:version", "Version"], + ["dc:creator", "Author"], + ["dc:description", "Comments"], + ["dc:identifier", "Identifier"], + ["dc:language", "Language"], + ["dc:subject", "Subject"], + ["dc:title", "Title"], + [ + "dcterms:created", + "CreatedDate", + "date" + ], + [ + "dcterms:modified", + "ModifiedDate", + "date" + ] + ]; + EXT_PROPS = [ + [ + "Application", + "Application", + "string" + ], + [ + "AppVersion", + "AppVersion", + "string" + ], + [ + "Company", + "Company", + "string" + ], + [ + "DocSecurity", + "DocSecurity", + "string" + ], + [ + "Manager", + "Manager", + "string" + ], + [ + "HyperlinksChanged", + "HyperlinksChanged", + "bool" + ], + [ + "SharedDoc", + "SharedDoc", + "bool" + ], + [ + "LinksUpToDate", + "LinksUpToDate", + "bool" + ], + [ + "ScaleCrop", + "ScaleCrop", + "bool" + ], + [ + "HeadingPairs", + "HeadingPairs", + "raw" + ], + [ + "TitlesOfParts", + "TitlesOfParts", + "raw" + ] + ]; + PseudoPropsPairs = [ + "Worksheets", + "SheetNames", + "NamedRanges", + "DefinedNames", + "Chartsheets", + "ChartNames" + ]; + custregex = /<[^<>]+>[^<]*/g; + XLMLDocPropsMap = { + Title: "Title", + Subject: "Subject", + Author: "Author", + Keywords: "Keywords", + Comments: "Description", + LastAuthor: "LastAuthor", + RevNumber: "Revision", + Application: "AppName", + LastPrinted: "LastPrinted", + CreatedDate: "Created", + ModifiedDate: "LastSaved", + Category: "Category", + Manager: "Manager", + Company: "Company", + AppVersion: "Version", + ContentStatus: "ContentStatus", + Identifier: "Identifier", + Language: "Language" + }; + ; + XLSPSSkip = [ + "CodePage", + "Thumbnail", + "_PID_LINKBASE", + "_PID_HLINKS", + "SystemIdentifier", + "FMTID" + ]; + parse_Ref = parse_RefU; + FtTab = { + 0: parse_FtSkip, + 4: parse_FtSkip, + 5: parse_FtSkip, + 6: parse_FtSkip, + 7: parse_FtCf, + 8: parse_FtSkip, + 9: parse_FtSkip, + 10: parse_FtSkip, + 11: parse_FtSkip, + 12: parse_FtSkip, + 13: parse_FtNts, + 14: parse_FtSkip, + 15: parse_FtSkip, + 16: parse_FtSkip, + 17: parse_FtSkip, + 18: parse_FtSkip, + 19: parse_FtSkip, + 20: parse_FtSkip, + 21: parse_FtCmo + }; + parse_BIFF2Format = parse_XLUnicodeString2; + write_BIFF4XF = write_BIFF3XF; + parse_XLHeaderFooter = parse_OptXLUnicodeString; + parse_BIFF5OT = { 8: function(blob, length) { + var tgt = blob.l + length; + blob.l += 10; + var cf = blob.read_shift(2); + blob.l += 4; + blob.l += 2; + blob.l += 2; + blob.l += 2; + blob.l += 4; + var cchName = blob.read_shift(1); + blob.l += cchName; + blob.l = tgt; + return { fmt: cf }; + } }; + parse_Blank = parse_XLSCell; + parse_Scl = parseuint16a; + parse_String = parse_XLUnicodeString; + DBF_SUPPORTED_VERSIONS = [ + 2, + 3, + 48, + 49, + 131, + 139, + 140, + 245 + ]; + DBF = /* @__PURE__ */ (function() { + var dbf_codepage_map = { + 1: 437, + 2: 850, + 3: 1252, + 4: 1e4, + 100: 852, + 101: 866, + 102: 865, + 103: 861, + 104: 895, + 105: 620, + 106: 737, + 107: 857, + 120: 950, + 121: 949, + 122: 936, + 123: 932, + 124: 874, + 125: 1255, + 126: 1256, + 150: 10007, + 151: 10029, + 152: 10006, + 200: 1250, + 201: 1251, + 202: 1254, + 203: 1253, + 0: 20127, + 8: 865, + 9: 437, + 10: 850, + 11: 437, + 13: 437, + 14: 850, + 15: 437, + 16: 850, + 17: 437, + 18: 850, + 19: 932, + 20: 850, + 21: 437, + 22: 850, + 23: 865, + 24: 437, + 25: 437, + 26: 850, + 27: 437, + 28: 863, + 29: 850, + 31: 852, + 34: 852, + 35: 852, + 36: 860, + 37: 850, + 38: 866, + 55: 850, + 64: 852, + 77: 936, + 78: 949, + 79: 950, + 80: 874, + 87: 1252, + 88: 1252, + 89: 1252, + 108: 863, + 134: 737, + 135: 852, + 136: 857, + 204: 1257, + 255: 16969 + }; + var dbf_reverse_map = evert({ + 1: 437, + 2: 850, + 3: 1252, + 4: 1e4, + 100: 852, + 101: 866, + 102: 865, + 103: 861, + 104: 895, + 105: 620, + 106: 737, + 107: 857, + 120: 950, + 121: 949, + 122: 936, + 123: 932, + 124: 874, + 125: 1255, + 126: 1256, + 150: 10007, + 151: 10029, + 152: 10006, + 200: 1250, + 201: 1251, + 202: 1254, + 203: 1253, + 0: 20127 + }); + function dbf_to_aoa(buf, opts) { + var out = []; + var d$5 = new_raw_buf(1); + switch (opts.type) { + case "base64": + d$5 = s2a(Base64_decode(buf)); + break; + case "binary": + d$5 = s2a(buf); + break; + case "buffer": + case "array": + d$5 = buf; + break; + } + prep_blob(d$5, 0); + var ft = d$5.read_shift(1); + var memo = !!(ft & 136); + var vfp = false, l7 = false; + switch (ft) { + case 2: break; + case 3: break; + case 48: + vfp = true; + memo = true; + break; + case 49: + vfp = true; + memo = true; + break; + case 131: break; + case 139: break; + case 140: + l7 = true; + break; + case 245: break; + default: throw new Error("DBF Unsupported Version: " + ft.toString(16)); + } + var nrow = 0, fpos = 521; + if (ft == 2) nrow = d$5.read_shift(2); + d$5.l += 3; + if (ft != 2) nrow = d$5.read_shift(4); + if (nrow > 1048576) nrow = 1e6; + if (ft != 2) fpos = d$5.read_shift(2); + var rlen = d$5.read_shift(2); + var current_cp = opts.codepage || 1252; + if (ft != 2) { + d$5.l += 16; + d$5.read_shift(1); + if (d$5[d$5.l] !== 0) current_cp = dbf_codepage_map[d$5[d$5.l]]; + d$5.l += 1; + d$5.l += 2; + } + if (l7) d$5.l += 36; + var fields = [], field = {}; + var hend = Math.min(d$5.length, ft == 2 ? 521 : fpos - 10 - (vfp ? 264 : 0)); + var ww = l7 ? 32 : 11; + while (d$5.l < hend && d$5[d$5.l] != 13) { + field = {}; + field.name = (typeof $cptable !== "undefined" ? $cptable.utils.decode(current_cp, d$5.slice(d$5.l, d$5.l + ww)) : a2s(d$5.slice(d$5.l, d$5.l + ww))).replace(/[\u0000\r\n][\S\s]*$/g, ""); + d$5.l += ww; + field.type = String.fromCharCode(d$5.read_shift(1)); + if (ft != 2 && !l7) field.offset = d$5.read_shift(4); + field.len = d$5.read_shift(1); + if (ft == 2) field.offset = d$5.read_shift(2); + field.dec = d$5.read_shift(1); + if (field.name.length) fields.push(field); + if (ft != 2) d$5.l += l7 ? 13 : 14; + switch (field.type) { + case "B": + if ((!vfp || field.len != 8) && opts.WTF) console.log("Skipping " + field.name + ":" + field.type); + break; + case "G": + case "P": + if (opts.WTF) console.log("Skipping " + field.name + ":" + field.type); + break; + case "+": + case "0": + case "@": + case "C": + case "D": + case "F": + case "I": + case "L": + case "M": + case "N": + case "O": + case "T": + case "Y": break; + default: throw new Error("Unknown Field Type: " + field.type); + } + } + if (d$5[d$5.l] !== 13) d$5.l = fpos - 1; + if (d$5.read_shift(1) !== 13) throw new Error("DBF Terminator not found " + d$5.l + " " + d$5[d$5.l]); + d$5.l = fpos; + var R$1 = 0, C$2 = 0; + out[0] = []; + for (C$2 = 0; C$2 != fields.length; ++C$2) out[0][C$2] = fields[C$2].name; + while (nrow-- > 0) { + if (d$5[d$5.l] === 42) { + d$5.l += rlen; + continue; + } + ++d$5.l; + out[++R$1] = []; + C$2 = 0; + for (C$2 = 0; C$2 != fields.length; ++C$2) { + var dd = d$5.slice(d$5.l, d$5.l + fields[C$2].len); + d$5.l += fields[C$2].len; + prep_blob(dd, 0); + var s$5 = typeof $cptable !== "undefined" ? $cptable.utils.decode(current_cp, dd) : a2s(dd); + switch (fields[C$2].type) { + case "C": + if (s$5.trim().length) out[R$1][C$2] = s$5.replace(/([^\s])\s+$/, "$1"); + break; + case "D": + if (s$5.length === 8) { + out[R$1][C$2] = new Date(Date.UTC(+s$5.slice(0, 4), +s$5.slice(4, 6) - 1, +s$5.slice(6, 8), 0, 0, 0, 0)); + if (!(opts && opts.UTC)) { + out[R$1][C$2] = utc_to_local(out[R$1][C$2]); + } + } else out[R$1][C$2] = s$5; + break; + case "F": + out[R$1][C$2] = parseFloat(s$5.trim()); + break; + case "+": + case "I": + out[R$1][C$2] = l7 ? dd.read_shift(-4, "i") ^ 2147483648 : dd.read_shift(4, "i"); + break; + case "L": + switch (s$5.trim().toUpperCase()) { + case "Y": + case "T": + out[R$1][C$2] = true; + break; + case "N": + case "F": + out[R$1][C$2] = false; + break; + case "": + case "\0": + case "?": break; + default: throw new Error("DBF Unrecognized L:|" + s$5 + "|"); + } + break; + case "M": + if (!memo) throw new Error("DBF Unexpected MEMO for type " + ft.toString(16)); + out[R$1][C$2] = "##MEMO##" + (l7 ? parseInt(s$5.trim(), 10) : dd.read_shift(4)); + break; + case "N": + s$5 = s$5.replace(/\u0000/g, "").trim(); + if (s$5 && s$5 != ".") out[R$1][C$2] = +s$5 || 0; + break; + case "@": + out[R$1][C$2] = new Date(dd.read_shift(-8, "f") - 621356832e5); + break; + case "T": + { + var hi = dd.read_shift(4), lo = dd.read_shift(4); + if (hi == 0 && lo == 0) break; + out[R$1][C$2] = new Date((hi - 2440588) * 864e5 + lo); + if (!(opts && opts.UTC)) out[R$1][C$2] = utc_to_local(out[R$1][C$2]); + } + break; + case "Y": + out[R$1][C$2] = dd.read_shift(4, "i") / 1e4 + dd.read_shift(4, "i") / 1e4 * Math.pow(2, 32); + break; + case "O": + out[R$1][C$2] = -dd.read_shift(-8, "f"); + break; + case "B": if (vfp && fields[C$2].len == 8) { + out[R$1][C$2] = dd.read_shift(8, "f"); + break; + } + case "G": + case "P": + dd.l += fields[C$2].len; + break; + case "0": if (fields[C$2].name === "_NullFlags") break; + default: throw new Error("DBF Unsupported data type " + fields[C$2].type); + } + } + } + if (ft != 2) { + if (d$5.l < d$5.length && d$5[d$5.l++] != 26) throw new Error("DBF EOF Marker missing " + (d$5.l - 1) + " of " + d$5.length + " " + d$5[d$5.l - 1].toString(16)); + } + if (opts && opts.sheetRows) out = out.slice(0, opts.sheetRows); + opts.DBF = fields; + return out; + } + function dbf_to_sheet(buf, opts) { + var o$10 = opts || {}; + if (!o$10.dateNF) o$10.dateNF = "yyyymmdd"; + var ws = aoa_to_sheet(dbf_to_aoa(buf, o$10), o$10); + ws["!cols"] = o$10.DBF.map(function(field) { + return { + wch: field.len, + DBF: field + }; + }); + delete o$10.DBF; + return ws; + } + function dbf_to_workbook(buf, opts) { + try { + var o$10 = sheet_to_workbook(dbf_to_sheet(buf, opts), opts); + o$10.bookType = "dbf"; + return o$10; + } catch (e$10) { + if (opts && opts.WTF) throw e$10; + } + return { + SheetNames: [], + Sheets: {} + }; + } + var _RLEN = { + "B": 8, + "C": 250, + "L": 1, + "D": 8, + "?": 0, + "": 0 + }; + function sheet_to_dbf(ws, opts) { + if (!ws["!ref"]) throw new Error("Cannot export empty sheet to DBF"); + var o$10 = opts || {}; + var old_cp = current_codepage; + if (+o$10.codepage >= 0) set_cp(+o$10.codepage); + if (o$10.type == "string") throw new Error("Cannot write DBF to JS string"); + var ba = buf_array(); + var aoa = sheet_to_json(ws, { + header: 1, + raw: true, + cellDates: true + }); + var headers = aoa[0], data = aoa.slice(1), cols = ws["!cols"] || []; + var i$7 = 0, j$2 = 0, hcnt = 0, rlen = 1; + for (i$7 = 0; i$7 < headers.length; ++i$7) { + if (((cols[i$7] || {}).DBF || {}).name) { + headers[i$7] = cols[i$7].DBF.name; + ++hcnt; + continue; + } + if (headers[i$7] == null) continue; + ++hcnt; + if (typeof headers[i$7] === "number") headers[i$7] = headers[i$7].toString(10); + if (typeof headers[i$7] !== "string") throw new Error("DBF Invalid column name " + headers[i$7] + " |" + typeof headers[i$7] + "|"); + if (headers.indexOf(headers[i$7]) !== i$7) { + for (j$2 = 0; j$2 < 1024; ++j$2) if (headers.indexOf(headers[i$7] + "_" + j$2) == -1) { + headers[i$7] += "_" + j$2; + break; + } + } + } + var range = safe_decode_range(ws["!ref"]); + var coltypes = []; + var colwidths = []; + var coldecimals = []; + for (i$7 = 0; i$7 <= range.e.c - range.s.c; ++i$7) { + var guess = "", _guess = "", maxlen = 0; + var col = []; + for (j$2 = 0; j$2 < data.length; ++j$2) { + if (data[j$2][i$7] != null) col.push(data[j$2][i$7]); + } + if (col.length == 0 || headers[i$7] == null) { + coltypes[i$7] = "?"; + continue; + } + for (j$2 = 0; j$2 < col.length; ++j$2) { + switch (typeof col[j$2]) { + case "number": + _guess = "B"; + break; + case "string": + _guess = "C"; + break; + case "boolean": + _guess = "L"; + break; + case "object": + _guess = col[j$2] instanceof Date ? "D" : "C"; + break; + default: _guess = "C"; + } + maxlen = Math.max(maxlen, (typeof $cptable !== "undefined" && typeof col[j$2] == "string" ? $cptable.utils.encode(current_ansi, col[j$2]) : String(col[j$2])).length); + guess = guess && guess != _guess ? "C" : _guess; + } + if (maxlen > 250) maxlen = 250; + _guess = ((cols[i$7] || {}).DBF || {}).type; + if (_guess == "C") { + if (cols[i$7].DBF.len > maxlen) maxlen = cols[i$7].DBF.len; + } + if (guess == "B" && _guess == "N") { + guess = "N"; + coldecimals[i$7] = cols[i$7].DBF.dec; + maxlen = cols[i$7].DBF.len; + } + colwidths[i$7] = guess == "C" || _guess == "N" ? maxlen : _RLEN[guess] || 0; + rlen += colwidths[i$7]; + coltypes[i$7] = guess; + } + var h$5 = ba.next(32); + h$5.write_shift(4, 318902576); + h$5.write_shift(4, data.length); + h$5.write_shift(2, 296 + 32 * hcnt); + h$5.write_shift(2, rlen); + for (i$7 = 0; i$7 < 4; ++i$7) h$5.write_shift(4, 0); + var cp = +dbf_reverse_map[current_codepage] || 3; + h$5.write_shift(4, 0 | cp << 8); + if (dbf_codepage_map[cp] != +o$10.codepage) { + if (o$10.codepage) console.error("DBF Unsupported codepage " + current_codepage + ", using 1252"); + current_codepage = 1252; + } + for (i$7 = 0, j$2 = 0; i$7 < headers.length; ++i$7) { + if (headers[i$7] == null) continue; + var hf = ba.next(32); + var _f = (headers[i$7].slice(-10) + "\0\0\0\0\0\0\0\0\0\0\0").slice(0, 11); + hf.write_shift(1, _f, "sbcs"); + hf.write_shift(1, coltypes[i$7] == "?" ? "C" : coltypes[i$7], "sbcs"); + hf.write_shift(4, j$2); + hf.write_shift(1, colwidths[i$7] || _RLEN[coltypes[i$7]] || 0); + hf.write_shift(1, coldecimals[i$7] || 0); + hf.write_shift(1, 2); + hf.write_shift(4, 0); + hf.write_shift(1, 0); + hf.write_shift(4, 0); + hf.write_shift(4, 0); + j$2 += colwidths[i$7] || _RLEN[coltypes[i$7]] || 0; + } + var hb = ba.next(264); + hb.write_shift(4, 13); + for (i$7 = 0; i$7 < 65; ++i$7) hb.write_shift(4, 0); + for (i$7 = 0; i$7 < data.length; ++i$7) { + var rout = ba.next(rlen); + rout.write_shift(1, 0); + for (j$2 = 0; j$2 < headers.length; ++j$2) { + if (headers[j$2] == null) continue; + switch (coltypes[j$2]) { + case "L": + rout.write_shift(1, data[i$7][j$2] == null ? 63 : data[i$7][j$2] ? 84 : 70); + break; + case "B": + rout.write_shift(8, data[i$7][j$2] || 0, "f"); + break; + case "N": + var _n = "0"; + if (typeof data[i$7][j$2] == "number") _n = data[i$7][j$2].toFixed(coldecimals[j$2] || 0); + if (_n.length > colwidths[j$2]) _n = _n.slice(0, colwidths[j$2]); + for (hcnt = 0; hcnt < colwidths[j$2] - _n.length; ++hcnt) rout.write_shift(1, 32); + rout.write_shift(1, _n, "sbcs"); + break; + case "D": + if (!data[i$7][j$2]) rout.write_shift(8, "00000000", "sbcs"); + else { + rout.write_shift(4, ("0000" + data[i$7][j$2].getFullYear()).slice(-4), "sbcs"); + rout.write_shift(2, ("00" + (data[i$7][j$2].getMonth() + 1)).slice(-2), "sbcs"); + rout.write_shift(2, ("00" + data[i$7][j$2].getDate()).slice(-2), "sbcs"); + } + break; + case "C": + var _l = rout.l; + var _s = String(data[i$7][j$2] != null ? data[i$7][j$2] : "").slice(0, colwidths[j$2]); + rout.write_shift(1, _s, "cpstr"); + _l += colwidths[j$2] - rout.l; + for (hcnt = 0; hcnt < _l; ++hcnt) rout.write_shift(1, 32); + break; + } + } + } + current_codepage = old_cp; + ba.next(1).write_shift(1, 26); + return ba.end(); + } + return { + to_workbook: dbf_to_workbook, + to_sheet: dbf_to_sheet, + from_sheet: sheet_to_dbf + }; + })(); + SYLK = /* @__PURE__ */ (function() { + var sylk_escapes = { + AA: "À", + BA: "Á", + CA: "Â", + DA: 195, + HA: "Ä", + JA: 197, + AE: "È", + BE: "É", + CE: "Ê", + HE: "Ë", + AI: "Ì", + BI: "Í", + CI: "Î", + HI: "Ï", + AO: "Ò", + BO: "Ó", + CO: "Ô", + DO: 213, + HO: "Ö", + AU: "Ù", + BU: "Ú", + CU: "Û", + HU: "Ü", + Aa: "à", + Ba: "á", + Ca: "â", + Da: 227, + Ha: "ä", + Ja: 229, + Ae: "è", + Be: "é", + Ce: "ê", + He: "ë", + Ai: "ì", + Bi: "í", + Ci: "î", + Hi: "ï", + Ao: "ò", + Bo: "ó", + Co: "ô", + Do: 245, + Ho: "ö", + Au: "ù", + Bu: "ú", + Cu: "û", + Hu: "ü", + KC: "Ç", + Kc: "ç", + q: "æ", + z: "œ", + a: "Æ", + j: "Œ", + DN: 209, + Dn: 241, + Hy: 255, + S: 169, + c: 170, + R: 174, + "B ": 180, + 0: 176, + 1: 177, + 2: 178, + 3: 179, + 5: 181, + 6: 182, + 7: 183, + Q: 185, + k: 186, + b: 208, + i: 216, + l: 222, + s: 240, + y: 248, + "!": 161, + "\"": 162, + "#": 163, + "(": 164, + "%": 165, + "'": 167, + "H ": 168, + "+": 171, + ";": 187, + "<": 188, + "=": 189, + ">": 190, + "?": 191, + "{": 223 + }; + var sylk_char_regex = new RegExp("\x1BN(" + keys(sylk_escapes).join("|").replace(/\|\|\|/, "|\\||").replace(/([?()+])/g, "\\$1").replace("{", "\\{") + "|\\|)", "gm"); + try { + sylk_char_regex = new RegExp("\x1BN(" + keys(sylk_escapes).join("|").replace(/\|\|\|/, "|\\||").replace(/([?()+])/g, "\\$1") + "|\\|)", "gm"); + } catch (e$10) {} + var sylk_char_fn = function(_$2, $1) { + var o$10 = sylk_escapes[$1]; + return typeof o$10 == "number" ? _getansi(o$10) : o$10; + }; + var decode_sylk_char = function($$, $1, $2) { + var newcc = $1.charCodeAt(0) - 32 << 4 | $2.charCodeAt(0) - 48; + return newcc == 59 ? $$ : _getansi(newcc); + }; + sylk_escapes["|"] = 254; + var encode_sylk_str = function($$) { + return $$.replace(/\n/g, "\x1B :").replace(/\r/g, "\x1B ="); + }; + function sylk_to_aoa(d$5, opts) { + switch (opts.type) { + case "base64": return sylk_to_aoa_str(Base64_decode(d$5), opts); + case "binary": return sylk_to_aoa_str(d$5, opts); + case "buffer": return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d$5) ? d$5.toString("binary") : a2s(d$5), opts); + case "array": return sylk_to_aoa_str(cc2str(d$5), opts); + } + throw new Error("Unrecognized type " + opts.type); + } + function sylk_to_aoa_str(str, opts) { + var records = str.split(/[\n\r]+/), R$1 = -1, C$2 = -1, ri = 0, rj = 0, arr = []; + var formats = []; + var next_cell_format = null; + var sht = {}, rowinfo = [], colinfo = [], cw = []; + var Mval = 0, j$2; + var wb = { Workbook: { + WBProps: {}, + Names: [] + } }; + if (+opts.codepage >= 0) set_cp(+opts.codepage); + for (; ri !== records.length; ++ri) { + Mval = 0; + var rstr = records[ri].trim().replace(/\x1B([\x20-\x2F])([\x30-\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn); + var record = rstr.replace(/;;/g, "\0").split(";").map(function(x$2) { + return x$2.replace(/\u0000/g, ";"); + }); + var RT = record[0], val$1; + if (rstr.length > 0) switch (RT) { + case "ID": break; + case "E": break; + case "B": break; + case "O": + for (rj = 1; rj < record.length; ++rj) switch (record[rj].charAt(0)) { + case "V": + { + var d1904 = parseInt(record[rj].slice(1), 10); + if (d1904 >= 1 && d1904 <= 4) wb.Workbook.WBProps.date1904 = true; + } + break; + } + break; + case "W": break; + case "P": + switch (record[1].charAt(0)) { + case "P": + formats.push(rstr.slice(3).replace(/;;/g, ";")); + break; + } + break; + case "NN": + { + var nn = { Sheet: 0 }; + for (rj = 1; rj < record.length; ++rj) switch (record[rj].charAt(0)) { + case "N": + nn.Name = record[rj].slice(1); + break; + case "E": + nn.Ref = (opts && opts.sheet || "Sheet1") + "!" + rc_to_a1(record[rj].slice(1)); + break; + } + wb.Workbook.Names.push(nn); + } + break; + case "C": + var C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1, formula = "", cell_t = "z"; + var cmnt = ""; + for (rj = 1; rj < record.length; ++rj) switch (record[rj].charAt(0)) { + case "A": + cmnt = record[rj].slice(1); + break; + case "X": + C$2 = parseInt(record[rj].slice(1), 10) - 1; + C_seen_X = true; + break; + case "Y": + R$1 = parseInt(record[rj].slice(1), 10) - 1; + if (!C_seen_X) C$2 = 0; + for (j$2 = arr.length; j$2 <= R$1; ++j$2) arr[j$2] = []; + break; + case "K": + val$1 = record[rj].slice(1); + if (val$1.charAt(0) === "\"") { + val$1 = val$1.slice(1, val$1.length - 1); + cell_t = "s"; + } else if (val$1 === "TRUE" || val$1 === "FALSE") { + val$1 = val$1 === "TRUE"; + cell_t = "b"; + } else if (val$1.charAt(0) == "#" && RBErr[val$1] != null) { + cell_t = "e"; + val$1 = RBErr[val$1]; + } else if (!isNaN(fuzzynum(val$1))) { + val$1 = fuzzynum(val$1); + cell_t = "n"; + if (next_cell_format !== null && fmt_is_date(next_cell_format) && opts.cellDates) { + val$1 = numdate(wb.Workbook.WBProps.date1904 ? val$1 + 1462 : val$1); + cell_t = typeof val$1 == "number" ? "n" : "d"; + } + } + if (typeof $cptable !== "undefined" && typeof val$1 == "string" && (opts || {}).type != "string" && (opts || {}).codepage) val$1 = $cptable.utils.decode(opts.codepage, val$1); + C_seen_K = true; + break; + case "E": + C_seen_E = true; + formula = rc_to_a1(record[rj].slice(1), { + r: R$1, + c: C$2 + }); + break; + case "S": + C_seen_S = true; + break; + case "G": break; + case "R": + _R = parseInt(record[rj].slice(1), 10) - 1; + break; + case "C": + _C = parseInt(record[rj].slice(1), 10) - 1; + break; + default: if (opts && opts.WTF) throw new Error("SYLK bad record " + rstr); + } + if (C_seen_K) { + if (!arr[R$1][C$2]) arr[R$1][C$2] = { + t: cell_t, + v: val$1 + }; + else { + arr[R$1][C$2].t = cell_t; + arr[R$1][C$2].v = val$1; + } + if (next_cell_format) arr[R$1][C$2].z = next_cell_format; + if (opts.cellText !== false && next_cell_format) arr[R$1][C$2].w = SSF_format(arr[R$1][C$2].z, arr[R$1][C$2].v, { date1904: wb.Workbook.WBProps.date1904 }); + next_cell_format = null; + } + if (C_seen_S) { + if (C_seen_E) throw new Error("SYLK shared formula cannot have own formula"); + var shrbase = _R > -1 && arr[_R][_C]; + if (!shrbase || !shrbase[1]) throw new Error("SYLK shared formula cannot find base"); + formula = shift_formula_str(shrbase[1], { + r: R$1 - _R, + c: C$2 - _C + }); + } + if (formula) { + if (!arr[R$1][C$2]) arr[R$1][C$2] = { + t: "n", + f: formula + }; + else arr[R$1][C$2].f = formula; + } + if (cmnt) { + if (!arr[R$1][C$2]) arr[R$1][C$2] = { t: "z" }; + arr[R$1][C$2].c = [{ + a: "SheetJSYLK", + t: cmnt + }]; + } + break; + case "F": + var F_seen = 0; + for (rj = 1; rj < record.length; ++rj) switch (record[rj].charAt(0)) { + case "X": + C$2 = parseInt(record[rj].slice(1), 10) - 1; + ++F_seen; + break; + case "Y": + R$1 = parseInt(record[rj].slice(1), 10) - 1; + for (j$2 = arr.length; j$2 <= R$1; ++j$2) arr[j$2] = []; + break; + case "M": + Mval = parseInt(record[rj].slice(1), 10) / 20; + break; + case "F": break; + case "G": break; + case "P": + next_cell_format = formats[parseInt(record[rj].slice(1), 10)]; + break; + case "S": break; + case "D": break; + case "N": break; + case "W": + cw = record[rj].slice(1).split(" "); + for (j$2 = parseInt(cw[0], 10); j$2 <= parseInt(cw[1], 10); ++j$2) { + Mval = parseInt(cw[2], 10); + colinfo[j$2 - 1] = Mval === 0 ? { hidden: true } : { wch: Mval }; + } + break; + case "C": + C$2 = parseInt(record[rj].slice(1), 10) - 1; + if (!colinfo[C$2]) colinfo[C$2] = {}; + break; + case "R": + R$1 = parseInt(record[rj].slice(1), 10) - 1; + if (!rowinfo[R$1]) rowinfo[R$1] = {}; + if (Mval > 0) { + rowinfo[R$1].hpt = Mval; + rowinfo[R$1].hpx = pt2px(Mval); + } else if (Mval === 0) rowinfo[R$1].hidden = true; + break; + default: if (opts && opts.WTF) throw new Error("SYLK bad record " + rstr); + } + if (F_seen < 1) next_cell_format = null; + break; + default: if (opts && opts.WTF) throw new Error("SYLK bad record " + rstr); + } + } + if (rowinfo.length > 0) sht["!rows"] = rowinfo; + if (colinfo.length > 0) sht["!cols"] = colinfo; + colinfo.forEach(function(col) { + process_col(col); + }); + if (opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows); + return [ + arr, + sht, + wb + ]; + } + function sylk_to_workbook(d$5, opts) { + var aoasht = sylk_to_aoa(d$5, opts); + var aoa = aoasht[0], ws = aoasht[1], wb = aoasht[2]; + var _opts = dup(opts); + _opts.date1904 = (((wb || {}).Workbook || {}).WBProps || {}).date1904; + var o$10 = aoa_to_sheet(aoa, _opts); + keys(ws).forEach(function(k$2) { + o$10[k$2] = ws[k$2]; + }); + var outwb = sheet_to_workbook(o$10, opts); + keys(wb).forEach(function(k$2) { + outwb[k$2] = wb[k$2]; + }); + outwb.bookType = "sylk"; + return outwb; + } + function write_ws_cell_sylk(cell, ws, R$1, C$2, opts, date1904) { + var o$10 = "C;Y" + (R$1 + 1) + ";X" + (C$2 + 1) + ";K"; + switch (cell.t) { + case "n": + o$10 += isFinite(cell.v) ? cell.v || 0 : BErr[isNaN(cell.v) ? 36 : 7]; + if (cell.f && !cell.F) o$10 += ";E" + a1_to_rc(cell.f, { + r: R$1, + c: C$2 + }); + break; + case "b": + o$10 += cell.v ? "TRUE" : "FALSE"; + break; + case "e": + o$10 += cell.w || BErr[cell.v] || cell.v; + break; + case "d": + o$10 += datenum(parseDate(cell.v, date1904), date1904); + break; + case "s": + o$10 += "\"" + (cell.v == null ? "" : String(cell.v)).replace(/"/g, "").replace(/;/g, ";;") + "\""; + break; + } + return o$10; + } + function write_ws_cmnt_sylk(cmnt, R$1, C$2) { + var o$10 = "C;Y" + (R$1 + 1) + ";X" + (C$2 + 1) + ";A"; + o$10 += encode_sylk_str(cmnt.map(function(c$7) { + return c$7.t; + }).join("")); + return o$10; + } + function write_ws_cols_sylk(out, cols) { + cols.forEach(function(col, i$7) { + var rec = "F;W" + (i$7 + 1) + " " + (i$7 + 1) + " "; + if (col.hidden) rec += "0"; + else { + if (typeof col.width == "number" && !col.wpx) col.wpx = width2px(col.width); + if (typeof col.wpx == "number" && !col.wch) col.wch = px2char(col.wpx); + if (typeof col.wch == "number") rec += Math.round(col.wch); + } + if (rec.charAt(rec.length - 1) != " ") out.push(rec); + }); + } + function write_ws_rows_sylk(out, rows) { + rows.forEach(function(row, i$7) { + var rec = "F;"; + if (row.hidden) rec += "M0;"; + else if (row.hpt) rec += "M" + 20 * row.hpt + ";"; + else if (row.hpx) rec += "M" + 20 * px2pt(row.hpx) + ";"; + if (rec.length > 2) out.push(rec + "R" + (i$7 + 1)); + }); + } + function sheet_to_sylk(ws, opts, wb) { + if (!opts) opts = {}; + opts._formats = ["General"]; + var preamble = ["ID;PSheetJS;N;E"], o$10 = []; + var r$10 = safe_decode_range(ws["!ref"] || "A1"), cell; + var dense = ws["!data"] != null; + var RS = "\r\n"; + var d1904 = (((wb || {}).Workbook || {}).WBProps || {}).date1904; + var _lastfmt = "General"; + preamble.push("P;PGeneral"); + var R$1 = r$10.s.r, C$2 = r$10.s.c, p$3 = []; + if (ws["!ref"]) for (R$1 = r$10.s.r; R$1 <= r$10.e.r; ++R$1) { + if (dense && !ws["!data"][R$1]) continue; + p$3 = []; + for (C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) { + cell = dense ? ws["!data"][R$1][C$2] : ws[encode_col(C$2) + encode_row(R$1)]; + if (!cell || !cell.c) continue; + p$3.push(write_ws_cmnt_sylk(cell.c, R$1, C$2)); + } + if (p$3.length) o$10.push(p$3.join(RS)); + } + if (ws["!ref"]) for (R$1 = r$10.s.r; R$1 <= r$10.e.r; ++R$1) { + if (dense && !ws["!data"][R$1]) continue; + p$3 = []; + for (C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) { + cell = dense ? ws["!data"][R$1][C$2] : ws[encode_col(C$2) + encode_row(R$1)]; + if (!cell || cell.v == null && (!cell.f || cell.F)) continue; + if ((cell.z || (cell.t == "d" ? table_fmt[14] : "General")) != _lastfmt) { + var ifmt = opts._formats.indexOf(cell.z); + if (ifmt == -1) { + opts._formats.push(cell.z); + ifmt = opts._formats.length - 1; + preamble.push("P;P" + cell.z.replace(/;/g, ";;")); + } + p$3.push("F;P" + ifmt + ";Y" + (R$1 + 1) + ";X" + (C$2 + 1)); + } + p$3.push(write_ws_cell_sylk(cell, ws, R$1, C$2, opts, d1904)); + } + o$10.push(p$3.join(RS)); + } + preamble.push("F;P0;DG0G8;M255"); + if (ws["!cols"]) write_ws_cols_sylk(preamble, ws["!cols"]); + if (ws["!rows"]) write_ws_rows_sylk(preamble, ws["!rows"]); + if (ws["!ref"]) preamble.push("B;Y" + (r$10.e.r - r$10.s.r + 1) + ";X" + (r$10.e.c - r$10.s.c + 1) + ";D" + [ + r$10.s.c, + r$10.s.r, + r$10.e.c, + r$10.e.r + ].join(" ")); + preamble.push("O;L;D;B" + (d1904 ? ";V4" : "") + ";K47;G100 0.001"); + delete opts._formats; + return preamble.join(RS) + RS + o$10.join(RS) + RS + "E" + RS; + } + return { + to_workbook: sylk_to_workbook, + from_sheet: sheet_to_sylk + }; + })(); + DIF = /* @__PURE__ */ (function() { + function dif_to_aoa(d$5, opts) { + switch (opts.type) { + case "base64": return dif_to_aoa_str(Base64_decode(d$5), opts); + case "binary": return dif_to_aoa_str(d$5, opts); + case "buffer": return dif_to_aoa_str(has_buf && Buffer.isBuffer(d$5) ? d$5.toString("binary") : a2s(d$5), opts); + case "array": return dif_to_aoa_str(cc2str(d$5), opts); + } + throw new Error("Unrecognized type " + opts.type); + } + function dif_to_aoa_str(str, opts) { + var records = str.split("\n"), R$1 = -1, C$2 = -1, ri = 0, arr = []; + for (; ri !== records.length; ++ri) { + if (records[ri].trim() === "BOT") { + arr[++R$1] = []; + C$2 = 0; + continue; + } + if (R$1 < 0) continue; + var metadata = records[ri].trim().split(","); + var type = metadata[0], value = metadata[1]; + ++ri; + var data = records[ri] || ""; + while ((data.match(/["]/g) || []).length & 1 && ri < records.length - 1) data += "\n" + records[++ri]; + data = data.trim(); + switch (+type) { + case -1: + if (data === "BOT") { + arr[++R$1] = []; + C$2 = 0; + continue; + } else if (data !== "EOD") throw new Error("Unrecognized DIF special command " + data); + break; + case 0: + if (data === "TRUE") arr[R$1][C$2] = true; + else if (data === "FALSE") arr[R$1][C$2] = false; + else if (!isNaN(fuzzynum(value))) arr[R$1][C$2] = fuzzynum(value); + else if (!isNaN(fuzzydate(value).getDate())) { + arr[R$1][C$2] = parseDate(value); + if (!(opts && opts.UTC)) { + arr[R$1][C$2] = utc_to_local(arr[R$1][C$2]); + } + } else arr[R$1][C$2] = value; + ++C$2; + break; + case 1: + data = data.slice(1, data.length - 1); + data = data.replace(/""/g, "\""); + if (DIF_XL && data && data.match(/^=".*"$/)) data = data.slice(2, -1); + arr[R$1][C$2++] = data !== "" ? data : null; + break; + } + if (data === "EOD") break; + } + if (opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows); + return arr; + } + function dif_to_sheet(str, opts) { + return aoa_to_sheet(dif_to_aoa(str, opts), opts); + } + function dif_to_workbook(str, opts) { + var o$10 = sheet_to_workbook(dif_to_sheet(str, opts), opts); + o$10.bookType = "dif"; + return o$10; + } + function make_value(v$3, s$5) { + return "0," + String(v$3) + "\r\n" + s$5; + } + function make_value_str(s$5) { + return "1,0\r\n\"" + s$5.replace(/"/g, "\"\"") + "\""; + } + function sheet_to_dif(ws) { + var _DIF_XL = DIF_XL; + if (!ws["!ref"]) throw new Error("Cannot export empty sheet to DIF"); + var r$10 = safe_decode_range(ws["!ref"]); + var dense = ws["!data"] != null; + var o$10 = [ + "TABLE\r\n0,1\r\n\"sheetjs\"\r\n", + "VECTORS\r\n0," + (r$10.e.r - r$10.s.r + 1) + "\r\n\"\"\r\n", + "TUPLES\r\n0," + (r$10.e.c - r$10.s.c + 1) + "\r\n\"\"\r\n", + "DATA\r\n0,0\r\n\"\"\r\n" + ]; + for (var R$1 = r$10.s.r; R$1 <= r$10.e.r; ++R$1) { + var row = dense ? ws["!data"][R$1] : []; + var p$3 = "-1,0\r\nBOT\r\n"; + for (var C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) { + var cell = dense ? row && row[C$2] : ws[encode_cell({ + r: R$1, + c: C$2 + })]; + if (cell == null) { + p$3 += "1,0\r\n\"\"\r\n"; + continue; + } + switch (cell.t) { + case "n": + if (_DIF_XL) { + if (cell.w != null) p$3 += "0," + cell.w + "\r\nV"; + else if (cell.v != null) p$3 += make_value(cell.v, "V"); + else if (cell.f != null && !cell.F) p$3 += make_value_str("=" + cell.f); + else p$3 += "1,0\r\n\"\""; + } else { + if (cell.v == null) p$3 += "1,0\r\n\"\""; + else p$3 += make_value(cell.v, "V"); + } + break; + case "b": + p$3 += cell.v ? make_value(1, "TRUE") : make_value(0, "FALSE"); + break; + case "s": + p$3 += make_value_str(!_DIF_XL || isNaN(+cell.v) ? cell.v : "=\"" + cell.v + "\""); + break; + case "d": + if (!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v))); + if (_DIF_XL) p$3 += make_value(cell.w, "V"); + else p$3 += make_value_str(cell.w); + break; + default: p$3 += "1,0\r\n\"\""; + } + p$3 += "\r\n"; + } + o$10.push(p$3); + } + return o$10.join("") + "-1,0\r\nEOD"; + } + return { + to_workbook: dif_to_workbook, + to_sheet: dif_to_sheet, + from_sheet: sheet_to_dif + }; + })(); + ETH = /* @__PURE__ */ (function() { + function decode(s$5) { + return s$5.replace(/\\b/g, "\\").replace(/\\c/g, ":").replace(/\\n/g, "\n"); + } + function encode(s$5) { + return s$5.replace(/\\/g, "\\b").replace(/:/g, "\\c").replace(/\n/g, "\\n"); + } + function eth_to_aoa(str, opts) { + var records = str.split("\n"), R$1 = -1, C$2 = -1, ri = 0, arr = []; + for (; ri !== records.length; ++ri) { + var record = records[ri].trim().split(":"); + if (record[0] !== "cell") continue; + var addr = decode_cell(record[1]); + if (arr.length <= addr.r) { + for (R$1 = arr.length; R$1 <= addr.r; ++R$1) if (!arr[R$1]) arr[R$1] = []; + } + R$1 = addr.r; + C$2 = addr.c; + switch (record[2]) { + case "t": + arr[R$1][C$2] = decode(record[3]); + break; + case "v": + arr[R$1][C$2] = +record[3]; + break; + case "vtf": var _f = record[record.length - 1]; + case "vtc": + switch (record[3]) { + case "nl": + arr[R$1][C$2] = +record[4] ? true : false; + break; + default: + arr[R$1][C$2] = record[record.length - 1].charAt(0) == "#" ? { + t: "e", + v: RBErr[record[record.length - 1]] + } : +record[4]; + break; + } + if (record[2] == "vtf") arr[R$1][C$2] = [arr[R$1][C$2], _f]; + } + } + if (opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows); + return arr; + } + function eth_to_sheet(d$5, opts) { + return aoa_to_sheet(eth_to_aoa(d$5, opts), opts); + } + function eth_to_workbook(d$5, opts) { + return sheet_to_workbook(eth_to_sheet(d$5, opts), opts); + } + var header = [ + "socialcalc:version:1.5", + "MIME-Version: 1.0", + "Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave" + ].join("\n"); + var sep = ["--SocialCalcSpreadsheetControlSave", "Content-type: text/plain; charset=UTF-8"].join("\n") + "\n"; + var meta = ["# SocialCalc Spreadsheet Control Save", "part:sheet"].join("\n"); + var end = "--SocialCalcSpreadsheetControlSave--"; + function sheet_to_eth_data(ws) { + if (!ws || !ws["!ref"]) return ""; + var o$10 = [], oo = [], cell, coord = ""; + var r$10 = decode_range(ws["!ref"]); + var dense = ws["!data"] != null; + for (var R$1 = r$10.s.r; R$1 <= r$10.e.r; ++R$1) { + for (var C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) { + coord = encode_cell({ + r: R$1, + c: C$2 + }); + cell = dense ? (ws["!data"][R$1] || [])[C$2] : ws[coord]; + if (!cell || cell.v == null || cell.t === "z") continue; + oo = [ + "cell", + coord, + "t" + ]; + switch (cell.t) { + case "s": + oo.push(encode(cell.v)); + break; + case "b": + oo[2] = "vt" + (cell.f ? "f" : "c"); + oo[3] = "nl"; + oo[4] = cell.v ? "1" : "0"; + oo[5] = encode(cell.f || (cell.v ? "TRUE" : "FALSE")); + break; + case "d": + var t$6 = datenum(parseDate(cell.v)); + oo[2] = "vtc"; + oo[3] = "nd"; + oo[4] = "" + t$6; + oo[5] = cell.w || SSF_format(cell.z || table_fmt[14], t$6); + break; + case "n": + if (isFinite(cell.v)) { + if (!cell.f) { + oo[2] = "v"; + oo[3] = cell.v; + } else { + oo[2] = "vtf"; + oo[3] = "n"; + oo[4] = cell.v; + oo[5] = encode(cell.f); + } + } else { + oo[2] = "vt" + (cell.f ? "f" : "c"); + oo[3] = "e" + BErr[isNaN(cell.v) ? 36 : 7]; + oo[4] = "0"; + oo[5] = cell.f || oo[3].slice(1); + oo[6] = "e"; + oo[7] = oo[3].slice(1); + } + break; + case "e": continue; + } + o$10.push(oo.join(":")); + } + } + o$10.push("sheet:c:" + (r$10.e.c - r$10.s.c + 1) + ":r:" + (r$10.e.r - r$10.s.r + 1) + ":tvf:1"); + o$10.push("valueformat:1:text-wiki"); + return o$10.join("\n"); + } + function sheet_to_eth(ws) { + return [ + header, + sep, + meta, + sep, + sheet_to_eth_data(ws), + end + ].join("\n"); + } + return { + to_workbook: eth_to_workbook, + to_sheet: eth_to_sheet, + from_sheet: sheet_to_eth + }; + })(); + PRN = /* @__PURE__ */ (function() { + function set_text_arr(data, arr, R$1, C$2, o$10) { + if (o$10.raw) arr[R$1][C$2] = data; + else if (data === "") {} else if (data === "TRUE") arr[R$1][C$2] = true; + else if (data === "FALSE") arr[R$1][C$2] = false; + else if (!isNaN(fuzzynum(data))) arr[R$1][C$2] = fuzzynum(data); + else if (!isNaN(fuzzydate(data).getDate())) arr[R$1][C$2] = parseDate(data); + else if (data.charCodeAt(0) == 35 && RBErr[data] != null) arr[R$1][C$2] = { + t: "e", + v: RBErr[data], + w: data + }; + else arr[R$1][C$2] = data; + } + function prn_to_aoa_str(f$4, opts) { + var o$10 = opts || {}; + var arr = []; + if (!f$4 || f$4.length === 0) return arr; + var lines = f$4.split(/[\r\n]/); + var L$2 = lines.length - 1; + while (L$2 >= 0 && lines[L$2].length === 0) --L$2; + var start = 10, idx = 0; + var R$1 = 0; + for (; R$1 <= L$2; ++R$1) { + idx = lines[R$1].indexOf(" "); + if (idx == -1) idx = lines[R$1].length; + else idx++; + start = Math.max(start, idx); + } + for (R$1 = 0; R$1 <= L$2; ++R$1) { + arr[R$1] = []; + var C$2 = 0; + set_text_arr(lines[R$1].slice(0, start).trim(), arr, R$1, C$2, o$10); + for (C$2 = 1; C$2 <= (lines[R$1].length - start) / 10 + 1; ++C$2) set_text_arr(lines[R$1].slice(start + (C$2 - 1) * 10, start + C$2 * 10).trim(), arr, R$1, C$2, o$10); + } + if (o$10.sheetRows) arr = arr.slice(0, o$10.sheetRows); + return arr; + } + var guess_seps = { + 44: ",", + 9: " ", + 59: ";", + 124: "|" + }; + var guess_sep_weights = { + 44: 3, + 9: 2, + 59: 1, + 124: 0 + }; + function guess_sep(str) { + var cnt = {}, instr = false, end = 0, cc = 0; + for (; end < str.length; ++end) { + if ((cc = str.charCodeAt(end)) == 34) instr = !instr; + else if (!instr && cc in guess_seps) cnt[cc] = (cnt[cc] || 0) + 1; + } + cc = []; + for (end in cnt) if (Object.prototype.hasOwnProperty.call(cnt, end)) { + cc.push([cnt[end], end]); + } + if (!cc.length) { + cnt = guess_sep_weights; + for (end in cnt) if (Object.prototype.hasOwnProperty.call(cnt, end)) { + cc.push([cnt[end], end]); + } + } + cc.sort(function(a$2, b$3) { + return a$2[0] - b$3[0] || guess_sep_weights[a$2[1]] - guess_sep_weights[b$3[1]]; + }); + return guess_seps[cc.pop()[1]] || 44; + } + function dsv_to_sheet_str(str, opts) { + var o$10 = opts || {}; + var sep = ""; + if (DENSE != null && o$10.dense == null) o$10.dense = DENSE; + var ws = {}; + if (o$10.dense) ws["!data"] = []; + var range = { + s: { + c: 0, + r: 0 + }, + e: { + c: 0, + r: 0 + } + }; + if (str.slice(0, 4) == "sep=") { + if (str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10) { + sep = str.charAt(4); + str = str.slice(7); + } else if (str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10) { + sep = str.charAt(4); + str = str.slice(6); + } else sep = guess_sep(str.slice(0, 1024)); + } else if (o$10 && o$10.FS) sep = o$10.FS; + else sep = guess_sep(str.slice(0, 1024)); + var R$1 = 0, C$2 = 0, v$3 = 0; + var start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc = 0, startcc = str.charCodeAt(0); + var _re = o$10.dateNF != null ? dateNF_regex(o$10.dateNF) : null; + function finish_cell() { + var s$5 = str.slice(start, end); + if (s$5.slice(-1) == "\r") s$5 = s$5.slice(0, -1); + var cell = {}; + if (s$5.charAt(0) == "\"" && s$5.charAt(s$5.length - 1) == "\"") s$5 = s$5.slice(1, -1).replace(/""/g, "\""); + if (o$10.cellText !== false) cell.w = s$5; + if (s$5.length === 0) cell.t = "z"; + else if (o$10.raw) { + cell.t = "s"; + cell.v = s$5; + } else if (s$5.trim().length === 0) { + cell.t = "s"; + cell.v = s$5; + } else if (s$5.charCodeAt(0) == 61) { + if (s$5.charCodeAt(1) == 34 && s$5.charCodeAt(s$5.length - 1) == 34) { + cell.t = "s"; + cell.v = s$5.slice(2, -1).replace(/""/g, "\""); + } else if (fuzzyfmla(s$5)) { + cell.t = "s"; + cell.f = s$5.slice(1); + cell.v = s$5; + } else { + cell.t = "s"; + cell.v = s$5; + } + } else if (s$5 == "TRUE") { + cell.t = "b"; + cell.v = true; + } else if (s$5 == "FALSE") { + cell.t = "b"; + cell.v = false; + } else if (!isNaN(v$3 = fuzzynum(s$5))) { + cell.t = "n"; + cell.v = v$3; + } else if (!isNaN((v$3 = fuzzydate(s$5)).getDate()) || _re && s$5.match(_re)) { + cell.z = o$10.dateNF || table_fmt[14]; + if (_re && s$5.match(_re)) { + var news = dateNF_fix(s$5, o$10.dateNF, s$5.match(_re) || []); + v$3 = parseDate(news); + if (o$10 && o$10.UTC === false) v$3 = utc_to_local(v$3); + } else if (o$10 && o$10.UTC === false) v$3 = utc_to_local(v$3); + else if (o$10.cellText !== false && o$10.dateNF) cell.w = SSF_format(cell.z, v$3); + if (o$10.cellDates) { + cell.t = "d"; + cell.v = v$3; + } else { + cell.t = "n"; + cell.v = datenum(v$3); + } + if (!o$10.cellNF) delete cell.z; + } else if (s$5.charCodeAt(0) == 35 && RBErr[s$5] != null) { + cell.t = "e"; + cell.w = s$5; + cell.v = RBErr[s$5]; + } else { + cell.t = "s"; + cell.v = s$5; + } + if (cell.t == "z") {} else if (o$10.dense) { + if (!ws["!data"][R$1]) ws["!data"][R$1] = []; + ws["!data"][R$1][C$2] = cell; + } else ws[encode_cell({ + c: C$2, + r: R$1 + })] = cell; + start = end + 1; + startcc = str.charCodeAt(start); + if (range.e.c < C$2) range.e.c = C$2; + if (range.e.r < R$1) range.e.r = R$1; + if (cc == sepcc) ++C$2; + else { + C$2 = 0; + ++R$1; + if (o$10.sheetRows && o$10.sheetRows <= R$1) return true; + } + } + outer: for (; end < str.length; ++end) switch (cc = str.charCodeAt(end)) { + case 34: + if (startcc === 34) instr = !instr; + break; + case 13: + if (instr) break; + if (str.charCodeAt(end + 1) == 10) ++end; + case sepcc: + case 10: + if (!instr && finish_cell()) break outer; + break; + default: break; + } + if (end - start > 0) finish_cell(); + ws["!ref"] = encode_range(range); + return ws; + } + function prn_to_sheet_str(str, opts) { + if (!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts); + if (opts.FS) return dsv_to_sheet_str(str, opts); + if (str.slice(0, 4) == "sep=") return dsv_to_sheet_str(str, opts); + if (str.indexOf(" ") >= 0 || str.indexOf(",") >= 0 || str.indexOf(";") >= 0) return dsv_to_sheet_str(str, opts); + return aoa_to_sheet(prn_to_aoa_str(str, opts), opts); + } + function prn_to_sheet(d$5, opts) { + var str = "", bytes = opts.type == "string" ? [ + 0, + 0, + 0, + 0 + ] : firstbyte(d$5, opts); + switch (opts.type) { + case "base64": + str = Base64_decode(d$5); + break; + case "binary": + str = d$5; + break; + case "buffer": + if (opts.codepage == 65001) str = d$5.toString("utf8"); + else if (opts.codepage && typeof $cptable !== "undefined") str = $cptable.utils.decode(opts.codepage, d$5); + else str = has_buf && Buffer.isBuffer(d$5) ? d$5.toString("binary") : a2s(d$5); + break; + case "array": + str = cc2str(d$5); + break; + case "string": + str = d$5; + break; + default: throw new Error("Unrecognized type " + opts.type); + } + if (bytes[0] == 239 && bytes[1] == 187 && bytes[2] == 191) str = utf8read(str.slice(3)); + else if (opts.type != "string" && opts.type != "buffer" && opts.codepage == 65001) str = utf8read(str); + else if (opts.type == "binary" && typeof $cptable !== "undefined" && opts.codepage) str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591, str)); + if (str.slice(0, 19) == "socialcalc:version:") return ETH.to_sheet(opts.type == "string" ? str : utf8read(str), opts); + return prn_to_sheet_str(str, opts); + } + function prn_to_workbook(d$5, opts) { + return sheet_to_workbook(prn_to_sheet(d$5, opts), opts); + } + function sheet_to_prn(ws) { + var o$10 = []; + if (!ws["!ref"]) return ""; + var r$10 = safe_decode_range(ws["!ref"]), cell; + var dense = ws["!data"] != null; + for (var R$1 = r$10.s.r; R$1 <= r$10.e.r; ++R$1) { + var oo = []; + for (var C$2 = r$10.s.c; C$2 <= r$10.e.c; ++C$2) { + var coord = encode_cell({ + r: R$1, + c: C$2 + }); + cell = dense ? (ws["!data"][R$1] || [])[C$2] : ws[coord]; + if (!cell || cell.v == null) { + oo.push(" "); + continue; + } + var w$2 = (cell.w || (format_cell(cell), cell.w) || "").slice(0, 10); + while (w$2.length < 10) w$2 += " "; + oo.push(w$2 + (C$2 === 0 ? " " : "")); + } + o$10.push(oo.join("")); + } + return o$10.join("\n"); + } + return { + to_workbook: prn_to_workbook, + to_sheet: prn_to_sheet, + from_sheet: sheet_to_prn + }; + })(); + WK_ = /* @__PURE__ */ (function() { + function lotushopper(data, cb, opts) { + if (!data) return; + prep_blob(data, data.l || 0); + var Enum$1 = opts.Enum || WK1Enum; + while (data.l < data.length) { + var RT = data.read_shift(2); + var R$1 = Enum$1[RT] || Enum$1[65535]; + var length = data.read_shift(2); + var tgt = data.l + length; + var d$5 = R$1.f && R$1.f(data, length, opts); + data.l = tgt; + if (cb(d$5, R$1, RT)) return; + } + } + function lotus_to_workbook(d$5, opts) { + switch (opts.type) { + case "base64": return lotus_to_workbook_buf(s2a(Base64_decode(d$5)), opts); + case "binary": return lotus_to_workbook_buf(s2a(d$5), opts); + case "buffer": + case "array": return lotus_to_workbook_buf(d$5, opts); + } + throw "Unsupported type " + opts.type; + } + var LOTUS_DATE_FMTS = [ + "mmmm", + "dd-mmm-yyyy", + "dd-mmm", + "mmm-yyyy", + "@", + "mm/dd", + "hh:mm:ss AM/PM", + "hh:mm AM/PM", + "mm/dd/yyyy", + "mm/dd", + "hh:mm:ss", + "hh:mm" + ]; + function lotus_to_workbook_buf(d$5, opts) { + if (!d$5) return d$5; + var o$10 = opts || {}; + if (DENSE != null && o$10.dense == null) o$10.dense = DENSE; + var s$5 = {}, n$9 = "Sheet1", next_n = "", sidx = 0; + var sheets = {}, snames = [], realnames = [], sdata = []; + if (o$10.dense) sdata = s$5["!data"] = []; + var refguess = { + s: { + r: 0, + c: 0 + }, + e: { + r: 0, + c: 0 + } + }; + var sheetRows = o$10.sheetRows || 0; + var lastcell = {}; + if (d$5[4] == 81 && d$5[5] == 80 && d$5[6] == 87) return qpw_to_workbook_buf(d$5, opts); + if (d$5[2] == 0) { + if (d$5[3] == 8 || d$5[3] == 9) { + if (d$5.length >= 16 && d$5[14] == 5 && d$5[15] === 108) throw new Error("Unsupported Works 3 for Mac file"); + } + } + if (d$5[2] == 2) { + o$10.Enum = WK1Enum; + lotushopper(d$5, function(val$1, R$1, RT) { + switch (RT) { + case 0: + o$10.vers = val$1; + if (val$1 >= 4096) o$10.qpro = true; + break; + case 255: + o$10.vers = val$1; + o$10.works = true; + break; + case 6: + refguess = val$1; + break; + case 204: + if (val$1) next_n = val$1; + break; + case 222: + next_n = val$1; + break; + case 15: + case 51: + if ((!o$10.qpro && !o$10.works || RT == 51) && val$1[1].v.charCodeAt(0) < 48) val$1[1].v = val$1[1].v.slice(1); + if (o$10.works || o$10.works2) val$1[1].v = val$1[1].v.replace(/\r\n/g, "\n"); + case 13: + case 14: + case 16: + if ((val$1[2] & 112) == 112 && (val$1[2] & 15) > 1 && (val$1[2] & 15) < 15) { + val$1[1].z = o$10.dateNF || LOTUS_DATE_FMTS[(val$1[2] & 15) - 1] || table_fmt[14]; + if (o$10.cellDates) { + val$1[1].v = numdate(val$1[1].v); + val$1[1].t = typeof val$1[1].v == "number" ? "n" : "d"; + } + } + if (o$10.qpro) { + if (val$1[3] > sidx) { + s$5["!ref"] = encode_range(refguess); + sheets[n$9] = s$5; + snames.push(n$9); + s$5 = {}; + if (o$10.dense) sdata = s$5["!data"] = []; + refguess = { + s: { + r: 0, + c: 0 + }, + e: { + r: 0, + c: 0 + } + }; + sidx = val$1[3]; + n$9 = next_n || "Sheet" + (sidx + 1); + next_n = ""; + } + } + var tmpcell = o$10.dense ? (sdata[val$1[0].r] || [])[val$1[0].c] : s$5[encode_cell(val$1[0])]; + if (tmpcell) { + tmpcell.t = val$1[1].t; + tmpcell.v = val$1[1].v; + if (val$1[1].z != null) tmpcell.z = val$1[1].z; + if (val$1[1].f != null) tmpcell.f = val$1[1].f; + lastcell = tmpcell; + break; + } + if (o$10.dense) { + if (!sdata[val$1[0].r]) sdata[val$1[0].r] = []; + sdata[val$1[0].r][val$1[0].c] = val$1[1]; + } else s$5[encode_cell(val$1[0])] = val$1[1]; + lastcell = val$1[1]; + break; + case 21509: + o$10.works2 = true; + break; + case 21506: + { + if (val$1 == 5281) { + lastcell.z = "hh:mm:ss"; + if (o$10.cellDates && lastcell.t == "n") { + lastcell.v = numdate(lastcell.v); + lastcell.t = typeof lastcell.v == "number" ? "n" : "d"; + } + } + } + break; + } + }, o$10); + } else if (d$5[2] == 26 || d$5[2] == 14) { + o$10.Enum = WK3Enum; + if (d$5[2] == 14) { + o$10.qpro = true; + d$5.l = 0; + } + lotushopper(d$5, function(val$1, R$1, RT) { + switch (RT) { + case 204: + n$9 = val$1; + break; + case 22: + if (val$1[1].v.charCodeAt(0) < 48) val$1[1].v = val$1[1].v.slice(1); + val$1[1].v = val$1[1].v.replace(/\x0F./g, function($$) { + return String.fromCharCode($$.charCodeAt(1) - 32); + }).replace(/\r\n/g, "\n"); + case 23: + case 24: + case 25: + case 37: + case 39: + case 40: + if (val$1[3] > sidx) { + s$5["!ref"] = encode_range(refguess); + sheets[n$9] = s$5; + snames.push(n$9); + s$5 = {}; + if (o$10.dense) sdata = s$5["!data"] = []; + refguess = { + s: { + r: 0, + c: 0 + }, + e: { + r: 0, + c: 0 + } + }; + sidx = val$1[3]; + n$9 = "Sheet" + (sidx + 1); + } + if (sheetRows > 0 && val$1[0].r >= sheetRows) break; + if (o$10.dense) { + if (!sdata[val$1[0].r]) sdata[val$1[0].r] = []; + sdata[val$1[0].r][val$1[0].c] = val$1[1]; + } else s$5[encode_cell(val$1[0])] = val$1[1]; + if (refguess.e.c < val$1[0].c) refguess.e.c = val$1[0].c; + if (refguess.e.r < val$1[0].r) refguess.e.r = val$1[0].r; + break; + case 27: + if (val$1[14e3]) realnames[val$1[14e3][0]] = val$1[14e3][1]; + break; + case 1537: + realnames[val$1[0]] = val$1[1]; + if (val$1[0] == sidx) n$9 = val$1[1]; + break; + default: break; + } + }, o$10); + } else throw new Error("Unrecognized LOTUS BOF " + d$5[2]); + s$5["!ref"] = encode_range(refguess); + sheets[next_n || n$9] = s$5; + snames.push(next_n || n$9); + if (!realnames.length) return { + SheetNames: snames, + Sheets: sheets + }; + var osheets = {}, rnames = []; + for (var i$7 = 0; i$7 < realnames.length; ++i$7) if (sheets[snames[i$7]]) { + rnames.push(realnames[i$7] || snames[i$7]); + osheets[realnames[i$7]] = sheets[realnames[i$7]] || sheets[snames[i$7]]; + } else { + rnames.push(realnames[i$7]); + osheets[realnames[i$7]] = { "!ref": "A1" }; + } + return { + SheetNames: rnames, + Sheets: osheets + }; + } + function sheet_to_wk1(ws, opts) { + var o$10 = opts || {}; + if (+o$10.codepage >= 0) set_cp(+o$10.codepage); + if (o$10.type == "string") throw new Error("Cannot write WK1 to JS string"); + var ba = buf_array(); + if (!ws["!ref"]) throw new Error("Cannot export empty sheet to WK1"); + var range = safe_decode_range(ws["!ref"]); + var dense = ws["!data"] != null; + var cols = []; + write_biff_rec(ba, 0, write_BOF_WK1(1030)); + write_biff_rec(ba, 6, write_RANGE(range)); + var max_R = Math.min(range.e.r, 8191); + for (var C$2 = range.s.c; C$2 <= range.e.c; ++C$2) cols[C$2] = encode_col(C$2); + for (var R$1 = range.s.r; R$1 <= max_R; ++R$1) { + var rr = encode_row(R$1); + for (C$2 = range.s.c; C$2 <= range.e.c; ++C$2) { + var cell = dense ? (ws["!data"][R$1] || [])[C$2] : ws[cols[C$2] + rr]; + if (!cell || cell.t == "z") continue; + switch (cell.t) { + case "n": + if ((cell.v | 0) == cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 13, write_INTEGER(R$1, C$2, cell)); + else write_biff_rec(ba, 14, write_NUMBER(R$1, C$2, cell)); + break; + case "d": + var dc = datenum(cell.v); + if ((dc | 0) == dc && dc >= -32768 && dc <= 32767) write_biff_rec(ba, 13, write_INTEGER(R$1, C$2, { + t: "n", + v: dc, + z: cell.z || table_fmt[14] + })); + else write_biff_rec(ba, 14, write_NUMBER(R$1, C$2, { + t: "n", + v: dc, + z: cell.z || table_fmt[14] + })); + break; + default: + var str = format_cell(cell); + write_biff_rec(ba, 15, write_LABEL(R$1, C$2, str.slice(0, 239))); + } + } + } + write_biff_rec(ba, 1); + return ba.end(); + } + function book_to_wk3(wb, opts) { + var o$10 = opts || {}; + if (+o$10.codepage >= 0) set_cp(+o$10.codepage); + if (o$10.type == "string") throw new Error("Cannot write WK3 to JS string"); + var ba = buf_array(); + write_biff_rec(ba, 0, write_BOF_WK3(wb)); + for (var i$7 = 0, cnt = 0; i$7 < wb.SheetNames.length; ++i$7) if ((wb.Sheets[wb.SheetNames[i$7]] || {})["!ref"]) write_biff_rec(ba, 27, write_XFORMAT_SHEETNAME(wb.SheetNames[i$7], cnt++)); + var wsidx = 0; + for (i$7 = 0; i$7 < wb.SheetNames.length; ++i$7) { + var ws = wb.Sheets[wb.SheetNames[i$7]]; + if (!ws || !ws["!ref"]) continue; + var range = safe_decode_range(ws["!ref"]); + var dense = ws["!data"] != null; + var cols = []; + var max_R = Math.min(range.e.r, 8191); + for (var R$1 = range.s.r; R$1 <= max_R; ++R$1) { + var rr = encode_row(R$1); + for (var C$2 = range.s.c; C$2 <= range.e.c; ++C$2) { + if (R$1 === range.s.r) cols[C$2] = encode_col(C$2); + var ref = cols[C$2] + rr; + var cell = dense ? (ws["!data"][R$1] || [])[C$2] : ws[ref]; + if (!cell || cell.t == "z") continue; + if (cell.t == "n") { + write_biff_rec(ba, 23, write_NUMBER_17(R$1, C$2, wsidx, cell.v)); + } else { + var str = format_cell(cell); + write_biff_rec(ba, 22, write_LABEL_16(R$1, C$2, wsidx, str.slice(0, 239))); + } + } + } + ++wsidx; + } + write_biff_rec(ba, 1); + return ba.end(); + } + function write_BOF_WK1(v$3) { + var out = new_buf(2); + out.write_shift(2, v$3); + return out; + } + function write_BOF_WK3(wb) { + var out = new_buf(26); + out.write_shift(2, 4096); + out.write_shift(2, 4); + out.write_shift(4, 0); + var rows = 0, cols = 0, wscnt = 0; + for (var i$7 = 0; i$7 < wb.SheetNames.length; ++i$7) { + var name = wb.SheetNames[i$7]; + var ws = wb.Sheets[name]; + if (!ws || !ws["!ref"]) continue; + ++wscnt; + var range = decode_range(ws["!ref"]); + if (rows < range.e.r) rows = range.e.r; + if (cols < range.e.c) cols = range.e.c; + } + if (rows > 8191) rows = 8191; + out.write_shift(2, rows); + out.write_shift(1, wscnt); + out.write_shift(1, cols); + out.write_shift(2, 0); + out.write_shift(2, 0); + out.write_shift(1, 1); + out.write_shift(1, 2); + out.write_shift(4, 0); + out.write_shift(4, 0); + return out; + } + function parse_RANGE(blob, length, opts) { + var o$10 = { + s: { + c: 0, + r: 0 + }, + e: { + c: 0, + r: 0 + } + }; + if (length == 8 && opts.qpro) { + o$10.s.c = blob.read_shift(1); + blob.l++; + o$10.s.r = blob.read_shift(2); + o$10.e.c = blob.read_shift(1); + blob.l++; + o$10.e.r = blob.read_shift(2); + return o$10; + } + o$10.s.c = blob.read_shift(2); + o$10.s.r = blob.read_shift(2); + if (length == 12 && opts.qpro) blob.l += 2; + o$10.e.c = blob.read_shift(2); + o$10.e.r = blob.read_shift(2); + if (length == 12 && opts.qpro) blob.l += 2; + if (o$10.s.c == 65535) o$10.s.c = o$10.e.c = o$10.s.r = o$10.e.r = 0; + return o$10; + } + function write_RANGE(range) { + var out = new_buf(8); + out.write_shift(2, range.s.c); + out.write_shift(2, range.s.r); + out.write_shift(2, range.e.c); + out.write_shift(2, range.e.r); + return out; + } + function parse_cell(blob, length, opts) { + var o$10 = [ + { + c: 0, + r: 0 + }, + { + t: "n", + v: 0 + }, + 0, + 0 + ]; + if (opts.qpro && opts.vers != 20768) { + o$10[0].c = blob.read_shift(1); + o$10[3] = blob.read_shift(1); + o$10[0].r = blob.read_shift(2); + blob.l += 2; + } else if (opts.works) { + o$10[0].c = blob.read_shift(2); + o$10[0].r = blob.read_shift(2); + o$10[2] = blob.read_shift(2); + } else { + o$10[2] = blob.read_shift(1); + o$10[0].c = blob.read_shift(2); + o$10[0].r = blob.read_shift(2); + } + return o$10; + } + function get_wk1_fmt(cell) { + if (cell.z && fmt_is_date(cell.z)) { + return 240 | (LOTUS_DATE_FMTS.indexOf(cell.z) + 1 || 2); + } + return 255; + } + function parse_LABEL(blob, length, opts) { + var tgt = blob.l + length; + var o$10 = parse_cell(blob, length, opts); + o$10[1].t = "s"; + if ((opts.vers & 65534) == 20768) { + blob.l++; + var len = blob.read_shift(1); + o$10[1].v = blob.read_shift(len, "utf8"); + return o$10; + } + if (opts.qpro) blob.l++; + o$10[1].v = blob.read_shift(tgt - blob.l, "cstr"); + return o$10; + } + function write_LABEL(R$1, C$2, s$5) { + var o$10 = new_buf(7 + s$5.length); + o$10.write_shift(1, 255); + o$10.write_shift(2, C$2); + o$10.write_shift(2, R$1); + o$10.write_shift(1, 39); + for (var i$7 = 0; i$7 < o$10.length; ++i$7) { + var cc = s$5.charCodeAt(i$7); + o$10.write_shift(1, cc >= 128 ? 95 : cc); + } + o$10.write_shift(1, 0); + return o$10; + } + function parse_STRING(blob, length, opts) { + var tgt = blob.l + length; + var o$10 = parse_cell(blob, length, opts); + o$10[1].t = "s"; + if (opts.vers == 20768) { + var len = blob.read_shift(1); + o$10[1].v = blob.read_shift(len, "utf8"); + return o$10; + } + o$10[1].v = blob.read_shift(tgt - blob.l, "cstr"); + return o$10; + } + function parse_INTEGER(blob, length, opts) { + var o$10 = parse_cell(blob, length, opts); + o$10[1].v = blob.read_shift(2, "i"); + return o$10; + } + function write_INTEGER(R$1, C$2, cell) { + var o$10 = new_buf(7); + o$10.write_shift(1, get_wk1_fmt(cell)); + o$10.write_shift(2, C$2); + o$10.write_shift(2, R$1); + o$10.write_shift(2, cell.v, "i"); + return o$10; + } + function parse_NUMBER(blob, length, opts) { + var o$10 = parse_cell(blob, length, opts); + o$10[1].v = blob.read_shift(8, "f"); + return o$10; + } + function write_NUMBER(R$1, C$2, cell) { + var o$10 = new_buf(13); + o$10.write_shift(1, get_wk1_fmt(cell)); + o$10.write_shift(2, C$2); + o$10.write_shift(2, R$1); + o$10.write_shift(8, cell.v, "f"); + return o$10; + } + function parse_FORMULA(blob, length, opts) { + var tgt = blob.l + length; + var o$10 = parse_cell(blob, length, opts); + o$10[1].v = blob.read_shift(8, "f"); + if (opts.qpro) blob.l = tgt; + else { + var flen = blob.read_shift(2); + wk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o$10); + blob.l += flen; + } + return o$10; + } + function wk1_parse_rc(B$2, V$2, col) { + var rel$1 = V$2 & 32768; + V$2 &= ~32768; + V$2 = (rel$1 ? B$2 : 0) + (V$2 >= 8192 ? V$2 - 16384 : V$2); + return (rel$1 ? "" : "$") + (col ? encode_col(V$2) : encode_row(V$2)); + } + var FuncTab = { + 31: ["NA", 0], + 33: ["ABS", 1], + 34: ["TRUNC", 1], + 35: ["SQRT", 1], + 36: ["LOG", 1], + 37: ["LN", 1], + 38: ["PI", 0], + 39: ["SIN", 1], + 40: ["COS", 1], + 41: ["TAN", 1], + 42: ["ATAN2", 2], + 43: ["ATAN", 1], + 44: ["ASIN", 1], + 45: ["ACOS", 1], + 46: ["EXP", 1], + 47: ["MOD", 2], + 49: ["ISNA", 1], + 50: ["ISERR", 1], + 51: ["FALSE", 0], + 52: ["TRUE", 0], + 53: ["RAND", 0], + 54: ["DATE", 3], + 63: ["ROUND", 2], + 64: ["TIME", 3], + 68: ["ISNUMBER", 1], + 69: ["ISTEXT", 1], + 70: ["LEN", 1], + 71: ["VALUE", 1], + 73: ["MID", 3], + 74: ["CHAR", 1], + 80: ["SUM", 69], + 81: ["AVERAGEA", 69], + 82: ["COUNTA", 69], + 83: ["MINA", 69], + 84: ["MAXA", 69], + 102: ["UPPER", 1], + 103: ["LOWER", 1], + 107: ["PROPER", 1], + 109: ["TRIM", 1], + 111: ["T", 1] + }; + var BinOpTab = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "+", + "-", + "*", + "/", + "^", + "=", + "<>", + "<=", + ">=", + "<", + ">", + "", + "", + "", + "", + "&", + "", + "", + "", + "", + "", + "", + "" + ]; + function wk1_fmla_to_csf(blob, o$10) { + prep_blob(blob, 0); + var out = [], argc = 0, R$1 = "", C$2 = "", argL = "", argR = ""; + while (blob.l < blob.length) { + var cc = blob[blob.l++]; + switch (cc) { + case 0: + out.push(blob.read_shift(8, "f")); + break; + case 1: + { + C$2 = wk1_parse_rc(o$10[0].c, blob.read_shift(2), true); + R$1 = wk1_parse_rc(o$10[0].r, blob.read_shift(2), false); + out.push(C$2 + R$1); + } + break; + case 2: + { + var c$7 = wk1_parse_rc(o$10[0].c, blob.read_shift(2), true); + var r$10 = wk1_parse_rc(o$10[0].r, blob.read_shift(2), false); + C$2 = wk1_parse_rc(o$10[0].c, blob.read_shift(2), true); + R$1 = wk1_parse_rc(o$10[0].r, blob.read_shift(2), false); + out.push(c$7 + r$10 + ":" + C$2 + R$1); + } + break; + case 3: + if (blob.l < blob.length) { + console.error("WK1 premature formula end"); + return; + } + break; + case 4: + out.push("(" + out.pop() + ")"); + break; + case 5: + out.push(blob.read_shift(2)); + break; + case 6: + { + var Z$1 = ""; + while (cc = blob[blob.l++]) Z$1 += String.fromCharCode(cc); + out.push("\"" + Z$1.replace(/"/g, "\"\"") + "\""); + } + break; + case 8: + out.push("-" + out.pop()); + break; + case 23: + out.push("+" + out.pop()); + break; + case 22: + out.push("NOT(" + out.pop() + ")"); + break; + case 20: + case 21: + { + argR = out.pop(); + argL = out.pop(); + out.push(["AND", "OR"][cc - 20] + "(" + argL + "," + argR + ")"); + } + break; + default: if (cc < 32 && BinOpTab[cc]) { + argR = out.pop(); + argL = out.pop(); + out.push(argL + BinOpTab[cc] + argR); + } else if (FuncTab[cc]) { + argc = FuncTab[cc][1]; + if (argc == 69) argc = blob[blob.l++]; + if (argc > out.length) { + console.error("WK1 bad formula parse 0x" + cc.toString(16) + ":|" + out.join("|") + "|"); + return; + } + var args = out.slice(-argc); + out.length -= argc; + out.push(FuncTab[cc][0] + "(" + args.join(",") + ")"); + } else if (cc <= 7) return console.error("WK1 invalid opcode " + cc.toString(16)); + else if (cc <= 24) return console.error("WK1 unsupported op " + cc.toString(16)); + else if (cc <= 30) return console.error("WK1 invalid opcode " + cc.toString(16)); + else if (cc <= 115) return console.error("WK1 unsupported function opcode " + cc.toString(16)); + else return console.error("WK1 unrecognized opcode " + cc.toString(16)); + } + } + if (out.length == 1) o$10[1].f = "" + out[0]; + else console.error("WK1 bad formula parse |" + out.join("|") + "|"); + } + function parse_cell_3(blob) { + var o$10 = [ + { + c: 0, + r: 0 + }, + { + t: "n", + v: 0 + }, + 0 + ]; + o$10[0].r = blob.read_shift(2); + o$10[3] = blob[blob.l++]; + o$10[0].c = blob[blob.l++]; + return o$10; + } + function parse_LABEL_16(blob, length) { + var o$10 = parse_cell_3(blob, length); + o$10[1].t = "s"; + o$10[1].v = blob.read_shift(length - 4, "cstr"); + return o$10; + } + function write_LABEL_16(R$1, C$2, wsidx, s$5) { + var o$10 = new_buf(6 + s$5.length); + o$10.write_shift(2, R$1); + o$10.write_shift(1, wsidx); + o$10.write_shift(1, C$2); + o$10.write_shift(1, 39); + for (var i$7 = 0; i$7 < s$5.length; ++i$7) { + var cc = s$5.charCodeAt(i$7); + o$10.write_shift(1, cc >= 128 ? 95 : cc); + } + o$10.write_shift(1, 0); + return o$10; + } + function parse_NUMBER_18(blob, length) { + var o$10 = parse_cell_3(blob, length); + o$10[1].v = blob.read_shift(2); + var v$3 = o$10[1].v >> 1; + if (o$10[1].v & 1) { + switch (v$3 & 7) { + case 0: + v$3 = (v$3 >> 3) * 5e3; + break; + case 1: + v$3 = (v$3 >> 3) * 500; + break; + case 2: + v$3 = (v$3 >> 3) / 20; + break; + case 3: + v$3 = (v$3 >> 3) / 200; + break; + case 4: + v$3 = (v$3 >> 3) / 2e3; + break; + case 5: + v$3 = (v$3 >> 3) / 2e4; + break; + case 6: + v$3 = (v$3 >> 3) / 16; + break; + case 7: + v$3 = (v$3 >> 3) / 64; + break; + } + } + o$10[1].v = v$3; + return o$10; + } + function parse_NUMBER_17(blob, length) { + var o$10 = parse_cell_3(blob, length); + var v1 = blob.read_shift(4); + var v2 = blob.read_shift(4); + var e$10 = blob.read_shift(2); + if (e$10 == 65535) { + if (v1 === 0 && v2 === 3221225472) { + o$10[1].t = "e"; + o$10[1].v = 15; + } else if (v1 === 0 && v2 === 3489660928) { + o$10[1].t = "e"; + o$10[1].v = 42; + } else o$10[1].v = 0; + return o$10; + } + var s$5 = e$10 & 32768; + e$10 = (e$10 & 32767) - 16446; + o$10[1].v = (1 - s$5 * 2) * (v2 * Math.pow(2, e$10 + 32) + v1 * Math.pow(2, e$10)); + return o$10; + } + function write_NUMBER_17(R$1, C$2, wsidx, v$3) { + var o$10 = new_buf(14); + o$10.write_shift(2, R$1); + o$10.write_shift(1, wsidx); + o$10.write_shift(1, C$2); + if (v$3 == 0) { + o$10.write_shift(4, 0); + o$10.write_shift(4, 0); + o$10.write_shift(2, 65535); + return o$10; + } + var s$5 = 0, e$10 = 0, v1 = 0, v2 = 0; + if (v$3 < 0) { + s$5 = 1; + v$3 = -v$3; + } + e$10 = Math.log2(v$3) | 0; + v$3 /= Math.pow(2, e$10 - 31); + v2 = v$3 >>> 0; + if ((v2 & 2147483648) == 0) { + v$3 /= 2; + ++e$10; + v2 = v$3 >>> 0; + } + v$3 -= v2; + v2 |= 2147483648; + v2 >>>= 0; + v$3 *= Math.pow(2, 32); + v1 = v$3 >>> 0; + o$10.write_shift(4, v1); + o$10.write_shift(4, v2); + e$10 += 16383 + (s$5 ? 32768 : 0); + o$10.write_shift(2, e$10); + return o$10; + } + function parse_FORMULA_19(blob, length) { + var o$10 = parse_NUMBER_17(blob, 14); + blob.l += length - 14; + return o$10; + } + function parse_NUMBER_25(blob, length) { + var o$10 = parse_cell_3(blob, length); + var v1 = blob.read_shift(4); + o$10[1].v = v1 >> 6; + return o$10; + } + function parse_NUMBER_27(blob, length) { + var o$10 = parse_cell_3(blob, length); + var v1 = blob.read_shift(8, "f"); + o$10[1].v = v1; + return o$10; + } + function parse_FORMULA_28(blob, length) { + var o$10 = parse_NUMBER_27(blob, 12); + blob.l += length - 12; + return o$10; + } + function parse_SHEETNAMECS(blob, length) { + return blob[blob.l + length - 1] == 0 ? blob.read_shift(length, "cstr") : ""; + } + function parse_SHEETNAMELP(blob, length) { + var len = blob[blob.l++]; + if (len > length - 1) len = length - 1; + var o$10 = ""; + while (o$10.length < len) o$10 += String.fromCharCode(blob[blob.l++]); + return o$10; + } + function parse_SHEETINFOQP(blob, length, opts) { + if (!opts.qpro || length < 21) return; + var id = blob.read_shift(1); + blob.l += 17; + blob.l += 1; + blob.l += 2; + var nm = blob.read_shift(length - 21, "cstr"); + return [id, nm]; + } + function parse_XFORMAT(blob, length) { + var o$10 = {}, tgt = blob.l + length; + while (blob.l < tgt) { + var dt = blob.read_shift(2); + if (dt == 14e3) { + o$10[dt] = [0, ""]; + o$10[dt][0] = blob.read_shift(2); + while (blob[blob.l]) { + o$10[dt][1] += String.fromCharCode(blob[blob.l]); + blob.l++; + } + blob.l++; + } + } + return o$10; + } + function write_XFORMAT_SHEETNAME(name, wsidx) { + var out = new_buf(5 + name.length); + out.write_shift(2, 14e3); + out.write_shift(2, wsidx); + for (var i$7 = 0; i$7 < name.length; ++i$7) { + var cc = name.charCodeAt(i$7); + out[out.l++] = cc > 127 ? 95 : cc; + } + out[out.l++] = 0; + return out; + } + var WK1Enum = { + 0: { + n: "BOF", + f: parseuint16 + }, + 1: { n: "EOF" }, + 2: { n: "CALCMODE" }, + 3: { n: "CALCORDER" }, + 4: { n: "SPLIT" }, + 5: { n: "SYNC" }, + 6: { + n: "RANGE", + f: parse_RANGE + }, + 7: { n: "WINDOW1" }, + 8: { n: "COLW1" }, + 9: { n: "WINTWO" }, + 10: { n: "COLW2" }, + 11: { n: "NAME" }, + 12: { n: "BLANK" }, + 13: { + n: "INTEGER", + f: parse_INTEGER + }, + 14: { + n: "NUMBER", + f: parse_NUMBER + }, + 15: { + n: "LABEL", + f: parse_LABEL + }, + 16: { + n: "FORMULA", + f: parse_FORMULA + }, + 24: { n: "TABLE" }, + 25: { n: "ORANGE" }, + 26: { n: "PRANGE" }, + 27: { n: "SRANGE" }, + 28: { n: "FRANGE" }, + 29: { n: "KRANGE1" }, + 32: { n: "HRANGE" }, + 35: { n: "KRANGE2" }, + 36: { n: "PROTEC" }, + 37: { n: "FOOTER" }, + 38: { n: "HEADER" }, + 39: { n: "SETUP" }, + 40: { n: "MARGINS" }, + 41: { n: "LABELFMT" }, + 42: { n: "TITLES" }, + 43: { n: "SHEETJS" }, + 45: { n: "GRAPH" }, + 46: { n: "NGRAPH" }, + 47: { n: "CALCCOUNT" }, + 48: { n: "UNFORMATTED" }, + 49: { n: "CURSORW12" }, + 50: { n: "WINDOW" }, + 51: { + n: "STRING", + f: parse_STRING + }, + 55: { n: "PASSWORD" }, + 56: { n: "LOCKED" }, + 60: { n: "QUERY" }, + 61: { n: "QUERYNAME" }, + 62: { n: "PRINT" }, + 63: { n: "PRINTNAME" }, + 64: { n: "GRAPH2" }, + 65: { n: "GRAPHNAME" }, + 66: { n: "ZOOM" }, + 67: { n: "SYMSPLIT" }, + 68: { n: "NSROWS" }, + 69: { n: "NSCOLS" }, + 70: { n: "RULER" }, + 71: { n: "NNAME" }, + 72: { n: "ACOMM" }, + 73: { n: "AMACRO" }, + 74: { n: "PARSE" }, + 102: { n: "PRANGES??" }, + 103: { n: "RRANGES??" }, + 104: { n: "FNAME??" }, + 105: { n: "MRANGES??" }, + 204: { + n: "SHEETNAMECS", + f: parse_SHEETNAMECS + }, + 222: { + n: "SHEETNAMELP", + f: parse_SHEETNAMELP + }, + 255: { + n: "BOF", + f: parseuint16 + }, + 21506: { + n: "WKSNF", + f: parseuint16 + }, + 65535: { n: "" } + }; + var WK3Enum = { + 0: { n: "BOF" }, + 1: { n: "EOF" }, + 2: { n: "PASSWORD" }, + 3: { n: "CALCSET" }, + 4: { n: "WINDOWSET" }, + 5: { n: "SHEETCELLPTR" }, + 6: { n: "SHEETLAYOUT" }, + 7: { n: "COLUMNWIDTH" }, + 8: { n: "HIDDENCOLUMN" }, + 9: { n: "USERRANGE" }, + 10: { n: "SYSTEMRANGE" }, + 11: { n: "ZEROFORCE" }, + 12: { n: "SORTKEYDIR" }, + 13: { n: "FILESEAL" }, + 14: { n: "DATAFILLNUMS" }, + 15: { n: "PRINTMAIN" }, + 16: { n: "PRINTSTRING" }, + 17: { n: "GRAPHMAIN" }, + 18: { n: "GRAPHSTRING" }, + 19: { n: "??" }, + 20: { n: "ERRCELL" }, + 21: { n: "NACELL" }, + 22: { + n: "LABEL16", + f: parse_LABEL_16 + }, + 23: { + n: "NUMBER17", + f: parse_NUMBER_17 + }, + 24: { + n: "NUMBER18", + f: parse_NUMBER_18 + }, + 25: { + n: "FORMULA19", + f: parse_FORMULA_19 + }, + 26: { n: "FORMULA1A" }, + 27: { + n: "XFORMAT", + f: parse_XFORMAT + }, + 28: { n: "DTLABELMISC" }, + 29: { n: "DTLABELCELL" }, + 30: { n: "GRAPHWINDOW" }, + 31: { n: "CPA" }, + 32: { n: "LPLAUTO" }, + 33: { n: "QUERY" }, + 34: { n: "HIDDENSHEET" }, + 35: { n: "??" }, + 37: { + n: "NUMBER25", + f: parse_NUMBER_25 + }, + 38: { n: "??" }, + 39: { + n: "NUMBER27", + f: parse_NUMBER_27 + }, + 40: { + n: "FORMULA28", + f: parse_FORMULA_28 + }, + 142: { n: "??" }, + 147: { n: "??" }, + 150: { n: "??" }, + 151: { n: "??" }, + 152: { n: "??" }, + 153: { n: "??" }, + 154: { n: "??" }, + 155: { n: "??" }, + 156: { n: "??" }, + 163: { n: "??" }, + 174: { n: "??" }, + 175: { n: "??" }, + 176: { n: "??" }, + 177: { n: "??" }, + 184: { n: "??" }, + 185: { n: "??" }, + 186: { n: "??" }, + 187: { n: "??" }, + 188: { n: "??" }, + 195: { n: "??" }, + 201: { n: "??" }, + 204: { + n: "SHEETNAMECS", + f: parse_SHEETNAMECS + }, + 205: { n: "??" }, + 206: { n: "??" }, + 207: { n: "??" }, + 208: { n: "??" }, + 256: { n: "??" }, + 259: { n: "??" }, + 260: { n: "??" }, + 261: { n: "??" }, + 262: { n: "??" }, + 263: { n: "??" }, + 265: { n: "??" }, + 266: { n: "??" }, + 267: { n: "??" }, + 268: { n: "??" }, + 270: { n: "??" }, + 271: { n: "??" }, + 384: { n: "??" }, + 389: { n: "??" }, + 390: { n: "??" }, + 393: { n: "??" }, + 396: { n: "??" }, + 512: { n: "??" }, + 514: { n: "??" }, + 513: { n: "??" }, + 516: { n: "??" }, + 517: { n: "??" }, + 640: { n: "??" }, + 641: { n: "??" }, + 642: { n: "??" }, + 643: { n: "??" }, + 644: { n: "??" }, + 645: { n: "??" }, + 646: { n: "??" }, + 647: { n: "??" }, + 648: { n: "??" }, + 658: { n: "??" }, + 659: { n: "??" }, + 660: { n: "??" }, + 661: { n: "??" }, + 662: { n: "??" }, + 665: { n: "??" }, + 666: { n: "??" }, + 768: { n: "??" }, + 772: { n: "??" }, + 1537: { + n: "SHEETINFOQP", + f: parse_SHEETINFOQP + }, + 1600: { n: "??" }, + 1602: { n: "??" }, + 1793: { n: "??" }, + 1794: { n: "??" }, + 1795: { n: "??" }, + 1796: { n: "??" }, + 1920: { n: "??" }, + 2048: { n: "??" }, + 2049: { n: "??" }, + 2052: { n: "??" }, + 2688: { n: "??" }, + 10998: { n: "??" }, + 12849: { n: "??" }, + 28233: { n: "??" }, + 28484: { n: "??" }, + 65535: { n: "" } + }; + var QPWNFTable = { + 5: "dd-mmm-yy", + 6: "dd-mmm", + 7: "mmm-yy", + 8: "mm/dd/yy", + 10: "hh:mm:ss AM/PM", + 11: "hh:mm AM/PM", + 14: "dd-mmm-yyyy", + 15: "mmm-yyyy", + 34: "0.00", + 50: "0.00;[Red]0.00", + 66: "0.00;(0.00)", + 82: "0.00;[Red](0.00)", + 162: "\"$\"#,##0.00;\\(\"$\"#,##0.00\\)", + 288: "0%", + 304: "0E+00", + 320: "# ?/?" + }; + function parse_qpw_str(p$3) { + var cch = p$3.read_shift(2); + var flags = p$3.read_shift(1); + if (flags != 0) throw "unsupported QPW string type " + flags.toString(16); + return p$3.read_shift(cch, "sbcs-cont"); + } + function qpw_to_workbook_buf(d$5, opts) { + prep_blob(d$5, 0); + var o$10 = opts || {}; + if (DENSE != null && o$10.dense == null) o$10.dense = DENSE; + var s$5 = {}; + if (o$10.dense) s$5["!data"] = []; + var SST = [], sname = "", formulae = []; + var range = { + s: { + r: -1, + c: -1 + }, + e: { + r: -1, + c: -1 + } + }; + var cnt = 0, type = 0, C$2 = 0, R$1 = 0; + var wb = { + SheetNames: [], + Sheets: {} + }; + var FMTS = []; + outer: while (d$5.l < d$5.length) { + var RT = d$5.read_shift(2), length = d$5.read_shift(2); + var p$3 = d$5.slice(d$5.l, d$5.l + length); + prep_blob(p$3, 0); + switch (RT) { + case 1: + if (p$3.read_shift(4) != 962023505) throw "Bad QPW9 BOF!"; + break; + case 2: break outer; + case 8: break; + case 10: + { + var fcnt = p$3.read_shift(4); + var step = (p$3.length - p$3.l) / fcnt | 0; + for (var ifmt = 0; ifmt < fcnt; ++ifmt) { + var end = p$3.l + step; + var fmt = {}; + p$3.l += 2; + fmt.numFmtId = p$3.read_shift(2); + if (QPWNFTable[fmt.numFmtId]) fmt.z = QPWNFTable[fmt.numFmtId]; + p$3.l = end; + FMTS.push(fmt); + } + } + break; + case 1025: break; + case 1026: break; + case 1031: + { + p$3.l += 12; + while (p$3.l < p$3.length) { + cnt = p$3.read_shift(2); + type = p$3.read_shift(1); + SST.push(p$3.read_shift(cnt, "cstr")); + } + } + break; + case 1032: + {} + break; + case 1537: + { + var sidx = p$3.read_shift(2); + s$5 = {}; + if (o$10.dense) s$5["!data"] = []; + range.s.c = p$3.read_shift(2); + range.e.c = p$3.read_shift(2); + range.s.r = p$3.read_shift(4); + range.e.r = p$3.read_shift(4); + p$3.l += 4; + if (p$3.l + 2 < p$3.length) { + cnt = p$3.read_shift(2); + type = p$3.read_shift(1); + sname = cnt == 0 ? "" : p$3.read_shift(cnt, "cstr"); + } + if (!sname) sname = encode_col(sidx); + } + break; + case 1538: + { + if (range.s.c > 255 || range.s.r > 999999) break; + if (range.e.c < range.s.c) range.e.c = range.s.c; + if (range.e.r < range.s.r) range.e.r = range.s.r; + s$5["!ref"] = encode_range(range); + book_append_sheet(wb, s$5, sname); + } + break; + case 2561: + { + C$2 = p$3.read_shift(2); + if (range.e.c < C$2) range.e.c = C$2; + if (range.s.c > C$2) range.s.c = C$2; + R$1 = p$3.read_shift(4); + if (range.s.r > R$1) range.s.r = R$1; + R$1 = p$3.read_shift(4); + if (range.e.r < R$1) range.e.r = R$1; + } + break; + case 3073: + { + R$1 = p$3.read_shift(4), cnt = p$3.read_shift(4); + if (range.s.r > R$1) range.s.r = R$1; + if (range.e.r < R$1 + cnt - 1) range.e.r = R$1 + cnt - 1; + var CC = encode_col(C$2); + while (p$3.l < p$3.length) { + var cell = { t: "z" }; + var flags = p$3.read_shift(1), fmtidx = -1; + if (flags & 128) fmtidx = p$3.read_shift(2); + var mul = flags & 64 ? p$3.read_shift(2) - 1 : 0; + switch (flags & 31) { + case 0: break; + case 1: break; + case 2: + cell = { + t: "n", + v: p$3.read_shift(2) + }; + break; + case 3: + cell = { + t: "n", + v: p$3.read_shift(2, "i") + }; + break; + case 4: + cell = { + t: "n", + v: parse_RkNumber(p$3) + }; + break; + case 5: + cell = { + t: "n", + v: p$3.read_shift(8, "f") + }; + break; + case 7: + cell = { + t: "s", + v: SST[type = p$3.read_shift(4) - 1] + }; + break; + case 8: + cell = { + t: "n", + v: p$3.read_shift(8, "f") + }; + p$3.l += 2; + p$3.l += 4; + if (isNaN(cell.v)) cell = { + t: "e", + v: 15 + }; + break; + default: throw "Unrecognized QPW cell type " + (flags & 31); + } + if (fmtidx != -1 && (FMTS[fmtidx - 1] || {}).z) cell.z = FMTS[fmtidx - 1].z; + var delta = 0; + if (flags & 32) switch (flags & 31) { + case 2: + delta = p$3.read_shift(2); + break; + case 3: + delta = p$3.read_shift(2, "i"); + break; + case 7: + delta = p$3.read_shift(2); + break; + default: throw "Unsupported delta for QPW cell type " + (flags & 31); + } + if (!(!o$10.sheetStubs && cell.t == "z")) { + var newcell = dup(cell); + if (cell.t == "n" && cell.z && fmt_is_date(cell.z) && o$10.cellDates) { + newcell.v = numdate(cell.v); + newcell.t = typeof newcell.v == "number" ? "n" : "d"; + } + if (s$5["!data"] != null) { + if (!s$5["!data"][R$1]) s$5["!data"][R$1] = []; + s$5["!data"][R$1][C$2] = newcell; + } else s$5[CC + encode_row(R$1)] = newcell; + } + ++R$1; + --cnt; + while (mul-- > 0 && cnt >= 0) { + if (flags & 32) switch (flags & 31) { + case 2: + cell = { + t: "n", + v: cell.v + delta & 65535 + }; + break; + case 3: + cell = { + t: "n", + v: cell.v + delta & 65535 + }; + if (cell.v > 32767) cell.v -= 65536; + break; + case 7: + cell = { + t: "s", + v: SST[type = type + delta >>> 0] + }; + break; + default: throw "Cannot apply delta for QPW cell type " + (flags & 31); + } + else switch (flags & 31) { + case 1: + cell = { t: "z" }; + break; + case 2: + cell = { + t: "n", + v: p$3.read_shift(2) + }; + break; + case 7: + cell = { + t: "s", + v: SST[type = p$3.read_shift(4) - 1] + }; + break; + default: throw "Cannot apply repeat for QPW cell type " + (flags & 31); + } + if (fmtidx != -1); + if (!(!o$10.sheetStubs && cell.t == "z")) { + if (s$5["!data"] != null) { + if (!s$5["!data"][R$1]) s$5["!data"][R$1] = []; + s$5["!data"][R$1][C$2] = cell; + } else s$5[CC + encode_row(R$1)] = cell; + } + ++R$1; + --cnt; + } + } + } + break; + case 3074: + { + C$2 = p$3.read_shift(2); + R$1 = p$3.read_shift(4); + var str = parse_qpw_str(p$3); + if (s$5["!data"] != null) { + if (!s$5["!data"][R$1]) s$5["!data"][R$1] = []; + s$5["!data"][R$1][C$2] = { + t: "s", + v: str + }; + } else s$5[encode_col(C$2) + encode_row(R$1)] = { + t: "s", + v: str + }; + } + break; + default: break; + } + d$5.l += length; + } + return wb; + } + return { + sheet_to_wk1, + book_to_wk3, + to_workbook: lotus_to_workbook + }; + })(); + parse_rs = /* @__PURE__ */ (function() { + function parse_r(r$10) { + var t$6 = str_match_xml_ns(r$10, "t"); + if (!t$6) return { + t: "s", + v: "" + }; + var o$10 = { + t: "s", + v: unescapexml(t$6[1]) + }; + var rpr = str_match_xml_ns(r$10, "rPr"); + if (rpr) o$10.s = parse_rpr(rpr[1]); + return o$10; + } + var rregex = /<(?:\w+:)?r>/g, rend = /<\/(?:\w+:)?r>/; + return function parse_rs$1(rs) { + return rs.replace(rregex, "").split(rend).map(parse_r).filter(function(r$10) { + return r$10.v; + }); + }; + })(); + rs_to_html = /* @__PURE__ */ (function parse_rs_factory() { + var nlregex = /(\r\n|\n)/g; + function parse_rpr2(font, intro, outro) { + var style = []; + if (font.u) style.push("text-decoration: underline;"); + if (font.uval) style.push("text-underline-style:" + font.uval + ";"); + if (font.sz) style.push("font-size:" + font.sz + "pt;"); + if (font.outline) style.push("text-effect: outline;"); + if (font.shadow) style.push("text-shadow: auto;"); + intro.push(""); + if (font.b) { + intro.push(""); + outro.push(""); + } + if (font.i) { + intro.push(""); + outro.push(""); + } + if (font.strike) { + intro.push(""); + outro.push(""); + } + var align = font.valign || ""; + if (align == "superscript" || align == "super") align = "sup"; + else if (align == "subscript") align = "sub"; + if (align != "") { + intro.push("<" + align + ">"); + outro.push(""); + } + outro.push(""); + return font; + } + function r_to_html(r$10) { + var terms = [ + [], + r$10.v, + [] + ]; + if (!r$10.v) return ""; + if (r$10.s) parse_rpr2(r$10.s, terms[0], terms[2]); + return terms[0].join("") + terms[1].replace(nlregex, "
") + terms[2].join(""); + } + return function parse_rs$1(rs) { + return rs.map(r_to_html).join(""); + }; + })(); + sitregex = /<(?:\w+:)?t\b[^<>]*>([^<]*)<\/(?:\w+:)?t>/g, sirregex = /<(?:\w+:)?r\b[^<>]*>/; + sstr1 = /<(?:\w+:)?(?:si|sstItem)>/g; + sstr2 = /<\/(?:\w+:)?(?:si|sstItem)>/; + straywsregex = /^\s|\s$|[\t\n\r]/; + write_BrtSSTItem = write_RichStr; + crypto_CreateXorArray_Method1 = /* @__PURE__ */ (function() { + var PadArray = [ + 187, + 255, + 255, + 186, + 255, + 255, + 185, + 128, + 0, + 190, + 15, + 0, + 191, + 15, + 0 + ]; + var InitialCode = [ + 57840, + 7439, + 52380, + 33984, + 4364, + 3600, + 61902, + 12606, + 6258, + 57657, + 54287, + 34041, + 10252, + 43370, + 20163 + ]; + var XorMatrix = [ + 44796, + 19929, + 39858, + 10053, + 20106, + 40212, + 10761, + 31585, + 63170, + 64933, + 60267, + 50935, + 40399, + 11199, + 17763, + 35526, + 1453, + 2906, + 5812, + 11624, + 23248, + 885, + 1770, + 3540, + 7080, + 14160, + 28320, + 56640, + 55369, + 41139, + 20807, + 41614, + 21821, + 43642, + 17621, + 28485, + 56970, + 44341, + 19019, + 38038, + 14605, + 29210, + 60195, + 50791, + 40175, + 10751, + 21502, + 43004, + 24537, + 18387, + 36774, + 3949, + 7898, + 15796, + 31592, + 63184, + 47201, + 24803, + 49606, + 37805, + 14203, + 28406, + 56812, + 17824, + 35648, + 1697, + 3394, + 6788, + 13576, + 27152, + 43601, + 17539, + 35078, + 557, + 1114, + 2228, + 4456, + 30388, + 60776, + 51953, + 34243, + 7079, + 14158, + 28316, + 14128, + 28256, + 56512, + 43425, + 17251, + 34502, + 7597, + 13105, + 26210, + 52420, + 35241, + 883, + 1766, + 3532, + 4129, + 8258, + 16516, + 33032, + 4657, + 9314, + 18628 + ]; + var Ror = function(Byte) { + return (Byte / 2 | Byte * 128) & 255; + }; + var XorRor = function(byte1, byte2) { + return Ror(byte1 ^ byte2); + }; + var CreateXorKey_Method1 = function(Password) { + var XorKey = InitialCode[Password.length - 1]; + var CurrentElement = 104; + for (var i$7 = Password.length - 1; i$7 >= 0; --i$7) { + var Char = Password[i$7]; + for (var j$2 = 0; j$2 != 7; ++j$2) { + if (Char & 64) XorKey ^= XorMatrix[CurrentElement]; + Char *= 2; + --CurrentElement; + } + } + return XorKey; + }; + return function(password) { + var Password = _JS2ANSI(password); + var XorKey = CreateXorKey_Method1(Password); + var Index$1 = Password.length; + var ObfuscationArray = new_raw_buf(16); + for (var i$7 = 0; i$7 != 16; ++i$7) ObfuscationArray[i$7] = 0; + var Temp, PasswordLastChar, PadIndex; + if ((Index$1 & 1) === 1) { + Temp = XorKey >> 8; + ObfuscationArray[Index$1] = XorRor(PadArray[0], Temp); + --Index$1; + Temp = XorKey & 255; + PasswordLastChar = Password[Password.length - 1]; + ObfuscationArray[Index$1] = XorRor(PasswordLastChar, Temp); + } + while (Index$1 > 0) { + --Index$1; + Temp = XorKey >> 8; + ObfuscationArray[Index$1] = XorRor(Password[Index$1], Temp); + --Index$1; + Temp = XorKey & 255; + ObfuscationArray[Index$1] = XorRor(Password[Index$1], Temp); + } + Index$1 = 15; + PadIndex = 15 - Password.length; + while (PadIndex > 0) { + Temp = XorKey >> 8; + ObfuscationArray[Index$1] = XorRor(PadArray[PadIndex], Temp); + --Index$1; + --PadIndex; + Temp = XorKey & 255; + ObfuscationArray[Index$1] = XorRor(Password[Index$1], Temp); + --Index$1; + --PadIndex; + } + return ObfuscationArray; + }; + })(); + crypto_DecryptData_Method1 = function(password, Data, XorArrayIndex, XorArray, O) { + if (!O) O = Data; + if (!XorArray) XorArray = crypto_CreateXorArray_Method1(password); + var Index$1, Value; + for (Index$1 = 0; Index$1 != Data.length; ++Index$1) { + Value = Data[Index$1]; + Value ^= XorArray[XorArrayIndex]; + Value = (Value >> 5 | Value << 3) & 255; + O[Index$1] = Value; + ++XorArrayIndex; + } + return [ + O, + XorArrayIndex, + XorArray + ]; + }; + crypto_MakeXorDecryptor = function(password) { + var XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password); + return function(Data) { + var O = crypto_DecryptData_Method1("", Data, XorArrayIndex, XorArray); + XorArrayIndex = O[1]; + return O[0]; + }; + }; + DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW; + DEF_PPI = 96, PPI = DEF_PPI; + XLMLPatternTypeMap = { + "None": "none", + "Solid": "solid", + "Gray50": "mediumGray", + "Gray75": "darkGray", + "Gray25": "lightGray", + "HorzStripe": "darkHorizontal", + "VertStripe": "darkVertical", + "ReverseDiagStripe": "darkDown", + "DiagStripe": "darkUp", + "DiagCross": "darkGrid", + "ThickDiagCross": "darkTrellis", + "ThinHorzStripe": "lightHorizontal", + "ThinVertStripe": "lightVertical", + "ThinReverseDiagStripe": "lightDown", + "ThinHorzCross": "lightGrid" + }; + cellXF_uint = [ + "numFmtId", + "fillId", + "fontId", + "borderId", + "xfId" + ]; + cellXF_bool = [ + "applyAlignment", + "applyBorder", + "applyFill", + "applyFont", + "applyNumberFormat", + "applyProtection", + "pivotButton", + "quotePrefix" + ]; + parse_sty_xml = /* @__PURE__ */ (function make_pstyx() { + return function parse_sty_xml$1(data, themes, opts) { + var styles$1 = {}; + if (!data) return styles$1; + data = remove_doctype(str_remove_ng(data, "")); + var t$6; + if (t$6 = str_match_xml_ns(data, "numFmts")) parse_numFmts(t$6[0], styles$1, opts); + if (t$6 = str_match_xml_ns(data, "fonts")) parse_fonts(t$6[0], styles$1, themes, opts); + if (t$6 = str_match_xml_ns(data, "fills")) parse_fills(t$6[0], styles$1, themes, opts); + if (t$6 = str_match_xml_ns(data, "borders")) parse_borders(t$6[0], styles$1, themes, opts); + if (t$6 = str_match_xml_ns(data, "cellXfs")) parse_cellXfs(t$6[0], styles$1, opts); + return styles$1; + }; + })(); + XLSBFillPTNames = [ + "none", + "solid", + "mediumGray", + "darkGray", + "lightGray", + "darkHorizontal", + "darkVertical", + "darkDown", + "darkUp", + "darkGrid", + "darkTrellis", + "lightHorizontal", + "lightVertical", + "lightDown", + "lightUp", + "lightGrid", + "lightTrellis", + "gray125", + "gray0625" + ]; + ; + parse_BrtFill = parsenoop; + parse_BrtBorder = parsenoop; + XLSXThemeClrScheme = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ]; + parse_BrtCommentAuthor = parse_XLWideString; + CT_VBA = "application/vnd.ms-office.vbaProject"; + VBAFMTS = [ + "xlsb", + "xlsm", + "xlam", + "biff8", + "xla" + ]; + rc_to_a1 = /* @__PURE__ */ (function() { + var rcregex = /(^|[^A-Za-z_])R(\[?-?\d+\]|[1-9]\d*|)C(\[?-?\d+\]|[1-9]\d*|)(?![A-Za-z0-9_])/g; + var rcbase = { + r: 0, + c: 0 + }; + function rcfunc($$, $1, $2, $3) { + var cRel = false, rRel = false; + if ($2.length == 0) rRel = true; + else if ($2.charAt(0) == "[") { + rRel = true; + $2 = $2.slice(1, -1); + } + if ($3.length == 0) cRel = true; + else if ($3.charAt(0) == "[") { + cRel = true; + $3 = $3.slice(1, -1); + } + var R$1 = $2.length > 0 ? parseInt($2, 10) | 0 : 0, C$2 = $3.length > 0 ? parseInt($3, 10) | 0 : 0; + if (cRel) C$2 += rcbase.c; + else --C$2; + if (rRel) R$1 += rcbase.r; + else --R$1; + return $1 + (cRel ? "" : "$") + encode_col(C$2) + (rRel ? "" : "$") + encode_row(R$1); + } + return function rc_to_a1$1(fstr, base) { + rcbase = base; + return fstr.replace(rcregex, rcfunc); + }; + })(); + crefregex = /(^|[^._A-Z0-9])(\$?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])(\$?)(\d{1,7})(?![_.\(A-Za-z0-9])/g; + try { + crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g; + } catch (e$10) {} + a1_to_rc = /* @__PURE__ */ (function() { + return function a1_to_rc$1(fstr, base) { + return fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) { + var c$7 = decode_col($3) - ($2 ? 0 : base.c); + var r$10 = decode_row($5) - ($4 ? 0 : base.r); + var R$1 = $4 == "$" ? r$10 + 1 : r$10 == 0 ? "" : "[" + r$10 + "]"; + var C$2 = $2 == "$" ? c$7 + 1 : c$7 == 0 ? "" : "[" + c$7 + "]"; + return $1 + "R" + R$1 + "C" + C$2; + }); + }; + })(); + parse_PtgMemErr = parsenoop; + parse_PtgMemNoMem = parsenoop; + parse_PtgTbl = parsenoop; + parse_PtgElfCol = parse_PtgElfLoc; + parse_PtgElfColS = parse_PtgElfNoop; + parse_PtgElfColSV = parse_PtgElfNoop; + parse_PtgElfColV = parse_PtgElfLoc; + parse_PtgElfRadical = parse_PtgElfLoc; + parse_PtgElfRadicalLel = parse_PtgElfLel; + parse_PtgElfRadicalS = parse_PtgElfNoop; + parse_PtgElfRw = parse_PtgElfLoc; + parse_PtgElfRwV = parse_PtgElfLoc; + PtgListRT = [ + "Data", + "All", + "Headers", + "??", + "?Data2", + "??", + "?DataHeaders", + "??", + "Totals", + "??", + "??", + "??", + "?DataTotals", + "??", + "??", + "??", + "?Current" + ]; + PtgTypes = { + 1: { + n: "PtgExp", + f: parse_PtgExp + }, + 2: { + n: "PtgTbl", + f: parse_PtgTbl + }, + 3: { + n: "PtgAdd", + f: parseread1 + }, + 4: { + n: "PtgSub", + f: parseread1 + }, + 5: { + n: "PtgMul", + f: parseread1 + }, + 6: { + n: "PtgDiv", + f: parseread1 + }, + 7: { + n: "PtgPower", + f: parseread1 + }, + 8: { + n: "PtgConcat", + f: parseread1 + }, + 9: { + n: "PtgLt", + f: parseread1 + }, + 10: { + n: "PtgLe", + f: parseread1 + }, + 11: { + n: "PtgEq", + f: parseread1 + }, + 12: { + n: "PtgGe", + f: parseread1 + }, + 13: { + n: "PtgGt", + f: parseread1 + }, + 14: { + n: "PtgNe", + f: parseread1 + }, + 15: { + n: "PtgIsect", + f: parseread1 + }, + 16: { + n: "PtgUnion", + f: parseread1 + }, + 17: { + n: "PtgRange", + f: parseread1 + }, + 18: { + n: "PtgUplus", + f: parseread1 + }, + 19: { + n: "PtgUminus", + f: parseread1 + }, + 20: { + n: "PtgPercent", + f: parseread1 + }, + 21: { + n: "PtgParen", + f: parseread1 + }, + 22: { + n: "PtgMissArg", + f: parseread1 + }, + 23: { + n: "PtgStr", + f: parse_PtgStr + }, + 26: { + n: "PtgSheet", + f: parse_PtgSheet + }, + 27: { + n: "PtgEndSheet", + f: parse_PtgEndSheet + }, + 28: { + n: "PtgErr", + f: parse_PtgErr + }, + 29: { + n: "PtgBool", + f: parse_PtgBool + }, + 30: { + n: "PtgInt", + f: parse_PtgInt + }, + 31: { + n: "PtgNum", + f: parse_PtgNum + }, + 32: { + n: "PtgArray", + f: parse_PtgArray + }, + 33: { + n: "PtgFunc", + f: parse_PtgFunc + }, + 34: { + n: "PtgFuncVar", + f: parse_PtgFuncVar + }, + 35: { + n: "PtgName", + f: parse_PtgName + }, + 36: { + n: "PtgRef", + f: parse_PtgRef + }, + 37: { + n: "PtgArea", + f: parse_PtgArea + }, + 38: { + n: "PtgMemArea", + f: parse_PtgMemArea + }, + 39: { + n: "PtgMemErr", + f: parse_PtgMemErr + }, + 40: { + n: "PtgMemNoMem", + f: parse_PtgMemNoMem + }, + 41: { + n: "PtgMemFunc", + f: parse_PtgMemFunc + }, + 42: { + n: "PtgRefErr", + f: parse_PtgRefErr + }, + 43: { + n: "PtgAreaErr", + f: parse_PtgAreaErr + }, + 44: { + n: "PtgRefN", + f: parse_PtgRefN + }, + 45: { + n: "PtgAreaN", + f: parse_PtgAreaN + }, + 46: { + n: "PtgMemAreaN", + f: parse_PtgMemAreaN + }, + 47: { + n: "PtgMemNoMemN", + f: parse_PtgMemNoMemN + }, + 57: { + n: "PtgNameX", + f: parse_PtgNameX + }, + 58: { + n: "PtgRef3d", + f: parse_PtgRef3d + }, + 59: { + n: "PtgArea3d", + f: parse_PtgArea3d + }, + 60: { + n: "PtgRefErr3d", + f: parse_PtgRefErr3d + }, + 61: { + n: "PtgAreaErr3d", + f: parse_PtgAreaErr3d + }, + 255: {} + }; + PtgDupes = { + 64: 32, + 96: 32, + 65: 33, + 97: 33, + 66: 34, + 98: 34, + 67: 35, + 99: 35, + 68: 36, + 100: 36, + 69: 37, + 101: 37, + 70: 38, + 102: 38, + 71: 39, + 103: 39, + 72: 40, + 104: 40, + 73: 41, + 105: 41, + 74: 42, + 106: 42, + 75: 43, + 107: 43, + 76: 44, + 108: 44, + 77: 45, + 109: 45, + 78: 46, + 110: 46, + 79: 47, + 111: 47, + 88: 34, + 120: 34, + 89: 57, + 121: 57, + 90: 58, + 122: 58, + 91: 59, + 123: 59, + 92: 60, + 124: 60, + 93: 61, + 125: 61 + }; + Ptg18 = { + 1: { + n: "PtgElfLel", + f: parse_PtgElfLel + }, + 2: { + n: "PtgElfRw", + f: parse_PtgElfRw + }, + 3: { + n: "PtgElfCol", + f: parse_PtgElfCol + }, + 6: { + n: "PtgElfRwV", + f: parse_PtgElfRwV + }, + 7: { + n: "PtgElfColV", + f: parse_PtgElfColV + }, + 10: { + n: "PtgElfRadical", + f: parse_PtgElfRadical + }, + 11: { + n: "PtgElfRadicalS", + f: parse_PtgElfRadicalS + }, + 13: { + n: "PtgElfColS", + f: parse_PtgElfColS + }, + 15: { + n: "PtgElfColSV", + f: parse_PtgElfColSV + }, + 16: { + n: "PtgElfRadicalLel", + f: parse_PtgElfRadicalLel + }, + 25: { + n: "PtgList", + f: parse_PtgList + }, + 29: { + n: "PtgSxName", + f: parse_PtgSxName + }, + 255: {} + }; + Ptg19 = { + 0: { + n: "PtgAttrNoop", + f: parse_PtgAttrNoop + }, + 1: { + n: "PtgAttrSemi", + f: parse_PtgAttrSemi + }, + 2: { + n: "PtgAttrIf", + f: parse_PtgAttrIf + }, + 4: { + n: "PtgAttrChoose", + f: parse_PtgAttrChoose + }, + 8: { + n: "PtgAttrGoto", + f: parse_PtgAttrGoto + }, + 16: { + n: "PtgAttrSum", + f: parse_PtgAttrSum + }, + 32: { + n: "PtgAttrBaxcel", + f: parse_PtgAttrBaxcel + }, + 33: { + n: "PtgAttrBaxcel", + f: parse_PtgAttrBaxcel + }, + 64: { + n: "PtgAttrSpace", + f: parse_PtgAttrSpace + }, + 65: { + n: "PtgAttrSpaceSemi", + f: parse_PtgAttrSpaceSemi + }, + 128: { + n: "PtgAttrIfError", + f: parse_PtgAttrIfError + }, + 255: {} + }; + PtgBinOp = { + PtgAdd: "+", + PtgConcat: "&", + PtgDiv: "/", + PtgEq: "=", + PtgGe: ">=", + PtgGt: ">", + PtgLe: "<=", + PtgLt: "<", + PtgMul: "*", + PtgNe: "<>", + PtgPower: "^", + PtgSub: "-" + }; + parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula; + parse_XLSBCellParsedFormula = parse_XLSBParsedFormula; + parse_XLSBNameParsedFormula = parse_XLSBParsedFormula; + parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula; + write_XLSBNameParsedFormula = write_XLSBFormula; + Cetab = { + 0: "BEEP", + 1: "OPEN", + 2: "OPEN.LINKS", + 3: "CLOSE.ALL", + 4: "SAVE", + 5: "SAVE.AS", + 6: "FILE.DELETE", + 7: "PAGE.SETUP", + 8: "PRINT", + 9: "PRINTER.SETUP", + 10: "QUIT", + 11: "NEW.WINDOW", + 12: "ARRANGE.ALL", + 13: "WINDOW.SIZE", + 14: "WINDOW.MOVE", + 15: "FULL", + 16: "CLOSE", + 17: "RUN", + 22: "SET.PRINT.AREA", + 23: "SET.PRINT.TITLES", + 24: "SET.PAGE.BREAK", + 25: "REMOVE.PAGE.BREAK", + 26: "FONT", + 27: "DISPLAY", + 28: "PROTECT.DOCUMENT", + 29: "PRECISION", + 30: "A1.R1C1", + 31: "CALCULATE.NOW", + 32: "CALCULATION", + 34: "DATA.FIND", + 35: "EXTRACT", + 36: "DATA.DELETE", + 37: "SET.DATABASE", + 38: "SET.CRITERIA", + 39: "SORT", + 40: "DATA.SERIES", + 41: "TABLE", + 42: "FORMAT.NUMBER", + 43: "ALIGNMENT", + 44: "STYLE", + 45: "BORDER", + 46: "CELL.PROTECTION", + 47: "COLUMN.WIDTH", + 48: "UNDO", + 49: "CUT", + 50: "COPY", + 51: "PASTE", + 52: "CLEAR", + 53: "PASTE.SPECIAL", + 54: "EDIT.DELETE", + 55: "INSERT", + 56: "FILL.RIGHT", + 57: "FILL.DOWN", + 61: "DEFINE.NAME", + 62: "CREATE.NAMES", + 63: "FORMULA.GOTO", + 64: "FORMULA.FIND", + 65: "SELECT.LAST.CELL", + 66: "SHOW.ACTIVE.CELL", + 67: "GALLERY.AREA", + 68: "GALLERY.BAR", + 69: "GALLERY.COLUMN", + 70: "GALLERY.LINE", + 71: "GALLERY.PIE", + 72: "GALLERY.SCATTER", + 73: "COMBINATION", + 74: "PREFERRED", + 75: "ADD.OVERLAY", + 76: "GRIDLINES", + 77: "SET.PREFERRED", + 78: "AXES", + 79: "LEGEND", + 80: "ATTACH.TEXT", + 81: "ADD.ARROW", + 82: "SELECT.CHART", + 83: "SELECT.PLOT.AREA", + 84: "PATTERNS", + 85: "MAIN.CHART", + 86: "OVERLAY", + 87: "SCALE", + 88: "FORMAT.LEGEND", + 89: "FORMAT.TEXT", + 90: "EDIT.REPEAT", + 91: "PARSE", + 92: "JUSTIFY", + 93: "HIDE", + 94: "UNHIDE", + 95: "WORKSPACE", + 96: "FORMULA", + 97: "FORMULA.FILL", + 98: "FORMULA.ARRAY", + 99: "DATA.FIND.NEXT", + 100: "DATA.FIND.PREV", + 101: "FORMULA.FIND.NEXT", + 102: "FORMULA.FIND.PREV", + 103: "ACTIVATE", + 104: "ACTIVATE.NEXT", + 105: "ACTIVATE.PREV", + 106: "UNLOCKED.NEXT", + 107: "UNLOCKED.PREV", + 108: "COPY.PICTURE", + 109: "SELECT", + 110: "DELETE.NAME", + 111: "DELETE.FORMAT", + 112: "VLINE", + 113: "HLINE", + 114: "VPAGE", + 115: "HPAGE", + 116: "VSCROLL", + 117: "HSCROLL", + 118: "ALERT", + 119: "NEW", + 120: "CANCEL.COPY", + 121: "SHOW.CLIPBOARD", + 122: "MESSAGE", + 124: "PASTE.LINK", + 125: "APP.ACTIVATE", + 126: "DELETE.ARROW", + 127: "ROW.HEIGHT", + 128: "FORMAT.MOVE", + 129: "FORMAT.SIZE", + 130: "FORMULA.REPLACE", + 131: "SEND.KEYS", + 132: "SELECT.SPECIAL", + 133: "APPLY.NAMES", + 134: "REPLACE.FONT", + 135: "FREEZE.PANES", + 136: "SHOW.INFO", + 137: "SPLIT", + 138: "ON.WINDOW", + 139: "ON.DATA", + 140: "DISABLE.INPUT", + 142: "OUTLINE", + 143: "LIST.NAMES", + 144: "FILE.CLOSE", + 145: "SAVE.WORKBOOK", + 146: "DATA.FORM", + 147: "COPY.CHART", + 148: "ON.TIME", + 149: "WAIT", + 150: "FORMAT.FONT", + 151: "FILL.UP", + 152: "FILL.LEFT", + 153: "DELETE.OVERLAY", + 155: "SHORT.MENUS", + 159: "SET.UPDATE.STATUS", + 161: "COLOR.PALETTE", + 162: "DELETE.STYLE", + 163: "WINDOW.RESTORE", + 164: "WINDOW.MAXIMIZE", + 166: "CHANGE.LINK", + 167: "CALCULATE.DOCUMENT", + 168: "ON.KEY", + 169: "APP.RESTORE", + 170: "APP.MOVE", + 171: "APP.SIZE", + 172: "APP.MINIMIZE", + 173: "APP.MAXIMIZE", + 174: "BRING.TO.FRONT", + 175: "SEND.TO.BACK", + 185: "MAIN.CHART.TYPE", + 186: "OVERLAY.CHART.TYPE", + 187: "SELECT.END", + 188: "OPEN.MAIL", + 189: "SEND.MAIL", + 190: "STANDARD.FONT", + 191: "CONSOLIDATE", + 192: "SORT.SPECIAL", + 193: "GALLERY.3D.AREA", + 194: "GALLERY.3D.COLUMN", + 195: "GALLERY.3D.LINE", + 196: "GALLERY.3D.PIE", + 197: "VIEW.3D", + 198: "GOAL.SEEK", + 199: "WORKGROUP", + 200: "FILL.GROUP", + 201: "UPDATE.LINK", + 202: "PROMOTE", + 203: "DEMOTE", + 204: "SHOW.DETAIL", + 206: "UNGROUP", + 207: "OBJECT.PROPERTIES", + 208: "SAVE.NEW.OBJECT", + 209: "SHARE", + 210: "SHARE.NAME", + 211: "DUPLICATE", + 212: "APPLY.STYLE", + 213: "ASSIGN.TO.OBJECT", + 214: "OBJECT.PROTECTION", + 215: "HIDE.OBJECT", + 216: "SET.EXTRACT", + 217: "CREATE.PUBLISHER", + 218: "SUBSCRIBE.TO", + 219: "ATTRIBUTES", + 220: "SHOW.TOOLBAR", + 222: "PRINT.PREVIEW", + 223: "EDIT.COLOR", + 224: "SHOW.LEVELS", + 225: "FORMAT.MAIN", + 226: "FORMAT.OVERLAY", + 227: "ON.RECALC", + 228: "EDIT.SERIES", + 229: "DEFINE.STYLE", + 240: "LINE.PRINT", + 243: "ENTER.DATA", + 249: "GALLERY.RADAR", + 250: "MERGE.STYLES", + 251: "EDITION.OPTIONS", + 252: "PASTE.PICTURE", + 253: "PASTE.PICTURE.LINK", + 254: "SPELLING", + 256: "ZOOM", + 259: "INSERT.OBJECT", + 260: "WINDOW.MINIMIZE", + 265: "SOUND.NOTE", + 266: "SOUND.PLAY", + 267: "FORMAT.SHAPE", + 268: "EXTEND.POLYGON", + 269: "FORMAT.AUTO", + 272: "GALLERY.3D.BAR", + 273: "GALLERY.3D.SURFACE", + 274: "FILL.AUTO", + 276: "CUSTOMIZE.TOOLBAR", + 277: "ADD.TOOL", + 278: "EDIT.OBJECT", + 279: "ON.DOUBLECLICK", + 280: "ON.ENTRY", + 281: "WORKBOOK.ADD", + 282: "WORKBOOK.MOVE", + 283: "WORKBOOK.COPY", + 284: "WORKBOOK.OPTIONS", + 285: "SAVE.WORKSPACE", + 288: "CHART.WIZARD", + 289: "DELETE.TOOL", + 290: "MOVE.TOOL", + 291: "WORKBOOK.SELECT", + 292: "WORKBOOK.ACTIVATE", + 293: "ASSIGN.TO.TOOL", + 295: "COPY.TOOL", + 296: "RESET.TOOL", + 297: "CONSTRAIN.NUMERIC", + 298: "PASTE.TOOL", + 302: "WORKBOOK.NEW", + 305: "SCENARIO.CELLS", + 306: "SCENARIO.DELETE", + 307: "SCENARIO.ADD", + 308: "SCENARIO.EDIT", + 309: "SCENARIO.SHOW", + 310: "SCENARIO.SHOW.NEXT", + 311: "SCENARIO.SUMMARY", + 312: "PIVOT.TABLE.WIZARD", + 313: "PIVOT.FIELD.PROPERTIES", + 314: "PIVOT.FIELD", + 315: "PIVOT.ITEM", + 316: "PIVOT.ADD.FIELDS", + 318: "OPTIONS.CALCULATION", + 319: "OPTIONS.EDIT", + 320: "OPTIONS.VIEW", + 321: "ADDIN.MANAGER", + 322: "MENU.EDITOR", + 323: "ATTACH.TOOLBARS", + 324: "VBAActivate", + 325: "OPTIONS.CHART", + 328: "VBA.INSERT.FILE", + 330: "VBA.PROCEDURE.DEFINITION", + 336: "ROUTING.SLIP", + 338: "ROUTE.DOCUMENT", + 339: "MAIL.LOGON", + 342: "INSERT.PICTURE", + 343: "EDIT.TOOL", + 344: "GALLERY.DOUGHNUT", + 350: "CHART.TREND", + 352: "PIVOT.ITEM.PROPERTIES", + 354: "WORKBOOK.INSERT", + 355: "OPTIONS.TRANSITION", + 356: "OPTIONS.GENERAL", + 370: "FILTER.ADVANCED", + 373: "MAIL.ADD.MAILER", + 374: "MAIL.DELETE.MAILER", + 375: "MAIL.REPLY", + 376: "MAIL.REPLY.ALL", + 377: "MAIL.FORWARD", + 378: "MAIL.NEXT.LETTER", + 379: "DATA.LABEL", + 380: "INSERT.TITLE", + 381: "FONT.PROPERTIES", + 382: "MACRO.OPTIONS", + 383: "WORKBOOK.HIDE", + 384: "WORKBOOK.UNHIDE", + 385: "WORKBOOK.DELETE", + 386: "WORKBOOK.NAME", + 388: "GALLERY.CUSTOM", + 390: "ADD.CHART.AUTOFORMAT", + 391: "DELETE.CHART.AUTOFORMAT", + 392: "CHART.ADD.DATA", + 393: "AUTO.OUTLINE", + 394: "TAB.ORDER", + 395: "SHOW.DIALOG", + 396: "SELECT.ALL", + 397: "UNGROUP.SHEETS", + 398: "SUBTOTAL.CREATE", + 399: "SUBTOTAL.REMOVE", + 400: "RENAME.OBJECT", + 412: "WORKBOOK.SCROLL", + 413: "WORKBOOK.NEXT", + 414: "WORKBOOK.PREV", + 415: "WORKBOOK.TAB.SPLIT", + 416: "FULL.SCREEN", + 417: "WORKBOOK.PROTECT", + 420: "SCROLLBAR.PROPERTIES", + 421: "PIVOT.SHOW.PAGES", + 422: "TEXT.TO.COLUMNS", + 423: "FORMAT.CHARTTYPE", + 424: "LINK.FORMAT", + 425: "TRACER.DISPLAY", + 430: "TRACER.NAVIGATE", + 431: "TRACER.CLEAR", + 432: "TRACER.ERROR", + 433: "PIVOT.FIELD.GROUP", + 434: "PIVOT.FIELD.UNGROUP", + 435: "CHECKBOX.PROPERTIES", + 436: "LABEL.PROPERTIES", + 437: "LISTBOX.PROPERTIES", + 438: "EDITBOX.PROPERTIES", + 439: "PIVOT.REFRESH", + 440: "LINK.COMBO", + 441: "OPEN.TEXT", + 442: "HIDE.DIALOG", + 443: "SET.DIALOG.FOCUS", + 444: "ENABLE.OBJECT", + 445: "PUSHBUTTON.PROPERTIES", + 446: "SET.DIALOG.DEFAULT", + 447: "FILTER", + 448: "FILTER.SHOW.ALL", + 449: "CLEAR.OUTLINE", + 450: "FUNCTION.WIZARD", + 451: "ADD.LIST.ITEM", + 452: "SET.LIST.ITEM", + 453: "REMOVE.LIST.ITEM", + 454: "SELECT.LIST.ITEM", + 455: "SET.CONTROL.VALUE", + 456: "SAVE.COPY.AS", + 458: "OPTIONS.LISTS.ADD", + 459: "OPTIONS.LISTS.DELETE", + 460: "SERIES.AXES", + 461: "SERIES.X", + 462: "SERIES.Y", + 463: "ERRORBAR.X", + 464: "ERRORBAR.Y", + 465: "FORMAT.CHART", + 466: "SERIES.ORDER", + 467: "MAIL.LOGOFF", + 468: "CLEAR.ROUTING.SLIP", + 469: "APP.ACTIVATE.MICROSOFT", + 470: "MAIL.EDIT.MAILER", + 471: "ON.SHEET", + 472: "STANDARD.WIDTH", + 473: "SCENARIO.MERGE", + 474: "SUMMARY.INFO", + 475: "FIND.FILE", + 476: "ACTIVE.CELL.FONT", + 477: "ENABLE.TIPWIZARD", + 478: "VBA.MAKE.ADDIN", + 480: "INSERTDATATABLE", + 481: "WORKGROUP.OPTIONS", + 482: "MAIL.SEND.MAILER", + 485: "AUTOCORRECT", + 489: "POST.DOCUMENT", + 491: "PICKLIST", + 493: "VIEW.SHOW", + 494: "VIEW.DEFINE", + 495: "VIEW.DELETE", + 509: "SHEET.BACKGROUND", + 510: "INSERT.MAP.OBJECT", + 511: "OPTIONS.MENONO", + 517: "MSOCHECKS", + 518: "NORMAL", + 519: "LAYOUT", + 520: "RM.PRINT.AREA", + 521: "CLEAR.PRINT.AREA", + 522: "ADD.PRINT.AREA", + 523: "MOVE.BRK", + 545: "HIDECURR.NOTE", + 546: "HIDEALL.NOTES", + 547: "DELETE.NOTE", + 548: "TRAVERSE.NOTES", + 549: "ACTIVATE.NOTES", + 620: "PROTECT.REVISIONS", + 621: "UNPROTECT.REVISIONS", + 647: "OPTIONS.ME", + 653: "WEB.PUBLISH", + 667: "NEWWEBQUERY", + 673: "PIVOT.TABLE.CHART", + 753: "OPTIONS.SAVE", + 755: "OPTIONS.SPELL", + 808: "HIDEALL.INKANNOTS" + }; + Ftab = { + 0: "COUNT", + 1: "IF", + 2: "ISNA", + 3: "ISERROR", + 4: "SUM", + 5: "AVERAGE", + 6: "MIN", + 7: "MAX", + 8: "ROW", + 9: "COLUMN", + 10: "NA", + 11: "NPV", + 12: "STDEV", + 13: "DOLLAR", + 14: "FIXED", + 15: "SIN", + 16: "COS", + 17: "TAN", + 18: "ATAN", + 19: "PI", + 20: "SQRT", + 21: "EXP", + 22: "LN", + 23: "LOG10", + 24: "ABS", + 25: "INT", + 26: "SIGN", + 27: "ROUND", + 28: "LOOKUP", + 29: "INDEX", + 30: "REPT", + 31: "MID", + 32: "LEN", + 33: "VALUE", + 34: "TRUE", + 35: "FALSE", + 36: "AND", + 37: "OR", + 38: "NOT", + 39: "MOD", + 40: "DCOUNT", + 41: "DSUM", + 42: "DAVERAGE", + 43: "DMIN", + 44: "DMAX", + 45: "DSTDEV", + 46: "VAR", + 47: "DVAR", + 48: "TEXT", + 49: "LINEST", + 50: "TREND", + 51: "LOGEST", + 52: "GROWTH", + 53: "GOTO", + 54: "HALT", + 55: "RETURN", + 56: "PV", + 57: "FV", + 58: "NPER", + 59: "PMT", + 60: "RATE", + 61: "MIRR", + 62: "IRR", + 63: "RAND", + 64: "MATCH", + 65: "DATE", + 66: "TIME", + 67: "DAY", + 68: "MONTH", + 69: "YEAR", + 70: "WEEKDAY", + 71: "HOUR", + 72: "MINUTE", + 73: "SECOND", + 74: "NOW", + 75: "AREAS", + 76: "ROWS", + 77: "COLUMNS", + 78: "OFFSET", + 79: "ABSREF", + 80: "RELREF", + 81: "ARGUMENT", + 82: "SEARCH", + 83: "TRANSPOSE", + 84: "ERROR", + 85: "STEP", + 86: "TYPE", + 87: "ECHO", + 88: "SET.NAME", + 89: "CALLER", + 90: "DEREF", + 91: "WINDOWS", + 92: "SERIES", + 93: "DOCUMENTS", + 94: "ACTIVE.CELL", + 95: "SELECTION", + 96: "RESULT", + 97: "ATAN2", + 98: "ASIN", + 99: "ACOS", + 100: "CHOOSE", + 101: "HLOOKUP", + 102: "VLOOKUP", + 103: "LINKS", + 104: "INPUT", + 105: "ISREF", + 106: "GET.FORMULA", + 107: "GET.NAME", + 108: "SET.VALUE", + 109: "LOG", + 110: "EXEC", + 111: "CHAR", + 112: "LOWER", + 113: "UPPER", + 114: "PROPER", + 115: "LEFT", + 116: "RIGHT", + 117: "EXACT", + 118: "TRIM", + 119: "REPLACE", + 120: "SUBSTITUTE", + 121: "CODE", + 122: "NAMES", + 123: "DIRECTORY", + 124: "FIND", + 125: "CELL", + 126: "ISERR", + 127: "ISTEXT", + 128: "ISNUMBER", + 129: "ISBLANK", + 130: "T", + 131: "N", + 132: "FOPEN", + 133: "FCLOSE", + 134: "FSIZE", + 135: "FREADLN", + 136: "FREAD", + 137: "FWRITELN", + 138: "FWRITE", + 139: "FPOS", + 140: "DATEVALUE", + 141: "TIMEVALUE", + 142: "SLN", + 143: "SYD", + 144: "DDB", + 145: "GET.DEF", + 146: "REFTEXT", + 147: "TEXTREF", + 148: "INDIRECT", + 149: "REGISTER", + 150: "CALL", + 151: "ADD.BAR", + 152: "ADD.MENU", + 153: "ADD.COMMAND", + 154: "ENABLE.COMMAND", + 155: "CHECK.COMMAND", + 156: "RENAME.COMMAND", + 157: "SHOW.BAR", + 158: "DELETE.MENU", + 159: "DELETE.COMMAND", + 160: "GET.CHART.ITEM", + 161: "DIALOG.BOX", + 162: "CLEAN", + 163: "MDETERM", + 164: "MINVERSE", + 165: "MMULT", + 166: "FILES", + 167: "IPMT", + 168: "PPMT", + 169: "COUNTA", + 170: "CANCEL.KEY", + 171: "FOR", + 172: "WHILE", + 173: "BREAK", + 174: "NEXT", + 175: "INITIATE", + 176: "REQUEST", + 177: "POKE", + 178: "EXECUTE", + 179: "TERMINATE", + 180: "RESTART", + 181: "HELP", + 182: "GET.BAR", + 183: "PRODUCT", + 184: "FACT", + 185: "GET.CELL", + 186: "GET.WORKSPACE", + 187: "GET.WINDOW", + 188: "GET.DOCUMENT", + 189: "DPRODUCT", + 190: "ISNONTEXT", + 191: "GET.NOTE", + 192: "NOTE", + 193: "STDEVP", + 194: "VARP", + 195: "DSTDEVP", + 196: "DVARP", + 197: "TRUNC", + 198: "ISLOGICAL", + 199: "DCOUNTA", + 200: "DELETE.BAR", + 201: "UNREGISTER", + 204: "USDOLLAR", + 205: "FINDB", + 206: "SEARCHB", + 207: "REPLACEB", + 208: "LEFTB", + 209: "RIGHTB", + 210: "MIDB", + 211: "LENB", + 212: "ROUNDUP", + 213: "ROUNDDOWN", + 214: "ASC", + 215: "DBCS", + 216: "RANK", + 219: "ADDRESS", + 220: "DAYS360", + 221: "TODAY", + 222: "VDB", + 223: "ELSE", + 224: "ELSE.IF", + 225: "END.IF", + 226: "FOR.CELL", + 227: "MEDIAN", + 228: "SUMPRODUCT", + 229: "SINH", + 230: "COSH", + 231: "TANH", + 232: "ASINH", + 233: "ACOSH", + 234: "ATANH", + 235: "DGET", + 236: "CREATE.OBJECT", + 237: "VOLATILE", + 238: "LAST.ERROR", + 239: "CUSTOM.UNDO", + 240: "CUSTOM.REPEAT", + 241: "FORMULA.CONVERT", + 242: "GET.LINK.INFO", + 243: "TEXT.BOX", + 244: "INFO", + 245: "GROUP", + 246: "GET.OBJECT", + 247: "DB", + 248: "PAUSE", + 251: "RESUME", + 252: "FREQUENCY", + 253: "ADD.TOOLBAR", + 254: "DELETE.TOOLBAR", + 255: "User", + 256: "RESET.TOOLBAR", + 257: "EVALUATE", + 258: "GET.TOOLBAR", + 259: "GET.TOOL", + 260: "SPELLING.CHECK", + 261: "ERROR.TYPE", + 262: "APP.TITLE", + 263: "WINDOW.TITLE", + 264: "SAVE.TOOLBAR", + 265: "ENABLE.TOOL", + 266: "PRESS.TOOL", + 267: "REGISTER.ID", + 268: "GET.WORKBOOK", + 269: "AVEDEV", + 270: "BETADIST", + 271: "GAMMALN", + 272: "BETAINV", + 273: "BINOMDIST", + 274: "CHIDIST", + 275: "CHIINV", + 276: "COMBIN", + 277: "CONFIDENCE", + 278: "CRITBINOM", + 279: "EVEN", + 280: "EXPONDIST", + 281: "FDIST", + 282: "FINV", + 283: "FISHER", + 284: "FISHERINV", + 285: "FLOOR", + 286: "GAMMADIST", + 287: "GAMMAINV", + 288: "CEILING", + 289: "HYPGEOMDIST", + 290: "LOGNORMDIST", + 291: "LOGINV", + 292: "NEGBINOMDIST", + 293: "NORMDIST", + 294: "NORMSDIST", + 295: "NORMINV", + 296: "NORMSINV", + 297: "STANDARDIZE", + 298: "ODD", + 299: "PERMUT", + 300: "POISSON", + 301: "TDIST", + 302: "WEIBULL", + 303: "SUMXMY2", + 304: "SUMX2MY2", + 305: "SUMX2PY2", + 306: "CHITEST", + 307: "CORREL", + 308: "COVAR", + 309: "FORECAST", + 310: "FTEST", + 311: "INTERCEPT", + 312: "PEARSON", + 313: "RSQ", + 314: "STEYX", + 315: "SLOPE", + 316: "TTEST", + 317: "PROB", + 318: "DEVSQ", + 319: "GEOMEAN", + 320: "HARMEAN", + 321: "SUMSQ", + 322: "KURT", + 323: "SKEW", + 324: "ZTEST", + 325: "LARGE", + 326: "SMALL", + 327: "QUARTILE", + 328: "PERCENTILE", + 329: "PERCENTRANK", + 330: "MODE", + 331: "TRIMMEAN", + 332: "TINV", + 334: "MOVIE.COMMAND", + 335: "GET.MOVIE", + 336: "CONCATENATE", + 337: "POWER", + 338: "PIVOT.ADD.DATA", + 339: "GET.PIVOT.TABLE", + 340: "GET.PIVOT.FIELD", + 341: "GET.PIVOT.ITEM", + 342: "RADIANS", + 343: "DEGREES", + 344: "SUBTOTAL", + 345: "SUMIF", + 346: "COUNTIF", + 347: "COUNTBLANK", + 348: "SCENARIO.GET", + 349: "OPTIONS.LISTS.GET", + 350: "ISPMT", + 351: "DATEDIF", + 352: "DATESTRING", + 353: "NUMBERSTRING", + 354: "ROMAN", + 355: "OPEN.DIALOG", + 356: "SAVE.DIALOG", + 357: "VIEW.GET", + 358: "GETPIVOTDATA", + 359: "HYPERLINK", + 360: "PHONETIC", + 361: "AVERAGEA", + 362: "MAXA", + 363: "MINA", + 364: "STDEVPA", + 365: "VARPA", + 366: "STDEVA", + 367: "VARA", + 368: "BAHTTEXT", + 369: "THAIDAYOFWEEK", + 370: "THAIDIGIT", + 371: "THAIMONTHOFYEAR", + 372: "THAINUMSOUND", + 373: "THAINUMSTRING", + 374: "THAISTRINGLENGTH", + 375: "ISTHAIDIGIT", + 376: "ROUNDBAHTDOWN", + 377: "ROUNDBAHTUP", + 378: "THAIYEAR", + 379: "RTD", + 380: "CUBEVALUE", + 381: "CUBEMEMBER", + 382: "CUBEMEMBERPROPERTY", + 383: "CUBERANKEDMEMBER", + 384: "HEX2BIN", + 385: "HEX2DEC", + 386: "HEX2OCT", + 387: "DEC2BIN", + 388: "DEC2HEX", + 389: "DEC2OCT", + 390: "OCT2BIN", + 391: "OCT2HEX", + 392: "OCT2DEC", + 393: "BIN2DEC", + 394: "BIN2OCT", + 395: "BIN2HEX", + 396: "IMSUB", + 397: "IMDIV", + 398: "IMPOWER", + 399: "IMABS", + 400: "IMSQRT", + 401: "IMLN", + 402: "IMLOG2", + 403: "IMLOG10", + 404: "IMSIN", + 405: "IMCOS", + 406: "IMEXP", + 407: "IMARGUMENT", + 408: "IMCONJUGATE", + 409: "IMAGINARY", + 410: "IMREAL", + 411: "COMPLEX", + 412: "IMSUM", + 413: "IMPRODUCT", + 414: "SERIESSUM", + 415: "FACTDOUBLE", + 416: "SQRTPI", + 417: "QUOTIENT", + 418: "DELTA", + 419: "GESTEP", + 420: "ISEVEN", + 421: "ISODD", + 422: "MROUND", + 423: "ERF", + 424: "ERFC", + 425: "BESSELJ", + 426: "BESSELK", + 427: "BESSELY", + 428: "BESSELI", + 429: "XIRR", + 430: "XNPV", + 431: "PRICEMAT", + 432: "YIELDMAT", + 433: "INTRATE", + 434: "RECEIVED", + 435: "DISC", + 436: "PRICEDISC", + 437: "YIELDDISC", + 438: "TBILLEQ", + 439: "TBILLPRICE", + 440: "TBILLYIELD", + 441: "PRICE", + 442: "YIELD", + 443: "DOLLARDE", + 444: "DOLLARFR", + 445: "NOMINAL", + 446: "EFFECT", + 447: "CUMPRINC", + 448: "CUMIPMT", + 449: "EDATE", + 450: "EOMONTH", + 451: "YEARFRAC", + 452: "COUPDAYBS", + 453: "COUPDAYS", + 454: "COUPDAYSNC", + 455: "COUPNCD", + 456: "COUPNUM", + 457: "COUPPCD", + 458: "DURATION", + 459: "MDURATION", + 460: "ODDLPRICE", + 461: "ODDLYIELD", + 462: "ODDFPRICE", + 463: "ODDFYIELD", + 464: "RANDBETWEEN", + 465: "WEEKNUM", + 466: "AMORDEGRC", + 467: "AMORLINC", + 468: "CONVERT", + 724: "SHEETJS", + 469: "ACCRINT", + 470: "ACCRINTM", + 471: "WORKDAY", + 472: "NETWORKDAYS", + 473: "GCD", + 474: "MULTINOMIAL", + 475: "LCM", + 476: "FVSCHEDULE", + 477: "CUBEKPIMEMBER", + 478: "CUBESET", + 479: "CUBESETCOUNT", + 480: "IFERROR", + 481: "COUNTIFS", + 482: "SUMIFS", + 483: "AVERAGEIF", + 484: "AVERAGEIFS" + }; + FtabArgc = { + 2: 1, + 3: 1, + 10: 0, + 15: 1, + 16: 1, + 17: 1, + 18: 1, + 19: 0, + 20: 1, + 21: 1, + 22: 1, + 23: 1, + 24: 1, + 25: 1, + 26: 1, + 27: 2, + 30: 2, + 31: 3, + 32: 1, + 33: 1, + 34: 0, + 35: 0, + 38: 1, + 39: 2, + 40: 3, + 41: 3, + 42: 3, + 43: 3, + 44: 3, + 45: 3, + 47: 3, + 48: 2, + 53: 1, + 61: 3, + 63: 0, + 65: 3, + 66: 3, + 67: 1, + 68: 1, + 69: 1, + 70: 1, + 71: 1, + 72: 1, + 73: 1, + 74: 0, + 75: 1, + 76: 1, + 77: 1, + 79: 2, + 80: 2, + 83: 1, + 85: 0, + 86: 1, + 89: 0, + 90: 1, + 94: 0, + 95: 0, + 97: 2, + 98: 1, + 99: 1, + 101: 3, + 102: 3, + 105: 1, + 106: 1, + 108: 2, + 111: 1, + 112: 1, + 113: 1, + 114: 1, + 117: 2, + 118: 1, + 119: 4, + 121: 1, + 126: 1, + 127: 1, + 128: 1, + 129: 1, + 130: 1, + 131: 1, + 133: 1, + 134: 1, + 135: 1, + 136: 2, + 137: 2, + 138: 2, + 140: 1, + 141: 1, + 142: 3, + 143: 4, + 144: 4, + 161: 1, + 162: 1, + 163: 1, + 164: 1, + 165: 2, + 172: 1, + 175: 2, + 176: 2, + 177: 3, + 178: 2, + 179: 1, + 184: 1, + 186: 1, + 189: 3, + 190: 1, + 195: 3, + 196: 3, + 197: 1, + 198: 1, + 199: 3, + 201: 1, + 207: 4, + 210: 3, + 211: 1, + 212: 2, + 213: 2, + 214: 1, + 215: 1, + 225: 0, + 229: 1, + 230: 1, + 231: 1, + 232: 1, + 233: 1, + 234: 1, + 235: 3, + 244: 1, + 247: 4, + 252: 2, + 257: 1, + 261: 1, + 271: 1, + 273: 4, + 274: 2, + 275: 2, + 276: 2, + 277: 3, + 278: 3, + 279: 1, + 280: 3, + 281: 3, + 282: 3, + 283: 1, + 284: 1, + 285: 2, + 286: 4, + 287: 3, + 288: 2, + 289: 4, + 290: 3, + 291: 3, + 292: 3, + 293: 4, + 294: 1, + 295: 3, + 296: 1, + 297: 3, + 298: 1, + 299: 2, + 300: 3, + 301: 3, + 302: 4, + 303: 2, + 304: 2, + 305: 2, + 306: 2, + 307: 2, + 308: 2, + 309: 3, + 310: 2, + 311: 2, + 312: 2, + 313: 2, + 314: 2, + 315: 2, + 316: 4, + 325: 2, + 326: 2, + 327: 2, + 328: 2, + 331: 2, + 332: 2, + 337: 2, + 342: 1, + 343: 1, + 346: 2, + 347: 1, + 350: 4, + 351: 3, + 352: 1, + 353: 2, + 360: 1, + 368: 1, + 369: 1, + 370: 1, + 371: 1, + 372: 1, + 373: 1, + 374: 1, + 375: 1, + 376: 1, + 377: 1, + 378: 1, + 382: 3, + 385: 1, + 392: 1, + 393: 1, + 396: 2, + 397: 2, + 398: 2, + 399: 1, + 400: 1, + 401: 1, + 402: 1, + 403: 1, + 404: 1, + 405: 1, + 406: 1, + 407: 1, + 408: 1, + 409: 1, + 410: 1, + 414: 4, + 415: 1, + 416: 1, + 417: 2, + 420: 1, + 421: 1, + 422: 2, + 424: 1, + 425: 2, + 426: 2, + 427: 2, + 428: 2, + 430: 3, + 438: 3, + 439: 3, + 440: 3, + 443: 2, + 444: 2, + 445: 2, + 446: 2, + 447: 6, + 448: 6, + 449: 2, + 450: 2, + 464: 2, + 468: 3, + 476: 2, + 479: 1, + 480: 2, + 65535: 0 + }; + strs = {}; + _ssfopts = {}; + browser_has_Map = typeof Map !== "undefined"; + mergecregex = /<(?:\w+:)?mergeCell ref=["'][A-Z0-9:]+['"]\s*[\/]?>/g; + hlinkregex = /<(?:\w+:)?hyperlink [^<>]*>/gm; + dimregex = /"(\w*:\w*)"/; + colregex = /<(?:\w+:)?col\b[^<>]*[\/]?>/g; + afregex = /<(?:\w+:)?autoFilter[^>]*/g; + marginregex = /<(?:\w+:)?pageMargins[^<>]*\/>/g; + sheetprregex = /<(?:\w+:)?sheetPr\b[^<>]*?\/>/; + sheetprot_deffalse = [ + "objects", + "scenarios", + "selectLockedCells", + "selectUnlockedCells" + ]; + sheetprot_deftrue = [ + "formatColumns", + "formatRows", + "formatCells", + "insertColumns", + "insertRows", + "insertHyperlinks", + "deleteColumns", + "deleteRows", + "sort", + "autoFilter", + "pivotTables" + ]; + sviewregex = /<(?:\w:)?sheetView(?:[^<>a-z][^<>]*)?\/?>/g; + parse_ws_xml_data = /* @__PURE__ */ (function() { + var cellregex = /<(?:\w+:)?c[ \/>]/, rowregex = /<\/(?:\w+:)?row>/; + var rregex = /r=["']([^"']*)["']/; + var refregex = /ref=["']([^"']*)["']/; + return function parse_ws_xml_data$1(sdata, s$5, opts, guess, themes, styles$1, wb) { + var ri = 0, x$2 = "", cells = [], cref = [], idx = 0, i$7 = 0, cc = 0, d$5 = "", p$3; + var tag, tagr = 0, tagc = 0; + var sstr, ftag; + var fmtid = 0, fillid = 0; + var do_format = Array.isArray(styles$1.CellXf), cf; + var arrayf = []; + var sharedf = []; + var dense = s$5["!data"] != null; + var rows = [], rowobj = {}, rowrite = false; + var sheetStubs = !!opts.sheetStubs; + var date1904 = !!((wb || {}).WBProps || {}).date1904; + for (var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) { + x$2 = marr[mt].trim(); + var xlen = x$2.length; + if (xlen === 0) continue; + var rstarti = 0; + outa: for (ri = 0; ri < xlen; ++ri) switch (x$2[ri]) { + case ">": + if (x$2[ri - 1] != "/") { + ++ri; + break outa; + } + if (opts && opts.cellStyles) { + tag = parsexmltag(x$2.slice(rstarti, ri), true); + tagr = tag.r != null ? parseInt(tag.r, 10) : tagr + 1; + tagc = -1; + if (opts.sheetRows && opts.sheetRows < tagr) continue; + rowobj = {}; + rowrite = false; + if (tag.ht) { + rowrite = true; + rowobj.hpt = parseFloat(tag.ht); + rowobj.hpx = pt2px(rowobj.hpt); + } + if (tag.hidden && parsexmlbool(tag.hidden)) { + rowrite = true; + rowobj.hidden = true; + } + if (tag.outlineLevel != null) { + rowrite = true; + rowobj.level = +tag.outlineLevel; + } + if (rowrite) rows[tagr - 1] = rowobj; + } + break; + case "<": + rstarti = ri; + break; + } + if (rstarti >= ri) break; + tag = parsexmltag(x$2.slice(rstarti, ri), true); + tagr = tag.r != null ? parseInt(tag.r, 10) : tagr + 1; + tagc = -1; + if (opts.sheetRows && opts.sheetRows < tagr) continue; + if (!opts.nodim) { + if (guess.s.r > tagr - 1) guess.s.r = tagr - 1; + if (guess.e.r < tagr - 1) guess.e.r = tagr - 1; + } + if (opts && opts.cellStyles) { + rowobj = {}; + rowrite = false; + if (tag.ht) { + rowrite = true; + rowobj.hpt = parseFloat(tag.ht); + rowobj.hpx = pt2px(rowobj.hpt); + } + if (tag.hidden && parsexmlbool(tag.hidden)) { + rowrite = true; + rowobj.hidden = true; + } + if (tag.outlineLevel != null) { + rowrite = true; + rowobj.level = +tag.outlineLevel; + } + if (rowrite) rows[tagr - 1] = rowobj; + } + cells = x$2.slice(ri).split(cellregex); + for (var rslice = 0; rslice != cells.length; ++rslice) if (cells[rslice].trim().charAt(0) != "<") break; + cells = cells.slice(rslice); + for (ri = 0; ri != cells.length; ++ri) { + x$2 = cells[ri].trim(); + if (x$2.length === 0) continue; + cref = x$2.match(rregex); + idx = ri; + i$7 = 0; + cc = 0; + x$2 = "" : "") + x$2; + if (cref != null && cref.length === 2) { + idx = 0; + d$5 = cref[1]; + for (i$7 = 0; i$7 != d$5.length; ++i$7) { + if ((cc = d$5.charCodeAt(i$7) - 64) < 1 || cc > 26) break; + idx = 26 * idx + cc; + } + --idx; + tagc = idx; + } else ++tagc; + for (i$7 = 0; i$7 != x$2.length; ++i$7) if (x$2.charCodeAt(i$7) === 62) break; + ++i$7; + tag = parsexmltag(x$2.slice(0, i$7), true); + if (!tag.r) tag.r = encode_cell({ + r: tagr - 1, + c: tagc + }); + d$5 = x$2.slice(i$7); + p$3 = { t: "" }; + if ((cref = str_match_xml_ns(d$5, "v")) != null && cref[1] !== "") p$3.v = unescapexml(cref[1]); + if (opts.cellFormula) { + if ((cref = str_match_xml_ns(d$5, "f")) != null) { + if (cref[1] == "") { + if (cref[0].indexOf("t=\"shared\"") > -1) { + ftag = parsexmltag(cref[0]); + if (sharedf[ftag.si]) p$3.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2], tag.r); + } + } else { + p$3.f = unescapexml(utf8read(cref[1]), true); + if (!opts.xlfn) p$3.f = _xlfn(p$3.f); + if (cref[0].indexOf("t=\"array\"") > -1) { + p$3.F = (d$5.match(refregex) || [])[1]; + if (p$3.F.indexOf(":") > -1) arrayf.push([safe_decode_range(p$3.F), p$3.F]); + } else if (cref[0].indexOf("t=\"shared\"") > -1) { + ftag = parsexmltag(cref[0]); + var ___f = unescapexml(utf8read(cref[1])); + if (!opts.xlfn) ___f = _xlfn(___f); + sharedf[parseInt(ftag.si, 10)] = [ + ftag, + ___f, + tag.r + ]; + } + } + } else if (cref = d$5.match(/]*\/>/)) { + ftag = parsexmltag(cref[0]); + if (sharedf[ftag.si]) p$3.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2], tag.r); + } + var _tag = decode_cell(tag.r); + for (i$7 = 0; i$7 < arrayf.length; ++i$7) if (_tag.r >= arrayf[i$7][0].s.r && _tag.r <= arrayf[i$7][0].e.r) { + if (_tag.c >= arrayf[i$7][0].s.c && _tag.c <= arrayf[i$7][0].e.c) p$3.F = arrayf[i$7][1]; + } + } + if (tag.t == null && p$3.v === undefined) { + if (p$3.f || p$3.F) { + p$3.v = 0; + p$3.t = "n"; + } else if (!sheetStubs) continue; + else p$3.t = "z"; + } else p$3.t = tag.t || "n"; + if (guess.s.c > tagc) guess.s.c = tagc; + if (guess.e.c < tagc) guess.e.c = tagc; + switch (p$3.t) { + case "n": + if (p$3.v == "" || p$3.v == null) { + if (!sheetStubs) continue; + p$3.t = "z"; + } else p$3.v = parseFloat(p$3.v); + break; + case "s": + if (typeof p$3.v == "undefined") { + if (!sheetStubs) continue; + p$3.t = "z"; + } else { + sstr = strs[parseInt(p$3.v, 10)]; + p$3.v = sstr.t; + p$3.r = sstr.r; + if (opts.cellHTML) p$3.h = sstr.h; + } + break; + case "str": + p$3.t = "s"; + p$3.v = p$3.v != null ? unescapexml(utf8read(p$3.v), true) : ""; + if (opts.cellHTML) p$3.h = escapehtml(p$3.v); + break; + case "inlineStr": + cref = str_match_xml_ns(d$5, "is"); + p$3.t = "s"; + if (cref != null && (sstr = parse_si(cref[1]))) { + p$3.v = sstr.t; + if (opts.cellHTML) p$3.h = sstr.h; + } else p$3.v = ""; + break; + case "b": + p$3.v = parsexmlbool(p$3.v); + break; + case "d": + if (opts.cellDates) p$3.v = parseDate(p$3.v, date1904); + else { + p$3.v = datenum(parseDate(p$3.v, date1904), date1904); + p$3.t = "n"; + } + break; + case "e": + if (!opts || opts.cellText !== false) p$3.w = p$3.v; + p$3.v = RBErr[p$3.v]; + break; + } + fmtid = fillid = 0; + cf = null; + if (do_format && tag.s !== undefined) { + cf = styles$1.CellXf[tag.s]; + if (cf != null) { + if (cf.numFmtId != null) fmtid = cf.numFmtId; + if (opts.cellStyles) { + if (cf.fillId != null) fillid = cf.fillId; + } + } + } + safe_format(p$3, fmtid, fillid, opts, themes, styles$1, date1904); + if (opts.cellDates && do_format && p$3.t == "n" && fmt_is_date(table_fmt[fmtid])) { + p$3.v = numdate(p$3.v + (date1904 ? 1462 : 0)); + p$3.t = typeof p$3.v == "number" ? "n" : "d"; + } + if (tag.cm && opts.xlmeta) { + var cm = (opts.xlmeta.Cell || [])[+tag.cm - 1]; + if (cm && cm.type == "XLDAPR") p$3.D = true; + } + var _r; + if (opts.nodim) { + _r = decode_cell(tag.r); + if (guess.s.r > _r.r) guess.s.r = _r.r; + if (guess.e.r < _r.r) guess.e.r = _r.r; + } + if (dense) { + _r = decode_cell(tag.r); + if (!s$5["!data"][_r.r]) s$5["!data"][_r.r] = []; + s$5["!data"][_r.r][_r.c] = p$3; + } else s$5[tag.r] = p$3; + } + } + if (rows.length > 0) s$5["!rows"] = rows; + }; + })(); + parse_BrtWsDim = parse_UncheckedRfX; + write_BrtWsDim = write_UncheckedRfX; + parse_BrtMergeCell = parse_UncheckedRfX; + write_BrtMergeCell = write_UncheckedRfX; + BrtMarginKeys = [ + "left", + "right", + "top", + "bottom", + "header", + "footer" + ]; + WBPropsDef = [ + [ + "allowRefreshQuery", + false, + "bool" + ], + [ + "autoCompressPictures", + true, + "bool" + ], + [ + "backupFile", + false, + "bool" + ], + [ + "checkCompatibility", + false, + "bool" + ], + ["CodeName", ""], + [ + "date1904", + false, + "bool" + ], + [ + "defaultThemeVersion", + 0, + "int" + ], + [ + "filterPrivacy", + false, + "bool" + ], + [ + "hidePivotFieldList", + false, + "bool" + ], + [ + "promptedSolutions", + false, + "bool" + ], + [ + "publishItems", + false, + "bool" + ], + [ + "refreshAllConnections", + false, + "bool" + ], + [ + "saveExternalLinkValues", + true, + "bool" + ], + [ + "showBorderUnselectedTables", + true, + "bool" + ], + [ + "showInkAnnotation", + true, + "bool" + ], + ["showObjects", "all"], + [ + "showPivotChartFilter", + false, + "bool" + ], + ["updateLinks", "userSet"] + ]; + WBViewDef = [ + [ + "activeTab", + 0, + "int" + ], + [ + "autoFilterDateGrouping", + true, + "bool" + ], + [ + "firstSheet", + 0, + "int" + ], + [ + "minimized", + false, + "bool" + ], + [ + "showHorizontalScroll", + true, + "bool" + ], + [ + "showSheetTabs", + true, + "bool" + ], + [ + "showVerticalScroll", + true, + "bool" + ], + [ + "tabRatio", + 600, + "int" + ], + ["visibility", "visible"] + ]; + SheetDef = []; + CalcPrDef = [ + ["calcCompleted", "true"], + ["calcMode", "auto"], + ["calcOnSave", "true"], + ["concurrentCalc", "true"], + ["fullCalcOnLoad", "false"], + ["fullPrecision", "true"], + ["iterate", "false"], + ["iterateCount", "100"], + ["iterateDelta", "0.001"], + ["refMode", "A1"] + ]; + badchars = /* @__PURE__ */ ":][*?/\\".split(""); + wbnsregex = /<\w+:workbook/; + attregexg2 = /\b((?:\w+:)?[\w]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g; + attregex2 = /\b((?:\w+:)?[\w]+)=((?:")(?:[^"]*)(?:")|(?:')(?:[^']*)(?:'))/; + ; + CONTINUE_RT = [ + 60, + 1084, + 2066, + 2165, + 2175 + ]; + PSCLSID = { + SI: "e0859ff2f94f6810ab9108002b27b3d9", + DSI: "02d5cdd59c2e1b10939708002b2cf9ae", + UDI: "05d5cdd59c2e1b10939708002b2cf9ae" + }; + XLSBRecordEnum = { + 0: { f: parse_BrtRowHdr }, + 1: { f: parse_BrtCellBlank }, + 2: { f: parse_BrtCellRk }, + 3: { f: parse_BrtCellError }, + 4: { f: parse_BrtCellBool }, + 5: { f: parse_BrtCellReal }, + 6: { f: parse_BrtCellSt }, + 7: { f: parse_BrtCellIsst }, + 8: { f: parse_BrtFmlaString }, + 9: { f: parse_BrtFmlaNum }, + 10: { f: parse_BrtFmlaBool }, + 11: { f: parse_BrtFmlaError }, + 12: { f: parse_BrtShortBlank }, + 13: { f: parse_BrtShortRk }, + 14: { f: parse_BrtShortError }, + 15: { f: parse_BrtShortBool }, + 16: { f: parse_BrtShortReal }, + 17: { f: parse_BrtShortSt }, + 18: { f: parse_BrtShortIsst }, + 19: { f: parse_RichStr }, + 20: {}, + 21: {}, + 22: {}, + 23: {}, + 24: {}, + 25: {}, + 26: {}, + 27: {}, + 28: {}, + 29: {}, + 30: {}, + 31: {}, + 32: {}, + 33: {}, + 34: {}, + 35: { T: 1 }, + 36: { T: -1 }, + 37: { T: 1 }, + 38: { T: -1 }, + 39: { f: parse_BrtName }, + 40: {}, + 42: {}, + 43: { f: parse_BrtFont }, + 44: { f: parse_BrtFmt }, + 45: { f: parse_BrtFill }, + 46: { f: parse_BrtBorder }, + 47: { f: parse_BrtXF }, + 48: {}, + 49: { f: parse_Int32LE }, + 50: {}, + 51: { f: parse_BrtMdb }, + 52: { T: 1 }, + 53: { T: -1 }, + 54: { T: 1 }, + 55: { T: -1 }, + 56: { T: 1 }, + 57: { T: -1 }, + 58: {}, + 59: {}, + 60: { f: parse_ColInfo }, + 62: { f: parse_BrtCellRString }, + 63: { f: parse_BrtCalcChainItem$ }, + 64: { f: parse_BrtDVal }, + 65: {}, + 66: {}, + 67: {}, + 68: {}, + 69: {}, + 70: {}, + 128: {}, + 129: { T: 1 }, + 130: { T: -1 }, + 131: { + T: 1, + f: parsenoop, + p: 0 + }, + 132: { T: -1 }, + 133: { T: 1 }, + 134: { T: -1 }, + 135: { T: 1 }, + 136: { T: -1 }, + 137: { + T: 1, + f: parse_BrtBeginWsView + }, + 138: { T: -1 }, + 139: { T: 1 }, + 140: { T: -1 }, + 141: { T: 1 }, + 142: { T: -1 }, + 143: { T: 1 }, + 144: { T: -1 }, + 145: { T: 1 }, + 146: { T: -1 }, + 147: { f: parse_BrtWsProp }, + 148: { + f: parse_BrtWsDim, + p: 16 + }, + 151: { f: parse_BrtPane }, + 152: {}, + 153: { f: parse_BrtWbProp }, + 154: {}, + 155: {}, + 156: { f: parse_BrtBundleSh }, + 157: {}, + 158: {}, + 159: { + T: 1, + f: parse_BrtBeginSst + }, + 160: { T: -1 }, + 161: { + T: 1, + f: parse_UncheckedRfX + }, + 162: { T: -1 }, + 163: { T: 1 }, + 164: { T: -1 }, + 165: { T: 1 }, + 166: { T: -1 }, + 167: {}, + 168: {}, + 169: {}, + 170: {}, + 171: {}, + 172: { T: 1 }, + 173: { T: -1 }, + 174: {}, + 175: {}, + 176: { f: parse_BrtMergeCell }, + 177: { T: 1 }, + 178: { T: -1 }, + 179: { T: 1 }, + 180: { T: -1 }, + 181: { T: 1 }, + 182: { T: -1 }, + 183: { T: 1 }, + 184: { T: -1 }, + 185: { T: 1 }, + 186: { T: -1 }, + 187: { T: 1 }, + 188: { T: -1 }, + 189: { T: 1 }, + 190: { T: -1 }, + 191: { T: 1 }, + 192: { T: -1 }, + 193: { T: 1 }, + 194: { T: -1 }, + 195: { T: 1 }, + 196: { T: -1 }, + 197: { T: 1 }, + 198: { T: -1 }, + 199: { T: 1 }, + 200: { T: -1 }, + 201: { T: 1 }, + 202: { T: -1 }, + 203: { T: 1 }, + 204: { T: -1 }, + 205: { T: 1 }, + 206: { T: -1 }, + 207: { T: 1 }, + 208: { T: -1 }, + 209: { T: 1 }, + 210: { T: -1 }, + 211: { T: 1 }, + 212: { T: -1 }, + 213: { T: 1 }, + 214: { T: -1 }, + 215: { T: 1 }, + 216: { T: -1 }, + 217: { T: 1 }, + 218: { T: -1 }, + 219: { T: 1 }, + 220: { T: -1 }, + 221: { T: 1 }, + 222: { T: -1 }, + 223: { T: 1 }, + 224: { T: -1 }, + 225: { T: 1 }, + 226: { T: -1 }, + 227: { T: 1 }, + 228: { T: -1 }, + 229: { T: 1 }, + 230: { T: -1 }, + 231: { T: 1 }, + 232: { T: -1 }, + 233: { T: 1 }, + 234: { T: -1 }, + 235: { T: 1 }, + 236: { T: -1 }, + 237: { T: 1 }, + 238: { T: -1 }, + 239: { T: 1 }, + 240: { T: -1 }, + 241: { T: 1 }, + 242: { T: -1 }, + 243: { T: 1 }, + 244: { T: -1 }, + 245: { T: 1 }, + 246: { T: -1 }, + 247: { T: 1 }, + 248: { T: -1 }, + 249: { T: 1 }, + 250: { T: -1 }, + 251: { T: 1 }, + 252: { T: -1 }, + 253: { T: 1 }, + 254: { T: -1 }, + 255: { T: 1 }, + 256: { T: -1 }, + 257: { T: 1 }, + 258: { T: -1 }, + 259: { T: 1 }, + 260: { T: -1 }, + 261: { T: 1 }, + 262: { T: -1 }, + 263: { T: 1 }, + 264: { T: -1 }, + 265: { T: 1 }, + 266: { T: -1 }, + 267: { T: 1 }, + 268: { T: -1 }, + 269: { T: 1 }, + 270: { T: -1 }, + 271: { T: 1 }, + 272: { T: -1 }, + 273: { T: 1 }, + 274: { T: -1 }, + 275: { T: 1 }, + 276: { T: -1 }, + 277: {}, + 278: { T: 1 }, + 279: { T: -1 }, + 280: { T: 1 }, + 281: { T: -1 }, + 282: { T: 1 }, + 283: { T: 1 }, + 284: { T: -1 }, + 285: { T: 1 }, + 286: { T: -1 }, + 287: { T: 1 }, + 288: { T: -1 }, + 289: { T: 1 }, + 290: { T: -1 }, + 291: { T: 1 }, + 292: { T: -1 }, + 293: { T: 1 }, + 294: { T: -1 }, + 295: { T: 1 }, + 296: { T: -1 }, + 297: { T: 1 }, + 298: { T: -1 }, + 299: { T: 1 }, + 300: { T: -1 }, + 301: { T: 1 }, + 302: { T: -1 }, + 303: { T: 1 }, + 304: { T: -1 }, + 305: { T: 1 }, + 306: { T: -1 }, + 307: { T: 1 }, + 308: { T: -1 }, + 309: { T: 1 }, + 310: { T: -1 }, + 311: { T: 1 }, + 312: { T: -1 }, + 313: { T: -1 }, + 314: { T: 1 }, + 315: { T: -1 }, + 316: { T: 1 }, + 317: { T: -1 }, + 318: { T: 1 }, + 319: { T: -1 }, + 320: { T: 1 }, + 321: { T: -1 }, + 322: { T: 1 }, + 323: { T: -1 }, + 324: { T: 1 }, + 325: { T: -1 }, + 326: { T: 1 }, + 327: { T: -1 }, + 328: { T: 1 }, + 329: { T: -1 }, + 330: { T: 1 }, + 331: { T: -1 }, + 332: { T: 1 }, + 333: { T: -1 }, + 334: { T: 1 }, + 335: { f: parse_BrtMdtinfo }, + 336: { T: -1 }, + 337: { + f: parse_BrtBeginEsmdb, + T: 1 + }, + 338: { T: -1 }, + 339: { T: 1 }, + 340: { T: -1 }, + 341: { T: 1 }, + 342: { T: -1 }, + 343: { T: 1 }, + 344: { T: -1 }, + 345: { T: 1 }, + 346: { T: -1 }, + 347: { T: 1 }, + 348: { T: -1 }, + 349: { T: 1 }, + 350: { T: -1 }, + 351: {}, + 352: {}, + 353: { T: 1 }, + 354: { T: -1 }, + 355: { f: parse_RelID }, + 357: {}, + 358: {}, + 359: {}, + 360: { T: 1 }, + 361: {}, + 362: { f: parse_ExternSheet }, + 363: {}, + 364: {}, + 366: {}, + 367: {}, + 368: {}, + 369: {}, + 370: {}, + 371: {}, + 372: { T: 1 }, + 373: { T: -1 }, + 374: { T: 1 }, + 375: { T: -1 }, + 376: { T: 1 }, + 377: { T: -1 }, + 378: { T: 1 }, + 379: { T: -1 }, + 380: { T: 1 }, + 381: { T: -1 }, + 382: { T: 1 }, + 383: { T: -1 }, + 384: { T: 1 }, + 385: { T: -1 }, + 386: { T: 1 }, + 387: { T: -1 }, + 388: { T: 1 }, + 389: { T: -1 }, + 390: { T: 1 }, + 391: { T: -1 }, + 392: { T: 1 }, + 393: { T: -1 }, + 394: { T: 1 }, + 395: { T: -1 }, + 396: {}, + 397: {}, + 398: {}, + 399: {}, + 400: {}, + 401: { T: 1 }, + 403: {}, + 404: {}, + 405: {}, + 406: {}, + 407: {}, + 408: {}, + 409: {}, + 410: {}, + 411: {}, + 412: {}, + 413: {}, + 414: {}, + 415: {}, + 416: {}, + 417: {}, + 418: {}, + 419: {}, + 420: {}, + 421: {}, + 422: { T: 1 }, + 423: { T: 1 }, + 424: { T: -1 }, + 425: { T: -1 }, + 426: { f: parse_BrtArrFmla }, + 427: { f: parse_BrtShrFmla }, + 428: {}, + 429: { T: 1 }, + 430: { T: -1 }, + 431: { T: 1 }, + 432: { T: -1 }, + 433: { T: 1 }, + 434: { T: -1 }, + 435: { T: 1 }, + 436: { T: -1 }, + 437: { T: 1 }, + 438: { T: -1 }, + 439: { T: 1 }, + 440: { T: -1 }, + 441: { T: 1 }, + 442: { T: -1 }, + 443: { T: 1 }, + 444: { T: -1 }, + 445: { T: 1 }, + 446: { T: -1 }, + 447: { T: 1 }, + 448: { T: -1 }, + 449: { T: 1 }, + 450: { T: -1 }, + 451: { T: 1 }, + 452: { T: -1 }, + 453: { T: 1 }, + 454: { T: -1 }, + 455: { T: 1 }, + 456: { T: -1 }, + 457: { T: 1 }, + 458: { T: -1 }, + 459: { T: 1 }, + 460: { T: -1 }, + 461: { T: 1 }, + 462: { T: -1 }, + 463: { T: 1 }, + 464: { T: -1 }, + 465: { T: 1 }, + 466: { T: -1 }, + 467: { T: 1 }, + 468: { T: -1 }, + 469: { T: 1 }, + 470: { T: -1 }, + 471: {}, + 472: {}, + 473: { T: 1 }, + 474: { T: -1 }, + 475: {}, + 476: { f: parse_BrtMargins }, + 477: {}, + 478: {}, + 479: { T: 1 }, + 480: { T: -1 }, + 481: { T: 1 }, + 482: { T: -1 }, + 483: { T: 1 }, + 484: { T: -1 }, + 485: { f: parse_BrtWsFmtInfo }, + 486: { T: 1 }, + 487: { T: -1 }, + 488: { T: 1 }, + 489: { T: -1 }, + 490: { T: 1 }, + 491: { T: -1 }, + 492: { T: 1 }, + 493: { T: -1 }, + 494: { f: parse_BrtHLink }, + 495: { T: 1 }, + 496: { T: -1 }, + 497: { T: 1 }, + 498: { T: -1 }, + 499: {}, + 500: { T: 1 }, + 501: { T: -1 }, + 502: { T: 1 }, + 503: { T: -1 }, + 504: {}, + 505: { T: 1 }, + 506: { T: -1 }, + 507: {}, + 508: { T: 1 }, + 509: { T: -1 }, + 510: { T: 1 }, + 511: { T: -1 }, + 512: {}, + 513: {}, + 514: { T: 1 }, + 515: { T: -1 }, + 516: { T: 1 }, + 517: { T: -1 }, + 518: { T: 1 }, + 519: { T: -1 }, + 520: { T: 1 }, + 521: { T: -1 }, + 522: {}, + 523: {}, + 524: {}, + 525: {}, + 526: {}, + 527: {}, + 528: { T: 1 }, + 529: { T: -1 }, + 530: { T: 1 }, + 531: { T: -1 }, + 532: { T: 1 }, + 533: { T: -1 }, + 534: {}, + 535: {}, + 536: {}, + 537: {}, + 538: { T: 1 }, + 539: { T: -1 }, + 540: { T: 1 }, + 541: { T: -1 }, + 542: { T: 1 }, + 548: {}, + 549: {}, + 550: { f: parse_RelID }, + 551: { f: parse_XLNullableWideString }, + 552: {}, + 553: {}, + 554: { T: 1 }, + 555: { T: -1 }, + 556: { T: 1 }, + 557: { T: -1 }, + 558: { T: 1 }, + 559: { T: -1 }, + 560: { T: 1 }, + 561: { T: -1 }, + 562: {}, + 564: {}, + 565: { T: 1 }, + 566: { T: -1 }, + 569: { T: 1 }, + 570: { T: -1 }, + 572: {}, + 573: { T: 1 }, + 574: { T: -1 }, + 577: {}, + 578: {}, + 579: {}, + 580: {}, + 581: {}, + 582: {}, + 583: {}, + 584: {}, + 585: {}, + 586: {}, + 587: {}, + 588: { T: -1 }, + 589: {}, + 590: { T: 1 }, + 591: { T: -1 }, + 592: { T: 1 }, + 593: { T: -1 }, + 594: { T: 1 }, + 595: { T: -1 }, + 596: {}, + 597: { T: 1 }, + 598: { T: -1 }, + 599: { T: 1 }, + 600: { T: -1 }, + 601: { T: 1 }, + 602: { T: -1 }, + 603: { T: 1 }, + 604: { T: -1 }, + 605: { T: 1 }, + 606: { T: -1 }, + 607: {}, + 608: { T: 1 }, + 609: { T: -1 }, + 610: {}, + 611: { T: 1 }, + 612: { T: -1 }, + 613: { T: 1 }, + 614: { T: -1 }, + 615: { T: 1 }, + 616: { T: -1 }, + 617: { T: 1 }, + 618: { T: -1 }, + 619: { T: 1 }, + 620: { T: -1 }, + 625: {}, + 626: { T: 1 }, + 627: { T: -1 }, + 628: { T: 1 }, + 629: { T: -1 }, + 630: { T: 1 }, + 631: { T: -1 }, + 632: { f: parse_BrtCommentAuthor }, + 633: { T: 1 }, + 634: { T: -1 }, + 635: { + T: 1, + f: parse_BrtBeginComment + }, + 636: { T: -1 }, + 637: { f: parse_BrtCommentText }, + 638: { T: 1 }, + 639: {}, + 640: { T: -1 }, + 641: { T: 1 }, + 642: { T: -1 }, + 643: { T: 1 }, + 644: {}, + 645: { T: -1 }, + 646: { T: 1 }, + 648: { T: 1 }, + 649: {}, + 650: { T: -1 }, + 651: { f: parse_BrtCsProp }, + 652: {}, + 653: { T: 1 }, + 654: { T: -1 }, + 655: { T: 1 }, + 656: { T: -1 }, + 657: { T: 1 }, + 658: { T: -1 }, + 659: {}, + 660: { T: 1 }, + 661: {}, + 662: { T: -1 }, + 663: {}, + 664: { T: 1 }, + 665: {}, + 666: { T: -1 }, + 667: {}, + 668: {}, + 669: {}, + 671: { T: 1 }, + 672: { T: -1 }, + 673: { T: 1 }, + 674: { T: -1 }, + 675: {}, + 676: {}, + 677: {}, + 678: {}, + 679: {}, + 680: {}, + 681: {}, + 1024: {}, + 1025: {}, + 1026: { T: 1 }, + 1027: { T: -1 }, + 1028: { T: 1 }, + 1029: { T: -1 }, + 1030: {}, + 1031: { T: 1 }, + 1032: { T: -1 }, + 1033: { T: 1 }, + 1034: { T: -1 }, + 1035: {}, + 1036: {}, + 1037: {}, + 1038: { T: 1 }, + 1039: { T: -1 }, + 1040: {}, + 1041: { T: 1 }, + 1042: { T: -1 }, + 1043: {}, + 1044: {}, + 1045: {}, + 1046: { T: 1 }, + 1047: { T: -1 }, + 1048: { T: 1 }, + 1049: { T: -1 }, + 1050: {}, + 1051: { T: 1 }, + 1052: { T: 1 }, + 1053: { f: parse_BrtDVal14 }, + 1054: { T: 1 }, + 1055: {}, + 1056: { T: 1 }, + 1057: { T: -1 }, + 1058: { T: 1 }, + 1059: { T: -1 }, + 1061: {}, + 1062: { T: 1 }, + 1063: { T: -1 }, + 1064: { T: 1 }, + 1065: { T: -1 }, + 1066: { T: 1 }, + 1067: { T: -1 }, + 1068: { T: 1 }, + 1069: { T: -1 }, + 1070: { T: 1 }, + 1071: { T: -1 }, + 1072: { T: 1 }, + 1073: { T: -1 }, + 1075: { T: 1 }, + 1076: { T: -1 }, + 1077: { T: 1 }, + 1078: { T: -1 }, + 1079: { T: 1 }, + 1080: { T: -1 }, + 1081: { T: 1 }, + 1082: { T: -1 }, + 1083: { T: 1 }, + 1084: { T: -1 }, + 1085: {}, + 1086: { T: 1 }, + 1087: { T: -1 }, + 1088: { T: 1 }, + 1089: { T: -1 }, + 1090: { T: 1 }, + 1091: { T: -1 }, + 1092: { T: 1 }, + 1093: { T: -1 }, + 1094: { T: 1 }, + 1095: { T: -1 }, + 1096: {}, + 1097: { T: 1 }, + 1098: {}, + 1099: { T: -1 }, + 1100: { T: 1 }, + 1101: { T: -1 }, + 1102: {}, + 1103: {}, + 1104: {}, + 1105: {}, + 1111: {}, + 1112: {}, + 1113: { T: 1 }, + 1114: { T: -1 }, + 1115: { T: 1 }, + 1116: { T: -1 }, + 1117: {}, + 1118: { T: 1 }, + 1119: { T: -1 }, + 1120: { T: 1 }, + 1121: { T: -1 }, + 1122: { T: 1 }, + 1123: { T: -1 }, + 1124: { T: 1 }, + 1125: { T: -1 }, + 1126: {}, + 1128: { T: 1 }, + 1129: { T: -1 }, + 1130: {}, + 1131: { T: 1 }, + 1132: { T: -1 }, + 1133: { T: 1 }, + 1134: { T: -1 }, + 1135: { T: 1 }, + 1136: { T: -1 }, + 1137: { T: 1 }, + 1138: { T: -1 }, + 1139: { T: 1 }, + 1140: { T: -1 }, + 1141: {}, + 1142: { T: 1 }, + 1143: { T: -1 }, + 1144: { T: 1 }, + 1145: { T: -1 }, + 1146: {}, + 1147: { T: 1 }, + 1148: { T: -1 }, + 1149: { T: 1 }, + 1150: { T: -1 }, + 1152: { T: 1 }, + 1153: { T: -1 }, + 1154: { T: -1 }, + 1155: { T: -1 }, + 1156: { T: -1 }, + 1157: { T: 1 }, + 1158: { T: -1 }, + 1159: { T: 1 }, + 1160: { T: -1 }, + 1161: { T: 1 }, + 1162: { T: -1 }, + 1163: { T: 1 }, + 1164: { T: -1 }, + 1165: { T: 1 }, + 1166: { T: -1 }, + 1167: { T: 1 }, + 1168: { T: -1 }, + 1169: { T: 1 }, + 1170: { T: -1 }, + 1171: {}, + 1172: { T: 1 }, + 1173: { T: -1 }, + 1177: {}, + 1178: { T: 1 }, + 1180: {}, + 1181: {}, + 1182: {}, + 2048: { T: 1 }, + 2049: { T: -1 }, + 2050: {}, + 2051: { T: 1 }, + 2052: { T: -1 }, + 2053: {}, + 2054: {}, + 2055: { T: 1 }, + 2056: { T: -1 }, + 2057: { T: 1 }, + 2058: { T: -1 }, + 2060: {}, + 2067: {}, + 2068: { T: 1 }, + 2069: { T: -1 }, + 2070: {}, + 2071: {}, + 2072: { T: 1 }, + 2073: { T: -1 }, + 2075: {}, + 2076: {}, + 2077: { T: 1 }, + 2078: { T: -1 }, + 2079: {}, + 2080: { T: 1 }, + 2081: { T: -1 }, + 2082: {}, + 2083: { T: 1 }, + 2084: { T: -1 }, + 2085: { T: 1 }, + 2086: { T: -1 }, + 2087: { T: 1 }, + 2088: { T: -1 }, + 2089: { T: 1 }, + 2090: { T: -1 }, + 2091: {}, + 2092: {}, + 2093: { T: 1 }, + 2094: { T: -1 }, + 2095: {}, + 2096: { T: 1 }, + 2097: { T: -1 }, + 2098: { T: 1 }, + 2099: { T: -1 }, + 2100: { T: 1 }, + 2101: { T: -1 }, + 2102: {}, + 2103: { T: 1 }, + 2104: { T: -1 }, + 2105: {}, + 2106: { T: 1 }, + 2107: { T: -1 }, + 2108: {}, + 2109: { T: 1 }, + 2110: { T: -1 }, + 2111: { T: 1 }, + 2112: { T: -1 }, + 2113: { T: 1 }, + 2114: { T: -1 }, + 2115: {}, + 2116: {}, + 2117: {}, + 2118: { T: 1 }, + 2119: { T: -1 }, + 2120: {}, + 2121: { T: 1 }, + 2122: { T: -1 }, + 2123: { T: 1 }, + 2124: { T: -1 }, + 2125: {}, + 2126: { T: 1 }, + 2127: { T: -1 }, + 2128: {}, + 2129: { T: 1 }, + 2130: { T: -1 }, + 2131: { T: 1 }, + 2132: { T: -1 }, + 2133: { T: 1 }, + 2134: {}, + 2135: {}, + 2136: {}, + 2137: { T: 1 }, + 2138: { T: -1 }, + 2139: { T: 1 }, + 2140: { T: -1 }, + 2141: {}, + 3072: {}, + 3073: {}, + 4096: { T: 1 }, + 4097: { T: -1 }, + 5002: { T: 1 }, + 5003: { T: -1 }, + 5081: { T: 1 }, + 5082: { T: -1 }, + 5083: {}, + 5084: { T: 1 }, + 5085: { T: -1 }, + 5086: { T: 1 }, + 5087: { T: -1 }, + 5088: {}, + 5089: {}, + 5090: {}, + 5092: { T: 1 }, + 5093: { T: -1 }, + 5094: {}, + 5095: { T: 1 }, + 5096: { T: -1 }, + 5097: {}, + 5099: {}, + 65535: { n: "" } + }; + XLSRecordEnum = { + 6: { f: parse_Formula }, + 10: { f: parsenoop2 }, + 12: { f: parseuint16 }, + 13: { f: parseuint16 }, + 14: { f: parsebool }, + 15: { f: parsebool }, + 16: { f: parse_Xnum }, + 17: { f: parsebool }, + 18: { f: parsebool }, + 19: { f: parseuint16 }, + 20: { f: parse_XLHeaderFooter }, + 21: { f: parse_XLHeaderFooter }, + 23: { f: parse_ExternSheet }, + 24: { f: parse_Lbl }, + 25: { f: parsebool }, + 26: {}, + 27: {}, + 28: { f: parse_Note }, + 29: {}, + 34: { f: parsebool }, + 35: { f: parse_ExternName }, + 38: { f: parse_Xnum }, + 39: { f: parse_Xnum }, + 40: { f: parse_Xnum }, + 41: { f: parse_Xnum }, + 42: { f: parsebool }, + 43: { f: parsebool }, + 47: { f: parse_FilePass }, + 49: { f: parse_Font }, + 51: { f: parseuint16 }, + 60: {}, + 61: { f: parse_Window1 }, + 64: { f: parsebool }, + 65: { f: parse_Pane }, + 66: { f: parseuint16 }, + 77: {}, + 80: {}, + 81: {}, + 82: {}, + 85: { f: parseuint16 }, + 89: {}, + 90: {}, + 91: {}, + 92: { f: parse_WriteAccess }, + 93: { f: parse_Obj }, + 94: {}, + 95: { f: parsebool }, + 96: {}, + 97: {}, + 99: { f: parsebool }, + 125: { f: parse_ColInfo }, + 128: { f: parse_Guts }, + 129: { f: parse_WsBool }, + 130: { f: parseuint16 }, + 131: { f: parsebool }, + 132: { f: parsebool }, + 133: { f: parse_BoundSheet8 }, + 134: {}, + 140: { f: parse_Country }, + 141: { f: parseuint16 }, + 144: {}, + 146: { f: parse_Palette }, + 151: {}, + 152: {}, + 153: {}, + 154: {}, + 155: {}, + 156: { f: parseuint16 }, + 157: {}, + 158: {}, + 160: { f: parse_Scl }, + 161: { f: parse_Setup }, + 174: {}, + 175: {}, + 176: {}, + 177: {}, + 178: {}, + 180: {}, + 181: {}, + 182: {}, + 184: {}, + 185: {}, + 189: { f: parse_MulRk }, + 190: { f: parse_MulBlank }, + 193: { f: parsenoop2 }, + 197: {}, + 198: {}, + 199: {}, + 200: {}, + 201: {}, + 202: { f: parsebool }, + 203: {}, + 204: {}, + 205: {}, + 206: {}, + 207: {}, + 208: {}, + 209: {}, + 210: {}, + 211: {}, + 213: {}, + 215: {}, + 216: {}, + 217: {}, + 218: { f: parseuint16 }, + 220: {}, + 221: { f: parsebool }, + 222: {}, + 224: { f: parse_XF }, + 225: { f: parse_InterfaceHdr }, + 226: { f: parsenoop2 }, + 227: {}, + 229: { f: parse_MergeCells }, + 233: {}, + 235: {}, + 236: {}, + 237: {}, + 239: {}, + 240: {}, + 241: {}, + 242: {}, + 244: {}, + 245: {}, + 246: {}, + 247: {}, + 248: {}, + 249: {}, + 251: {}, + 252: { f: parse_SST }, + 253: { f: parse_LabelSst }, + 255: { f: parse_ExtSST }, + 256: {}, + 259: {}, + 290: {}, + 311: {}, + 312: {}, + 315: {}, + 317: { f: parseuint16a }, + 318: {}, + 319: {}, + 320: {}, + 330: {}, + 331: {}, + 333: {}, + 334: {}, + 335: {}, + 336: {}, + 337: {}, + 338: {}, + 339: {}, + 340: {}, + 351: {}, + 352: { f: parsebool }, + 353: { f: parsenoop2 }, + 401: {}, + 402: {}, + 403: {}, + 404: {}, + 405: {}, + 406: {}, + 407: {}, + 408: {}, + 425: {}, + 426: {}, + 427: {}, + 428: {}, + 429: {}, + 430: { f: parse_SupBook }, + 431: { f: parsebool }, + 432: {}, + 433: {}, + 434: {}, + 437: {}, + 438: { f: parse_TxO }, + 439: { f: parsebool }, + 440: { f: parse_HLink }, + 441: {}, + 442: { f: parse_XLUnicodeString }, + 443: {}, + 444: { f: parseuint16 }, + 445: {}, + 446: {}, + 448: { f: parsenoop2 }, + 449: { + f: parse_RecalcId, + r: 2 + }, + 450: { f: parsenoop2 }, + 512: { f: parse_Dimensions }, + 513: { f: parse_Blank }, + 515: { f: parse_Number }, + 516: { f: parse_Label }, + 517: { f: parse_BoolErr }, + 519: { f: parse_String }, + 520: { f: parse_Row }, + 523: {}, + 545: { f: parse_Array }, + 549: { f: parse_DefaultRowHeight }, + 566: {}, + 574: { f: parse_Window2 }, + 638: { f: parse_RK }, + 659: {}, + 1048: {}, + 1054: { f: parse_Format }, + 1084: {}, + 1212: { f: parse_ShrFmla }, + 2048: { f: parse_HLinkTooltip }, + 2049: {}, + 2050: {}, + 2051: {}, + 2052: {}, + 2053: {}, + 2054: {}, + 2055: {}, + 2056: {}, + 2057: { f: parse_BOF }, + 2058: {}, + 2059: {}, + 2060: {}, + 2061: {}, + 2062: {}, + 2063: {}, + 2064: {}, + 2066: {}, + 2067: {}, + 2128: {}, + 2129: {}, + 2130: {}, + 2131: {}, + 2132: {}, + 2133: {}, + 2134: {}, + 2135: {}, + 2136: {}, + 2137: {}, + 2138: {}, + 2146: {}, + 2147: { r: 12 }, + 2148: {}, + 2149: {}, + 2150: {}, + 2151: { f: parsenoop2 }, + 2152: {}, + 2154: {}, + 2155: {}, + 2156: {}, + 2161: {}, + 2162: {}, + 2164: {}, + 2165: {}, + 2166: {}, + 2167: {}, + 2168: {}, + 2169: {}, + 2170: {}, + 2171: {}, + 2172: { + f: parse_XFCRC, + r: 12 + }, + 2173: { + f: parse_XFExt, + r: 12 + }, + 2174: {}, + 2175: {}, + 2180: {}, + 2181: {}, + 2182: {}, + 2183: {}, + 2184: {}, + 2185: {}, + 2186: {}, + 2187: {}, + 2188: { + f: parsebool, + r: 12 + }, + 2189: {}, + 2190: { r: 12 }, + 2191: {}, + 2192: {}, + 2194: {}, + 2195: {}, + 2196: { + f: parse_NameCmt, + r: 12 + }, + 2197: {}, + 2198: { + f: parse_Theme, + r: 12 + }, + 2199: {}, + 2200: {}, + 2201: {}, + 2202: { + f: parse_MTRSettings, + r: 12 + }, + 2203: { f: parsenoop2 }, + 2204: {}, + 2205: {}, + 2206: {}, + 2207: {}, + 2211: { f: parse_ForceFullCalculation }, + 2212: {}, + 2213: {}, + 2214: {}, + 2215: {}, + 4097: {}, + 4098: {}, + 4099: {}, + 4102: {}, + 4103: {}, + 4105: {}, + 4106: {}, + 4107: {}, + 4108: {}, + 4109: {}, + 4116: {}, + 4117: {}, + 4118: {}, + 4119: {}, + 4120: {}, + 4121: {}, + 4122: {}, + 4123: {}, + 4124: {}, + 4125: {}, + 4126: {}, + 4127: {}, + 4128: {}, + 4129: {}, + 4130: {}, + 4132: {}, + 4133: {}, + 4134: { f: parseuint16 }, + 4135: {}, + 4146: {}, + 4147: {}, + 4148: {}, + 4149: {}, + 4154: {}, + 4156: {}, + 4157: {}, + 4158: {}, + 4159: {}, + 4160: {}, + 4161: {}, + 4163: {}, + 4164: { f: parse_ShtProps }, + 4165: {}, + 4166: {}, + 4168: {}, + 4170: {}, + 4171: {}, + 4174: {}, + 4175: {}, + 4176: {}, + 4177: {}, + 4187: {}, + 4188: { f: parse_ClrtClient }, + 4189: {}, + 4191: {}, + 4192: {}, + 4193: {}, + 4194: {}, + 4195: {}, + 4196: {}, + 4197: {}, + 4198: {}, + 4199: {}, + 4200: {}, + 0: { f: parse_Dimensions }, + 1: {}, + 2: { f: parse_BIFF2INT }, + 3: { f: parse_BIFF2NUM }, + 4: { f: parse_BIFF2STR }, + 5: { f: parse_BIFF2BOOLERR }, + 7: { f: parse_BIFF2STRING }, + 8: {}, + 9: { f: parse_BOF }, + 11: {}, + 22: { f: parseuint16 }, + 30: { f: parse_BIFF2Format }, + 31: {}, + 32: {}, + 33: { f: parse_Array }, + 36: {}, + 37: { f: parse_DefaultRowHeight }, + 50: { f: parse_BIFF2FONTXTRA }, + 62: {}, + 52: {}, + 67: { f: parse_BIFF2XF }, + 68: { f: parseuint16 }, + 69: {}, + 86: {}, + 126: {}, + 127: { f: parse_ImData }, + 135: {}, + 136: {}, + 137: {}, + 143: { f: parse_BIFF4SheetInfo }, + 145: {}, + 148: {}, + 149: {}, + 150: {}, + 169: {}, + 171: {}, + 188: {}, + 191: {}, + 192: {}, + 194: {}, + 195: {}, + 214: { f: parse_RString }, + 223: {}, + 234: {}, + 354: {}, + 421: {}, + 518: { f: parse_Formula }, + 521: { f: parse_BOF }, + 536: { f: parse_Lbl }, + 547: { f: parse_ExternName }, + 561: {}, + 579: { f: parse_BIFF3XF }, + 1030: { f: parse_Formula }, + 1033: { f: parse_BOF }, + 1091: { f: parse_BIFF4XF }, + 2157: {}, + 2163: {}, + 2177: {}, + 2240: {}, + 2241: {}, + 2242: {}, + 2243: {}, + 2244: {}, + 2245: {}, + 2246: {}, + 2247: {}, + 2248: {}, + 2249: {}, + 2250: {}, + 2251: {}, + 2262: { r: 12 }, + 101: {}, + 102: {}, + 105: {}, + 106: {}, + 107: {}, + 109: {}, + 112: {}, + 114: {}, + 29282: {} + }; + b8oid = 1, b8ocnts = []; + HTML_BEGIN = "SheetJS Table Export"; + HTML_END = ""; + write_styles_ods = /* @__PURE__ */ (function() { + var master_styles = [ + "", + "", + "", + "", + "", + "", + "", + "" + ].join(""); + var payload = "" + master_styles + ""; + return function wso() { + return XML_HEADER + payload; + }; + })(); + write_content_ods = /* @__PURE__ */ (function() { + var write_text_p = function(text$2, span) { + return escapexml(text$2).replace(/ +/g, function($$) { + return ""; + }).replace(/\t/g, "").replace(/\n/g, span ? "" : "").replace(/^ /, "").replace(/ $/, ""); + }; + var null_cell_xml = " \n"; + var write_ws = function(ws, wb, i$7, opts, nfs, date1904) { + var o$10 = []; + o$10.push(" \n"); + var R$1 = 0, C$2 = 0, range = decode_range(ws["!ref"] || "A1"); + var marr = ws["!merges"] || [], mi = 0; + var dense = ws["!data"] != null; + if (ws["!cols"]) { + for (C$2 = 0; C$2 <= range.e.c; ++C$2) o$10.push(" \n"); + } + var H$1 = "", ROWS = ws["!rows"] || []; + for (R$1 = 0; R$1 < range.s.r; ++R$1) { + H$1 = ROWS[R$1] ? " table:style-name=\"ro" + ROWS[R$1].ods + "\"" : ""; + o$10.push(" \n"); + } + for (; R$1 <= range.e.r; ++R$1) { + H$1 = ROWS[R$1] ? " table:style-name=\"ro" + ROWS[R$1].ods + "\"" : ""; + o$10.push(" \n"); + for (C$2 = 0; C$2 < range.s.c; ++C$2) o$10.push(null_cell_xml); + for (; C$2 <= range.e.c; ++C$2) { + var skip = false, ct = {}, textp = ""; + for (mi = 0; mi != marr.length; ++mi) { + if (marr[mi].s.c > C$2) continue; + if (marr[mi].s.r > R$1) continue; + if (marr[mi].e.c < C$2) continue; + if (marr[mi].e.r < R$1) continue; + if (marr[mi].s.c != C$2 || marr[mi].s.r != R$1) skip = true; + ct["table:number-columns-spanned"] = marr[mi].e.c - marr[mi].s.c + 1; + ct["table:number-rows-spanned"] = marr[mi].e.r - marr[mi].s.r + 1; + break; + } + if (skip) { + o$10.push(" \n"); + continue; + } + var ref = encode_cell({ + r: R$1, + c: C$2 + }), cell = dense ? (ws["!data"][R$1] || [])[C$2] : ws[ref]; + if (cell && cell.f) { + ct["table:formula"] = escapexml(csf_to_ods_formula(cell.f)); + if (cell.F) { + if (cell.F.slice(0, ref.length) == ref) { + var _Fref = decode_range(cell.F); + ct["table:number-matrix-columns-spanned"] = _Fref.e.c - _Fref.s.c + 1; + ct["table:number-matrix-rows-spanned"] = _Fref.e.r - _Fref.s.r + 1; + } + } + } + if (!cell) { + o$10.push(null_cell_xml); + continue; + } + switch (cell.t) { + case "b": + textp = cell.v ? "TRUE" : "FALSE"; + ct["office:value-type"] = "boolean"; + ct["office:boolean-value"] = cell.v ? "true" : "false"; + break; + case "n": + if (!isFinite(cell.v)) { + if (isNaN(cell.v)) { + textp = "#NUM!"; + ct["table:formula"] = "of:=#NUM!"; + } else { + textp = "#DIV/0!"; + ct["table:formula"] = "of:=" + (cell.v < 0 ? "-" : "") + "1/0"; + } + ct["office:string-value"] = ""; + ct["office:value-type"] = "string"; + ct["calcext:value-type"] = "error"; + } else { + textp = cell.w || String(cell.v || 0); + ct["office:value-type"] = "float"; + ct["office:value"] = cell.v || 0; + } + break; + case "s": + case "str": + textp = cell.v == null ? "" : cell.v; + ct["office:value-type"] = "string"; + break; + case "d": + textp = cell.w || parseDate(cell.v, date1904).toISOString(); + ct["office:value-type"] = "date"; + ct["office:date-value"] = parseDate(cell.v, date1904).toISOString(); + ct["table:style-name"] = "ce1"; + break; + default: + o$10.push(null_cell_xml); + continue; + } + var text_p = write_text_p(textp); + if (cell.l && cell.l.Target) { + var _tgt = cell.l.Target; + _tgt = _tgt.charAt(0) == "#" ? "#" + csf_to_ods_3D(_tgt.slice(1)) : _tgt; + if (_tgt.charAt(0) != "#" && !_tgt.match(/^\w+:/)) _tgt = "../" + _tgt; + text_p = writextag("text:a", text_p, { "xlink:href": _tgt.replace(/&/g, "&") }); + } + if (nfs[cell.z]) ct["table:style-name"] = "ce" + nfs[cell.z].slice(1); + var payload = writextag("text:p", text_p, {}); + if (cell.c) { + var acreator = "", apayload = "", aprops = {}; + for (var ci = 0; ci < cell.c.length; ++ci) { + if (!acreator && cell.c[ci].a) acreator = cell.c[ci].a; + apayload += "" + write_text_p(cell.c[ci].t) + ""; + } + if (!cell.c.hidden) aprops["office:display"] = true; + payload = writextag("office:annotation", apayload, aprops) + payload; + } + o$10.push(" " + writextag("table:table-cell", payload, ct) + "\n"); + } + o$10.push(" \n"); + } + if ((wb.Workbook || {}).Names) o$10.push(write_names_ods(wb.Workbook.Names, wb.SheetNames, i$7)); + o$10.push(" \n"); + return o$10.join(""); + }; + var write_automatic_styles_ods = function(o$10, wb) { + o$10.push(" \n"); + var cidx = 0; + wb.SheetNames.map(function(n$9) { + return wb.Sheets[n$9]; + }).forEach(function(ws) { + if (!ws) return; + if (ws["!cols"]) { + for (var C$2 = 0; C$2 < ws["!cols"].length; ++C$2) if (ws["!cols"][C$2]) { + var colobj = ws["!cols"][C$2]; + if (colobj.width == null && colobj.wpx == null && colobj.wch == null) continue; + process_col(colobj); + colobj.ods = cidx; + var w$2 = ws["!cols"][C$2].wpx + "px"; + o$10.push(" \n"); + o$10.push(" \n"); + o$10.push(" \n"); + ++cidx; + } + } + }); + var ridx = 0; + wb.SheetNames.map(function(n$9) { + return wb.Sheets[n$9]; + }).forEach(function(ws) { + if (!ws) return; + if (ws["!rows"]) { + for (var R$1 = 0; R$1 < ws["!rows"].length; ++R$1) if (ws["!rows"][R$1]) { + ws["!rows"][R$1].ods = ridx; + var h$5 = ws["!rows"][R$1].hpx + "px"; + o$10.push(" \n"); + o$10.push(" \n"); + o$10.push(" \n"); + ++ridx; + } + } + }); + o$10.push(" \n"); + o$10.push(" \n"); + o$10.push(" \n"); + o$10.push(" \n"); + o$10.push(" \n"); + o$10.push(" /\n"); + o$10.push(" \n"); + o$10.push(" /\n"); + o$10.push(" \n"); + o$10.push(" \n"); + var nfs = {}; + var nfi = 69; + wb.SheetNames.map(function(n$9) { + return wb.Sheets[n$9]; + }).forEach(function(ws) { + if (!ws) return; + var dense = ws["!data"] != null; + if (!ws["!ref"]) return; + var range = decode_range(ws["!ref"]); + for (var R$1 = 0; R$1 <= range.e.r; ++R$1) for (var C$2 = 0; C$2 <= range.e.c; ++C$2) { + var c$7 = dense ? (ws["!data"][R$1] || [])[C$2] : ws[encode_cell({ + r: R$1, + c: C$2 + })]; + if (!c$7 || !c$7.z || c$7.z.toLowerCase() == "general") continue; + if (!nfs[c$7.z]) { + var out = write_number_format_ods(c$7.z, "N" + nfi); + if (out) { + nfs[c$7.z] = "N" + nfi; + ++nfi; + o$10.push(out + "\n"); + } + } + } + }); + o$10.push(" \n"); + keys(nfs).forEach(function(nf) { + o$10.push("\n"); + }); + o$10.push(" \n"); + return nfs; + }; + return function wcx(wb, opts) { + var o$10 = [XML_HEADER]; + var attr = wxt_helper({ + "xmlns:office": "urn:oasis:names:tc:opendocument:xmlns:office:1.0", + "xmlns:table": "urn:oasis:names:tc:opendocument:xmlns:table:1.0", + "xmlns:style": "urn:oasis:names:tc:opendocument:xmlns:style:1.0", + "xmlns:text": "urn:oasis:names:tc:opendocument:xmlns:text:1.0", + "xmlns:draw": "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0", + "xmlns:fo": "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0", + "xmlns:xlink": "http://www.w3.org/1999/xlink", + "xmlns:dc": "http://purl.org/dc/elements/1.1/", + "xmlns:meta": "urn:oasis:names:tc:opendocument:xmlns:meta:1.0", + "xmlns:number": "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0", + "xmlns:presentation": "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0", + "xmlns:svg": "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0", + "xmlns:chart": "urn:oasis:names:tc:opendocument:xmlns:chart:1.0", + "xmlns:dr3d": "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0", + "xmlns:math": "http://www.w3.org/1998/Math/MathML", + "xmlns:form": "urn:oasis:names:tc:opendocument:xmlns:form:1.0", + "xmlns:script": "urn:oasis:names:tc:opendocument:xmlns:script:1.0", + "xmlns:ooo": "http://openoffice.org/2004/office", + "xmlns:ooow": "http://openoffice.org/2004/writer", + "xmlns:oooc": "http://openoffice.org/2004/calc", + "xmlns:dom": "http://www.w3.org/2001/xml-events", + "xmlns:xforms": "http://www.w3.org/2002/xforms", + "xmlns:xsd": "http://www.w3.org/2001/XMLSchema", + "xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", + "xmlns:sheet": "urn:oasis:names:tc:opendocument:sh33tjs:1.0", + "xmlns:rpt": "http://openoffice.org/2005/report", + "xmlns:of": "urn:oasis:names:tc:opendocument:xmlns:of:1.2", + "xmlns:xhtml": "http://www.w3.org/1999/xhtml", + "xmlns:grddl": "http://www.w3.org/2003/g/data-view#", + "xmlns:tableooo": "http://openoffice.org/2009/table", + "xmlns:drawooo": "http://openoffice.org/2010/draw", + "xmlns:calcext": "urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0", + "xmlns:loext": "urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0", + "xmlns:field": "urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0", + "xmlns:formx": "urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0", + "xmlns:css3t": "http://www.w3.org/TR/css3-text/", + "office:version": "1.2" + }); + var fods = wxt_helper({ + "xmlns:config": "urn:oasis:names:tc:opendocument:xmlns:config:1.0", + "office:mimetype": "application/vnd.oasis.opendocument.spreadsheet" + }); + if (opts.bookType == "fods") { + o$10.push("\n"); + o$10.push(write_meta_ods().replace(/]*?>/, "").replace(/<\/office:document-meta>/, "") + "\n"); + } else o$10.push("\n"); + var nfs = write_automatic_styles_ods(o$10, wb); + o$10.push(" \n"); + o$10.push(" \n"); + if (((wb.Workbook || {}).WBProps || {}).date1904) o$10.push(" \n \n \n"); + for (var i$7 = 0; i$7 != wb.SheetNames.length; ++i$7) o$10.push(write_ws(wb.Sheets[wb.SheetNames[i$7]], wb, i$7, opts, nfs, ((wb.Workbook || {}).WBProps || {}).date1904)); + if ((wb.Workbook || {}).Names) o$10.push(write_names_ods(wb.Workbook.Names, wb.SheetNames, -1)); + o$10.push(" \n"); + o$10.push(" \n"); + if (opts.bookType == "fods") o$10.push(""); + else o$10.push(""); + return o$10.join(""); + }; + })(); + subarray = function() { + try { + if (typeof Uint8Array == "undefined") return "slice"; + if (typeof Uint8Array.prototype.subarray == "undefined") return "slice"; + if (typeof Buffer !== "undefined") { + if (typeof Buffer.prototype.subarray == "undefined") return "slice"; + if ((typeof Buffer.from == "function" ? Buffer.from([72, 62]) : new Buffer([72, 62])) instanceof Uint8Array) return "subarray"; + return "slice"; + } + return "subarray"; + } catch (e$10) { + return "slice"; + } + }(); + numbers_lut_new = function() { + return { + sst: [], + rsst: [], + ofmt: [], + nfmt: [], + fmla: [], + ferr: [], + cmnt: [] + }; + }; + USE_WIDE_ROWS = true; + qreg = /"/g; + utils$1 = { + encode_col, + encode_row, + encode_cell, + encode_range, + decode_col, + decode_row, + split_cell, + decode_cell, + decode_range, + format_cell, + sheet_new, + sheet_add_aoa, + sheet_add_json, + sheet_add_dom, + aoa_to_sheet, + json_to_sheet, + table_to_sheet: parse_dom_table, + table_to_book, + sheet_to_csv, + sheet_to_txt, + sheet_to_json, + sheet_to_html, + sheet_to_formulae, + sheet_to_row_object_array: sheet_to_json, + sheet_get_cell: ws_get_cell_stub, + book_new, + book_append_sheet, + book_set_sheet_visibility, + cell_set_number_format, + cell_set_hyperlink, + cell_set_internal_link, + cell_add_comment, + sheet_set_array_formula, + consts: { + SHEET_VISIBLE: 0, + SHEET_HIDDEN: 1, + SHEET_VERY_HIDDEN: 2 + } + }; + ; + __stream = { + to_json: write_json_stream, + to_html: write_html_stream, + to_csv: write_csv_stream, + to_xlml: write_xlml_stream, + set_readable + }; + version$3 = XLSX.version; + xlsx_default = { + parse_xlscfb, + parse_zip, + read: readSync, + readFile: readFileSync, + readFileSync, + write: writeSync, + writeFile: writeFileSync, + writeFileSync, + writeFileAsync, + writeXLSX: writeSyncXLSX, + writeFileXLSX: writeFileSyncXLSX, + utils: utils$1, + set_fs, + set_cptable, + stream: __stream, + SSF, + CFB + }; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/utils/attachment-utils.js +/** +* Load an attachment from various sources +* @param source - URL string, File, Blob, or ArrayBuffer +* @param fileName - Optional filename override +* @returns Promise +* @throws Error if loading fails +*/ +async function loadAttachment(source$4, fileName) { + let arrayBuffer; + let detectedFileName = fileName || "unnamed"; + let mimeType = "application/octet-stream"; + let size = 0; + if (typeof source$4 === "string") { + const response = await fetch(source$4); + if (!response.ok) { + throw new Error(i18n("Failed to fetch file")); + } + arrayBuffer = await response.arrayBuffer(); + size = arrayBuffer.byteLength; + mimeType = response.headers.get("content-type") || mimeType; + if (!fileName) { + const urlParts = source$4.split("/"); + detectedFileName = urlParts[urlParts.length - 1] || "document"; + } + } else if (source$4 instanceof File) { + arrayBuffer = await source$4.arrayBuffer(); + size = source$4.size; + mimeType = source$4.type || mimeType; + detectedFileName = fileName || source$4.name; + } else if (source$4 instanceof Blob) { + arrayBuffer = await source$4.arrayBuffer(); + size = source$4.size; + mimeType = source$4.type || mimeType; + } else if (source$4 instanceof ArrayBuffer) { + arrayBuffer = source$4; + size = source$4.byteLength; + } else { + throw new Error(i18n("Invalid source type")); + } + const uint8Array = new Uint8Array(arrayBuffer); + let binary = ""; + const chunkSize = 32768; + for (let i$7 = 0; i$7 < uint8Array.length; i$7 += chunkSize) { + const chunk = uint8Array.slice(i$7, i$7 + chunkSize); + binary += String.fromCharCode(...chunk); + } + const base64Content = btoa(binary); + const id = `${detectedFileName}_${Date.now()}_${Math.random()}`; + if (mimeType === "application/pdf" || detectedFileName.toLowerCase().endsWith(".pdf")) { + const { extractedText, preview } = await processPdf(arrayBuffer, detectedFileName); + return { + id, + type: "document", + fileName: detectedFileName, + mimeType: "application/pdf", + size, + content: base64Content, + extractedText, + preview + }; + } + if (mimeType === "application/vnd.openxmlformats-officedocument.wordprocessingml.document" || detectedFileName.toLowerCase().endsWith(".docx")) { + const { extractedText } = await processDocx(arrayBuffer, detectedFileName); + return { + id, + type: "document", + fileName: detectedFileName, + mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + size, + content: base64Content, + extractedText + }; + } + if (mimeType === "application/vnd.openxmlformats-officedocument.presentationml.presentation" || detectedFileName.toLowerCase().endsWith(".pptx")) { + const { extractedText } = await processPptx(arrayBuffer, detectedFileName); + return { + id, + type: "document", + fileName: detectedFileName, + mimeType: "application/vnd.openxmlformats-officedocument.presentationml.presentation", + size, + content: base64Content, + extractedText + }; + } + const excelMimeTypes = ["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.ms-excel"]; + if (excelMimeTypes.includes(mimeType) || detectedFileName.toLowerCase().endsWith(".xlsx") || detectedFileName.toLowerCase().endsWith(".xls")) { + const { extractedText } = await processExcel(arrayBuffer, detectedFileName); + return { + id, + type: "document", + fileName: detectedFileName, + mimeType: mimeType.startsWith("application/vnd") ? mimeType : "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + size, + content: base64Content, + extractedText + }; + } + if (mimeType.startsWith("image/")) { + return { + id, + type: "image", + fileName: detectedFileName, + mimeType, + size, + content: base64Content, + preview: base64Content + }; + } + const textExtensions = [ + ".txt", + ".md", + ".json", + ".xml", + ".html", + ".css", + ".js", + ".ts", + ".jsx", + ".tsx", + ".yml", + ".yaml" + ]; + const isTextFile = mimeType.startsWith("text/") || textExtensions.some((ext) => detectedFileName.toLowerCase().endsWith(ext)); + if (isTextFile) { + const decoder = new TextDecoder(); + const text$2 = decoder.decode(arrayBuffer); + return { + id, + type: "document", + fileName: detectedFileName, + mimeType: mimeType.startsWith("text/") ? mimeType : "text/plain", + size, + content: base64Content, + extractedText: text$2 + }; + } + throw new Error(`Unsupported file type: ${mimeType}`); +} +async function processPdf(arrayBuffer, fileName) { + let pdf = null; + try { + pdf = await getDocument({ data: arrayBuffer }).promise; + let extractedText = ``; + for (let i$7 = 1; i$7 <= pdf.numPages; i$7++) { + const page = await pdf.getPage(i$7); + const textContent = await page.getTextContent(); + const pageText = textContent.items.map((item) => item.str).filter((str) => str.trim()).join(" "); + extractedText += `\n\n${pageText}\n`; + } + extractedText += "\n"; + const preview = await generatePdfPreview(pdf); + return { + extractedText, + preview + }; + } catch (error$2) { + console.error("Error processing PDF:", error$2); + throw new Error(`Failed to process PDF: ${String(error$2)}`); + } finally { + if (pdf) { + pdf.destroy(); + } + } +} +async function generatePdfPreview(pdf) { + try { + const page = await pdf.getPage(1); + const viewport = page.getViewport({ scale: 1 }); + const scale = Math.min(160 / viewport.width, 160 / viewport.height); + const scaledViewport = page.getViewport({ scale }); + const canvas = document.createElement("canvas"); + const context = canvas.getContext("2d"); + if (!context) { + return undefined; + } + canvas.height = scaledViewport.height; + canvas.width = scaledViewport.width; + const renderContext = { + canvasContext: context, + viewport: scaledViewport, + canvas + }; + await page.render(renderContext).promise; + return canvas.toDataURL("image/png").split(",")[1]; + } catch (error$2) { + console.error("Error generating PDF preview:", error$2); + return undefined; + } +} +async function processDocx(arrayBuffer, fileName) { + try { + const wordDoc = await parseAsync(arrayBuffer); + let extractedText = `\n\n`; + const body = wordDoc.documentPart?.body; + if (body?.children) { + const texts = []; + for (const element of body.children) { + const text$2 = extractTextFromElement(element); + if (text$2) { + texts.push(text$2); + } + } + extractedText += texts.join("\n"); + } + extractedText += `\n\n`; + return { extractedText }; + } catch (error$2) { + console.error("Error processing DOCX:", error$2); + throw new Error(`Failed to process DOCX: ${String(error$2)}`); + } +} +function extractTextFromElement(element) { + let text$2 = ""; + const elementType = element.type?.toLowerCase() || ""; + if (elementType === "paragraph" && element.children) { + for (const child of element.children) { + const childType = child.type?.toLowerCase() || ""; + if (childType === "run" && child.children) { + for (const textChild of child.children) { + const textType = textChild.type?.toLowerCase() || ""; + if (textType === "text") { + text$2 += textChild.text || ""; + } + } + } else if (childType === "text") { + text$2 += child.text || ""; + } + } + } else if (elementType === "table") { + if (element.children) { + const tableTexts = []; + for (const row of element.children) { + const rowType = row.type?.toLowerCase() || ""; + if (rowType === "tablerow" && row.children) { + const rowTexts = []; + for (const cell of row.children) { + const cellType = cell.type?.toLowerCase() || ""; + if (cellType === "tablecell" && cell.children) { + const cellTexts = []; + for (const cellElement of cell.children) { + const cellText = extractTextFromElement(cellElement); + if (cellText) cellTexts.push(cellText); + } + if (cellTexts.length > 0) rowTexts.push(cellTexts.join(" ")); + } + } + if (rowTexts.length > 0) tableTexts.push(rowTexts.join(" | ")); + } + } + if (tableTexts.length > 0) { + text$2 = "\n[Table]\n" + tableTexts.join("\n") + "\n[/Table]\n"; + } + } + } else if (element.children && Array.isArray(element.children)) { + const childTexts = []; + for (const child of element.children) { + const childText = extractTextFromElement(child); + if (childText) childTexts.push(childText); + } + text$2 = childTexts.join(" "); + } + return text$2.trim(); +} +async function processPptx(arrayBuffer, fileName) { + try { + const zip = await import_jszip_min.default.loadAsync(arrayBuffer); + let extractedText = ``; + const slideFiles = Object.keys(zip.files).filter((name) => name.match(/ppt\/slides\/slide\d+\.xml$/)).sort((a$2, b$3) => { + const numA = Number.parseInt(a$2.match(/slide(\d+)\.xml$/)?.[1] || "0", 10); + const numB = Number.parseInt(b$3.match(/slide(\d+)\.xml$/)?.[1] || "0", 10); + return numA - numB; + }); + for (let i$7 = 0; i$7 < slideFiles.length; i$7++) { + const slideFile = zip.file(slideFiles[i$7]); + if (slideFile) { + const slideXml = await slideFile.async("text"); + const textMatches = slideXml.match(/]*>([^<]+)<\/a:t>/g); + if (textMatches) { + extractedText += `\n`; + const slideTexts = textMatches.map((match) => { + const textMatch = match.match(/]*>([^<]+)<\/a:t>/); + return textMatch ? textMatch[1] : ""; + }).filter((t$6) => t$6.trim()); + if (slideTexts.length > 0) { + extractedText += "\n" + slideTexts.join("\n"); + } + extractedText += "\n"; + } + } + } + const notesFiles = Object.keys(zip.files).filter((name) => name.match(/ppt\/notesSlides\/notesSlide\d+\.xml$/)).sort((a$2, b$3) => { + const numA = Number.parseInt(a$2.match(/notesSlide(\d+)\.xml$/)?.[1] || "0", 10); + const numB = Number.parseInt(b$3.match(/notesSlide(\d+)\.xml$/)?.[1] || "0", 10); + return numA - numB; + }); + if (notesFiles.length > 0) { + extractedText += "\n"; + for (const noteFile of notesFiles) { + const file = zip.file(noteFile); + if (file) { + const noteXml = await file.async("text"); + const textMatches = noteXml.match(/]*>([^<]+)<\/a:t>/g); + if (textMatches) { + const noteTexts = textMatches.map((match) => { + const textMatch = match.match(/]*>([^<]+)<\/a:t>/); + return textMatch ? textMatch[1] : ""; + }).filter((t$6) => t$6.trim()); + if (noteTexts.length > 0) { + const slideNum = noteFile.match(/notesSlide(\d+)\.xml$/)?.[1]; + extractedText += `\n[Slide ${slideNum} notes]: ${noteTexts.join(" ")}`; + } + } + } + } + extractedText += "\n"; + } + extractedText += "\n"; + return { extractedText }; + } catch (error$2) { + console.error("Error processing PPTX:", error$2); + throw new Error(`Failed to process PPTX: ${String(error$2)}`); + } +} +async function processExcel(arrayBuffer, fileName) { + try { + const workbook = readSync(arrayBuffer, { type: "array" }); + let extractedText = ``; + for (const [index, sheetName] of workbook.SheetNames.entries()) { + const worksheet = workbook.Sheets[sheetName]; + const csvText = utils$1.sheet_to_csv(worksheet); + extractedText += `\n\n${csvText}\n`; + } + extractedText += "\n"; + return { extractedText }; + } catch (error$2) { + console.error("Error processing Excel:", error$2); + throw new Error(`Failed to process Excel: ${String(error$2)}`); + } +} +var import_jszip_min; +var init_attachment_utils = __esmMin((() => { + init_docx_preview(); + import_jszip_min = /* @__PURE__ */ __toESM(require_jszip_min(), 1); + init_pdf(); + init_xlsx(); + init_i18n(); + GlobalWorkerOptions.workerSrc = new URL("pdfjs-dist/build/pdf.worker.min.mjs", import.meta.url).toString(); +})); + +//#endregion +//#region node_modules/.pnpm/lit@3.3.1/node_modules/lit/html.js +var init_html = __esmMin((() => { + init_lit_html(); +})); + +//#endregion +//#region node_modules/.pnpm/@mariozechner+mini-lit@0.2.1_lit@3.3.1_tailwindcss@4.1.17/node_modules/@mariozechner/mini-lit/dist/ModeToggle.js +var __decorate$26, ModeToggle; +var init_ModeToggle = __esmMin((() => { + init_lit(); + init_decorators(); + init_i18n$1(); + __decorate$26 = void 0 && (void 0).__decorate || function(decorators, target, key, desc) { + var c$7 = arguments.length, r$10 = c$7 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d$5; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r$10 = Reflect.decorate(decorators, target, key, desc); + else for (var i$7 = decorators.length - 1; i$7 >= 0; i$7--) if (d$5 = decorators[i$7]) r$10 = (c$7 < 3 ? d$5(r$10) : c$7 > 3 ? d$5(target, key, r$10) : d$5(target, key)) || r$10; + return c$7 > 3 && r$10 && Object.defineProperty(target, key, r$10), r$10; + }; + ModeToggle = class ModeToggle$1 extends i { + constructor() { + super(...arguments); + this.modes = [i18n("Mode 1"), i18n("Mode 2")]; + this.selectedIndex = 0; + } + createRenderRoot() { + return this; + } + setMode(index) { + if (this.selectedIndex !== index && index >= 0 && index < this.modes.length) { + this.selectedIndex = index; + this.dispatchEvent(new CustomEvent("mode-change", { + detail: { + index, + mode: this.modes[index] + }, + bubbles: true + })); + } + } + render() { + if (this.modes.length < 2) return x``; + return x` +
+ ${this.modes.map((mode, index) => x` + + `)} +
+ `; + } + }; + __decorate$26([n$1({ type: Array })], ModeToggle.prototype, "modes", void 0); + __decorate$26([n$1({ type: Number })], ModeToggle.prototype, "selectedIndex", void 0); + ModeToggle = __decorate$26([t("mode-toggle")], ModeToggle); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/dialogs/AttachmentOverlay.js +var __decorate$25, AttachmentOverlay; +var init_AttachmentOverlay = __esmMin((() => { + init_ModeToggle(); + init_dist(); + init_Button(); + init_docx_preview(); + init_lit(); + init_decorators(); + init_lucide(); + init_pdf(); + init_xlsx(); + init_i18n(); + __decorate$25 = void 0 && (void 0).__decorate || function(decorators, target, key, desc) { + var c$7 = arguments.length, r$10 = c$7 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d$5; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r$10 = Reflect.decorate(decorators, target, key, desc); + else for (var i$7 = decorators.length - 1; i$7 >= 0; i$7--) if (d$5 = decorators[i$7]) r$10 = (c$7 < 3 ? d$5(r$10) : c$7 > 3 ? d$5(target, key, r$10) : d$5(target, key)) || r$10; + return c$7 > 3 && r$10 && Object.defineProperty(target, key, r$10), r$10; + }; + AttachmentOverlay = class AttachmentOverlay extends i { + constructor() { + super(...arguments); + this.showExtractedText = false; + this.error = null; + this.currentLoadingTask = null; + this.handleBackdropClick = () => { + this.close(); + }; + this.handleDownload = () => { + if (!this.attachment) return; + const byteCharacters = atob(this.attachment.content); + const byteNumbers = new Array(byteCharacters.length); + for (let i$7 = 0; i$7 < byteCharacters.length; i$7++) { + byteNumbers[i$7] = byteCharacters.charCodeAt(i$7); + } + const byteArray = new Uint8Array(byteNumbers); + const blob = new Blob([byteArray], { type: this.attachment.mimeType }); + const url = URL.createObjectURL(blob); + const a$2 = document.createElement("a"); + a$2.href = url; + a$2.download = this.attachment.fileName; + document.body.appendChild(a$2); + a$2.click(); + document.body.removeChild(a$2); + URL.revokeObjectURL(url); + }; + } + createRenderRoot() { + return this; + } + static open(attachment, onClose) { + const overlay = new AttachmentOverlay(); + overlay.attachment = attachment; + overlay.onCloseCallback = onClose; + document.body.appendChild(overlay); + overlay.setupEventListeners(); + } + setupEventListeners() { + this.boundHandleKeyDown = (e$10) => { + if (e$10.key === "Escape") { + this.close(); + } + }; + window.addEventListener("keydown", this.boundHandleKeyDown); + } + close() { + this.cleanup(); + if (this.boundHandleKeyDown) { + window.removeEventListener("keydown", this.boundHandleKeyDown); + } + this.onCloseCallback?.(); + this.remove(); + } + getFileType() { + if (!this.attachment) return "text"; + if (this.attachment.type === "image") return "image"; + if (this.attachment.mimeType === "application/pdf") return "pdf"; + if (this.attachment.mimeType?.includes("wordprocessingml")) return "docx"; + if (this.attachment.mimeType?.includes("presentationml") || this.attachment.fileName.toLowerCase().endsWith(".pptx")) return "pptx"; + if (this.attachment.mimeType?.includes("spreadsheetml") || this.attachment.mimeType?.includes("ms-excel") || this.attachment.fileName.toLowerCase().endsWith(".xlsx") || this.attachment.fileName.toLowerCase().endsWith(".xls")) return "excel"; + return "text"; + } + getFileTypeLabel() { + const type = this.getFileType(); + switch (type) { + case "pdf": return i18n("PDF"); + case "docx": return i18n("Document"); + case "pptx": return i18n("Presentation"); + case "excel": return i18n("Spreadsheet"); + default: return ""; + } + } + cleanup() { + this.showExtractedText = false; + this.error = null; + if (this.currentLoadingTask) { + this.currentLoadingTask.destroy(); + this.currentLoadingTask = null; + } + } + render() { + if (!this.attachment) return x``; + return x` + +
+ +
e$10.stopPropagation()}> +
+
+ ${this.attachment.fileName} +
+
+ ${this.renderToggle()} + ${Button({ + variant: "ghost", + size: "icon", + onClick: this.handleDownload, + children: icon(Download, "sm"), + className: "h-8 w-8" + })} + ${Button({ + variant: "ghost", + size: "icon", + onClick: () => this.close(), + children: icon(X, "sm"), + className: "h-8 w-8" + })} +
+
+
+ + +
e$10.stopPropagation()}> + ${this.renderContent()} +
+
+ `; + } + renderToggle() { + if (!this.attachment) return x``; + const fileType = this.getFileType(); + const hasExtractedText = !!this.attachment.extractedText; + const showToggle = fileType !== "image" && fileType !== "text" && fileType !== "pptx" && hasExtractedText; + if (!showToggle) return x``; + const fileTypeLabel = this.getFileTypeLabel(); + return x` + { + e$10.stopPropagation(); + this.showExtractedText = e$10.detail.index === 1; + this.error = null; + }} + > + `; + } + renderContent() { + if (!this.attachment) return x``; + if (this.error) { + return x` +
+
${i18n("Error loading file")}
+
${this.error}
+
+ `; + } + return this.renderFileContent(); + } + renderFileContent() { + if (!this.attachment) return x``; + const fileType = this.getFileType(); + if (this.showExtractedText && fileType !== "image") { + return x` +
+
${this.attachment.extractedText || i18n("No text content available")}
+
+ `; + } + switch (fileType) { + case "image": { + const imageUrl = `data:${this.attachment.mimeType};base64,${this.attachment.content}`; + return x` + ${this.attachment.fileName} + `; + } + case "pdf": return x` +
+ `; + case "docx": return x` +
+ `; + case "excel": return x`
`; + case "pptx": return x` +
+ `; + default: return x` +
+
${this.attachment.extractedText || i18n("No content available")}
+
+ `; + } + } + async updated(changedProperties) { + super.updated(changedProperties); + if ((changedProperties.has("attachment") || changedProperties.has("showExtractedText")) && this.attachment && !this.showExtractedText && !this.error) { + const fileType = this.getFileType(); + switch (fileType) { + case "pdf": + await this.renderPdf(); + break; + case "docx": + await this.renderDocx(); + break; + case "excel": + await this.renderExcel(); + break; + case "pptx": + await this.renderExtractedText(); + break; + } + } + } + async renderPdf() { + const container = this.querySelector("#pdf-container"); + if (!container || !this.attachment) return; + let pdf = null; + try { + const arrayBuffer = this.base64ToArrayBuffer(this.attachment.content); + if (this.currentLoadingTask) { + this.currentLoadingTask.destroy(); + } + this.currentLoadingTask = getDocument({ data: arrayBuffer }); + pdf = await this.currentLoadingTask.promise; + this.currentLoadingTask = null; + container.innerHTML = ""; + const wrapper = document.createElement("div"); + wrapper.className = ""; + container.appendChild(wrapper); + for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) { + const page = await pdf.getPage(pageNum); + const pageContainer = document.createElement("div"); + pageContainer.className = "mb-4 last:mb-0"; + const canvas = document.createElement("canvas"); + const context = canvas.getContext("2d"); + const viewport = page.getViewport({ scale: 1.5 }); + canvas.height = viewport.height; + canvas.width = viewport.width; + canvas.className = "w-full max-w-full h-auto block mx-auto bg-white rounded shadow-sm border border-border"; + if (context) { + context.fillStyle = "white"; + context.fillRect(0, 0, canvas.width, canvas.height); + } + await page.render({ + canvasContext: context, + viewport, + canvas + }).promise; + pageContainer.appendChild(canvas); + if (pageNum < pdf.numPages) { + const separator = document.createElement("div"); + separator.className = "h-px bg-border my-4"; + pageContainer.appendChild(separator); + } + wrapper.appendChild(pageContainer); + } + } catch (error$2) { + console.error("Error rendering PDF:", error$2); + this.error = error$2?.message || i18n("Failed to load PDF"); + } finally { + if (pdf) { + pdf.destroy(); + } + } + } + async renderDocx() { + const container = this.querySelector("#docx-container"); + if (!container || !this.attachment) return; + try { + const arrayBuffer = this.base64ToArrayBuffer(this.attachment.content); + container.innerHTML = ""; + const wrapper = document.createElement("div"); + wrapper.className = "docx-wrapper-custom"; + container.appendChild(wrapper); + await renderAsync(arrayBuffer, wrapper, undefined, { + className: "docx", + inWrapper: true, + ignoreWidth: true, + ignoreHeight: false, + ignoreFonts: false, + breakPages: true, + ignoreLastRenderedPageBreak: true, + experimental: false, + trimXmlDeclaration: true, + useBase64URL: false, + renderHeaders: true, + renderFooters: true, + renderFootnotes: true, + renderEndnotes: true + }); + const style = document.createElement("style"); + style.textContent = ` + #docx-container { + padding: 0; + } + + #docx-container .docx-wrapper-custom { + max-width: 100%; + overflow-x: auto; + } + + #docx-container .docx-wrapper { + max-width: 100% !important; + margin: 0 !important; + background: transparent !important; + padding: 0em !important; + } + + #docx-container .docx-wrapper > section.docx { + box-shadow: none !important; + border: none !important; + border-radius: 0 !important; + margin: 0 !important; + padding: 2em !important; + background: white !important; + color: black !important; + max-width: 100% !important; + width: 100% !important; + min-width: 0 !important; + overflow-x: auto !important; + } + + /* Fix tables and wide content */ + #docx-container table { + max-width: 100% !important; + width: auto !important; + overflow-x: auto !important; + display: block !important; + } + + #docx-container img { + max-width: 100% !important; + height: auto !important; + } + + /* Fix paragraphs and text */ + #docx-container p, + #docx-container span, + #docx-container div { + max-width: 100% !important; + word-wrap: break-word !important; + overflow-wrap: break-word !important; + } + + /* Hide page breaks in web view */ + #docx-container .docx-page-break { + display: none !important; + } + `; + container.appendChild(style); + } catch (error$2) { + console.error("Error rendering DOCX:", error$2); + this.error = error$2?.message || i18n("Failed to load document"); + } + } + async renderExcel() { + const container = this.querySelector("#excel-container"); + if (!container || !this.attachment) return; + try { + const arrayBuffer = this.base64ToArrayBuffer(this.attachment.content); + const workbook = readSync(arrayBuffer, { type: "array" }); + container.innerHTML = ""; + const wrapper = document.createElement("div"); + wrapper.className = "overflow-auto h-full flex flex-col"; + container.appendChild(wrapper); + if (workbook.SheetNames.length > 1) { + const tabContainer = document.createElement("div"); + tabContainer.className = "flex gap-2 mb-4 border-b border-border sticky top-0 bg-card z-10"; + const sheetContents = []; + workbook.SheetNames.forEach((sheetName, index) => { + const tab = document.createElement("button"); + tab.textContent = sheetName; + tab.className = index === 0 ? "px-4 py-2 text-sm font-medium border-b-2 border-primary text-primary" : "px-4 py-2 text-sm font-medium text-muted-foreground hover:text-foreground hover:border-b-2 hover:border-border transition-colors"; + const sheetDiv = document.createElement("div"); + sheetDiv.style.display = index === 0 ? "flex" : "none"; + sheetDiv.className = "flex-1 overflow-auto"; + sheetDiv.appendChild(this.renderExcelSheet(workbook.Sheets[sheetName], sheetName)); + sheetContents.push(sheetDiv); + tab.onclick = () => { + tabContainer.querySelectorAll("button").forEach((btn, btnIndex) => { + if (btnIndex === index) { + btn.className = "px-4 py-2 text-sm font-medium border-b-2 border-primary text-primary"; + } else { + btn.className = "px-4 py-2 text-sm font-medium text-muted-foreground hover:text-foreground hover:border-b-2 hover:border-border transition-colors"; + } + }); + sheetContents.forEach((content, contentIndex) => { + content.style.display = contentIndex === index ? "flex" : "none"; + }); + }; + tabContainer.appendChild(tab); + }); + wrapper.appendChild(tabContainer); + sheetContents.forEach((content) => { + wrapper.appendChild(content); + }); + } else { + const sheetName = workbook.SheetNames[0]; + wrapper.appendChild(this.renderExcelSheet(workbook.Sheets[sheetName], sheetName)); + } + } catch (error$2) { + console.error("Error rendering Excel:", error$2); + this.error = error$2?.message || i18n("Failed to load spreadsheet"); + } + } + renderExcelSheet(worksheet, sheetName) { + const sheetDiv = document.createElement("div"); + const htmlTable = utils$1.sheet_to_html(worksheet, { id: `sheet-${sheetName}` }); + const tempDiv = document.createElement("div"); + tempDiv.innerHTML = htmlTable; + const table = tempDiv.querySelector("table"); + if (table) { + table.className = "w-full border-collapse text-foreground"; + table.querySelectorAll("td, th").forEach((cell) => { + const cellEl = cell; + cellEl.className = "border border-border px-3 py-2 text-sm text-left"; + }); + const headerCells = table.querySelectorAll("thead th, tr:first-child td"); + if (headerCells.length > 0) { + headerCells.forEach((th) => { + const thEl = th; + thEl.className = "border border-border px-3 py-2 text-sm font-semibold bg-muted text-foreground sticky top-0"; + }); + } + table.querySelectorAll("tbody tr:nth-child(even)").forEach((row) => { + const rowEl = row; + rowEl.className = "bg-muted/30"; + }); + sheetDiv.appendChild(table); + } + return sheetDiv; + } + base64ToArrayBuffer(base64) { + const binaryString = atob(base64); + const bytes = new Uint8Array(binaryString.length); + for (let i$7 = 0; i$7 < binaryString.length; i$7++) { + bytes[i$7] = binaryString.charCodeAt(i$7); + } + return bytes.buffer; + } + async renderExtractedText() { + const container = this.querySelector("#pptx-container"); + if (!container || !this.attachment) return; + try { + container.innerHTML = ""; + const wrapper = document.createElement("div"); + wrapper.className = "p-6 overflow-auto"; + const pre = document.createElement("pre"); + pre.className = "whitespace-pre-wrap text-sm text-foreground font-mono"; + pre.textContent = this.attachment.extractedText || i18n("No text content available"); + wrapper.appendChild(pre); + container.appendChild(wrapper); + } catch (error$2) { + console.error("Error rendering extracted text:", error$2); + this.error = error$2?.message || i18n("Failed to display text content"); + } + } + }; + __decorate$25([r()], AttachmentOverlay.prototype, "attachment", void 0); + __decorate$25([r()], AttachmentOverlay.prototype, "showExtractedText", void 0); + __decorate$25([r()], AttachmentOverlay.prototype, "error", void 0); + if (!customElements.get("attachment-overlay")) { + customElements.define("attachment-overlay", AttachmentOverlay); + } +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/components/AttachmentTile.js +var __decorate$24, AttachmentTile; +var init_AttachmentTile = __esmMin((() => { + init_icons(); + init_lit(); + init_decorators(); + init_html(); + init_lucide(); + init_AttachmentOverlay(); + init_i18n(); + __decorate$24 = void 0 && (void 0).__decorate || function(decorators, target, key, desc) { + var c$7 = arguments.length, r$10 = c$7 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d$5; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r$10 = Reflect.decorate(decorators, target, key, desc); + else for (var i$7 = decorators.length - 1; i$7 >= 0; i$7--) if (d$5 = decorators[i$7]) r$10 = (c$7 < 3 ? d$5(r$10) : c$7 > 3 ? d$5(target, key, r$10) : d$5(target, key)) || r$10; + return c$7 > 3 && r$10 && Object.defineProperty(target, key, r$10), r$10; + }; + AttachmentTile = class AttachmentTile$1 extends i { + constructor() { + super(...arguments); + this.showDelete = false; + this.handleClick = () => { + AttachmentOverlay.open(this.attachment); + }; + } + createRenderRoot() { + return this; + } + connectedCallback() { + super.connectedCallback(); + this.style.display = "block"; + this.classList.add("max-h-16"); + } + render() { + const hasPreview = !!this.attachment.preview; + const isImage$1 = this.attachment.type === "image"; + const isPdf = this.attachment.mimeType === "application/pdf"; + const isDocx = this.attachment.mimeType?.includes("wordprocessingml") || this.attachment.fileName.toLowerCase().endsWith(".docx"); + const isPptx = this.attachment.mimeType?.includes("presentationml") || this.attachment.fileName.toLowerCase().endsWith(".pptx"); + const isExcel = this.attachment.mimeType?.includes("spreadsheetml") || this.attachment.fileName.toLowerCase().endsWith(".xlsx") || this.attachment.fileName.toLowerCase().endsWith(".xls"); + const getDocumentIcon = () => { + if (isExcel) return icon(FileSpreadsheet, "md"); + return icon(FileText, "md"); + }; + return x` +
+ ${hasPreview ? x` +
+ ${this.attachment.fileName} + ${isPdf ? x` + +
+
${i18n("PDF")}
+
+ ` : ""} +
+ ` : x` + +
+ ${getDocumentIcon()} +
+ ${this.attachment.fileName.length > 10 ? this.attachment.fileName.substring(0, 8) + "..." : this.attachment.fileName} +
+
+ `} + ${this.showDelete ? x` + + ` : ""} +
+ `; + } + }; + __decorate$24([n$1({ type: Object })], AttachmentTile.prototype, "attachment", void 0); + __decorate$24([n$1({ type: Boolean })], AttachmentTile.prototype, "showDelete", void 0); + __decorate$24([n$1()], AttachmentTile.prototype, "onDelete", void 0); + AttachmentTile = __decorate$24([t("attachment-tile")], AttachmentTile); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/components/MessageEditor.js +var __decorate$23, MessageEditor; +var init_MessageEditor = __esmMin((() => { + init_dist(); + init_Button(); + init_Select(); + init_lit(); + init_decorators(); + init_ref$2(); + init_lucide(); + init_attachment_utils(); + init_i18n(); + init_AttachmentTile(); + __decorate$23 = void 0 && (void 0).__decorate || function(decorators, target, key, desc) { + var c$7 = arguments.length, r$10 = c$7 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d$5; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r$10 = Reflect.decorate(decorators, target, key, desc); + else for (var i$7 = decorators.length - 1; i$7 >= 0; i$7--) if (d$5 = decorators[i$7]) r$10 = (c$7 < 3 ? d$5(r$10) : c$7 > 3 ? d$5(target, key, r$10) : d$5(target, key)) || r$10; + return c$7 > 3 && r$10 && Object.defineProperty(target, key, r$10), r$10; + }; + MessageEditor = class MessageEditor$1 extends i { + constructor() { + super(...arguments); + this._value = ""; + this.textareaRef = e(); + this.isStreaming = false; + this.thinkingLevel = "off"; + this.showAttachmentButton = true; + this.showModelSelector = true; + this.showThinkingSelector = true; + this.attachments = []; + this.maxFiles = 10; + this.maxFileSize = 20 * 1024 * 1024; + this.acceptedTypes = "image/*,application/pdf,.docx,.pptx,.xlsx,.xls,.txt,.md,.json,.xml,.html,.css,.js,.ts,.jsx,.tsx,.yml,.yaml"; + this.processingFiles = false; + this.isDragging = false; + this.fileInputRef = e(); + this.handleTextareaInput = (e$10) => { + const textarea = e$10.target; + this.value = textarea.value; + this.onInput?.(this.value); + }; + this.handleKeyDown = (e$10) => { + if (e$10.key === "Enter" && !e$10.shiftKey) { + e$10.preventDefault(); + if (!this.isStreaming && !this.processingFiles && (this.value.trim() || this.attachments.length > 0)) { + this.handleSend(); + } + } else if (e$10.key === "Escape" && this.isStreaming) { + e$10.preventDefault(); + this.onAbort?.(); + } + }; + this.handlePaste = async (e$10) => { + const items = e$10.clipboardData?.items; + if (!items) return; + const imageFiles = []; + for (let i$7 = 0; i$7 < items.length; i$7++) { + const item = items[i$7]; + if (item.type.startsWith("image/")) { + const file = item.getAsFile(); + if (file) { + imageFiles.push(file); + } + } + } + if (imageFiles.length > 0) { + e$10.preventDefault(); + if (imageFiles.length + this.attachments.length > this.maxFiles) { + alert(`Maximum ${this.maxFiles} files allowed`); + return; + } + this.processingFiles = true; + const newAttachments = []; + for (const file of imageFiles) { + try { + if (file.size > this.maxFileSize) { + alert(`Image exceeds maximum size of ${Math.round(this.maxFileSize / 1024 / 1024)}MB`); + continue; + } + const attachment = await loadAttachment(file); + newAttachments.push(attachment); + } catch (error$2) { + console.error("Error processing pasted image:", error$2); + alert(`Failed to process pasted image: ${String(error$2)}`); + } + } + this.attachments = [...this.attachments, ...newAttachments]; + this.onFilesChange?.(this.attachments); + this.processingFiles = false; + } + }; + this.handleSend = () => { + this.onSend?.(this.value, this.attachments); + }; + this.handleAttachmentClick = () => { + this.fileInputRef.value?.click(); + }; + this.handleDragOver = (e$10) => { + e$10.preventDefault(); + e$10.stopPropagation(); + if (!this.isDragging) { + this.isDragging = true; + } + }; + this.handleDragLeave = (e$10) => { + e$10.preventDefault(); + e$10.stopPropagation(); + const rect = e$10.currentTarget.getBoundingClientRect(); + const x$2 = e$10.clientX; + const y$3 = e$10.clientY; + if (x$2 <= rect.left || x$2 >= rect.right || y$3 <= rect.top || y$3 >= rect.bottom) { + this.isDragging = false; + } + }; + this.handleDrop = async (e$10) => { + e$10.preventDefault(); + e$10.stopPropagation(); + this.isDragging = false; + const files = Array.from(e$10.dataTransfer?.files || []); + if (files.length === 0) return; + if (files.length + this.attachments.length > this.maxFiles) { + alert(`Maximum ${this.maxFiles} files allowed`); + return; + } + this.processingFiles = true; + const newAttachments = []; + for (const file of files) { + try { + if (file.size > this.maxFileSize) { + alert(`${file.name} exceeds maximum size of ${Math.round(this.maxFileSize / 1024 / 1024)}MB`); + continue; + } + const attachment = await loadAttachment(file); + newAttachments.push(attachment); + } catch (error$2) { + console.error(`Error processing ${file.name}:`, error$2); + alert(`Failed to process ${file.name}: ${String(error$2)}`); + } + } + this.attachments = [...this.attachments, ...newAttachments]; + this.onFilesChange?.(this.attachments); + this.processingFiles = false; + }; + } + get value() { + return this._value; + } + set value(val$1) { + const oldValue = this._value; + this._value = val$1; + this.requestUpdate("value", oldValue); + } + createRenderRoot() { + return this; + } + async handleFilesSelected(e$10) { + const input = e$10.target; + const files = Array.from(input.files || []); + if (files.length === 0) return; + if (files.length + this.attachments.length > this.maxFiles) { + alert(`Maximum ${this.maxFiles} files allowed`); + input.value = ""; + return; + } + this.processingFiles = true; + const newAttachments = []; + for (const file of files) { + try { + if (file.size > this.maxFileSize) { + alert(`${file.name} exceeds maximum size of ${Math.round(this.maxFileSize / 1024 / 1024)}MB`); + continue; + } + const attachment = await loadAttachment(file); + newAttachments.push(attachment); + } catch (error$2) { + console.error(`Error processing ${file.name}:`, error$2); + alert(`Failed to process ${file.name}: ${String(error$2)}`); + } + } + this.attachments = [...this.attachments, ...newAttachments]; + this.onFilesChange?.(this.attachments); + this.processingFiles = false; + input.value = ""; + } + removeFile(fileId) { + this.attachments = this.attachments.filter((f$4) => f$4.id !== fileId); + this.onFilesChange?.(this.attachments); + } + firstUpdated() { + const textarea = this.textareaRef.value; + if (textarea) { + textarea.focus(); + } + } + render() { + const model = this.currentModel; + const supportsThinking = model?.reasoning === true; + return x` +
+ + ${this.isDragging ? x` +
+
${i18n("Drop files here")}
+
+ ` : ""} + + + ${this.attachments.length > 0 ? x` +
+ ${this.attachments.map((attachment) => x` + this.removeFile(attachment.id)} + > + `)} +
+ ` : ""} + + + + + + + +
+ +
+ ${this.showAttachmentButton ? this.processingFiles ? x` +
+ ${icon(LoaderCircle, "sm", "animate-spin text-muted-foreground")} +
+ ` : x` + ${Button({ + variant: "ghost", + size: "icon", + className: "h-8 w-8", + onClick: this.handleAttachmentClick, + children: icon(Paperclip, "sm") + })} + ` : ""} + ${supportsThinking && this.showThinkingSelector ? x` + ${Select({ + value: this.thinkingLevel, + placeholder: i18n("Off"), + options: [ + { + value: "off", + label: i18n("Off"), + icon: icon(Brain, "sm") + }, + { + value: "minimal", + label: i18n("Minimal"), + icon: icon(Brain, "sm") + }, + { + value: "low", + label: i18n("Low"), + icon: icon(Brain, "sm") + }, + { + value: "medium", + label: i18n("Medium"), + icon: icon(Brain, "sm") + }, + { + value: "high", + label: i18n("High"), + icon: icon(Brain, "sm") + } + ], + onChange: (value) => { + this.onThinkingChange?.(value); + }, + width: "80px", + size: "sm", + variant: "ghost", + fitContent: true + })} + ` : ""} +
+ + +
+ ${this.showModelSelector && this.currentModel ? x` + ${Button({ + variant: "ghost", + size: "sm", + onClick: () => { + this.textareaRef.value?.focus(); + requestAnimationFrame(() => { + this.onModelSelect?.(); + }); + }, + children: x` + ${icon(Sparkles, "sm")} + ${this.currentModel.id} + `, + className: "h-8 text-xs truncate" + })} + ` : ""} + ${this.isStreaming ? x` + ${Button({ + variant: "ghost", + size: "icon", + onClick: this.onAbort, + children: icon(Square, "sm"), + className: "h-8 w-8" + })} + ` : x` + ${Button({ + variant: "ghost", + size: "icon", + onClick: this.handleSend, + disabled: !this.value.trim() && this.attachments.length === 0 || this.processingFiles, + children: x`
${icon(Send, "sm")}
`, + className: "h-8 w-8" + })} + `} +
+
+
+ `; + } + }; + __decorate$23([n$1()], MessageEditor.prototype, "value", null); + __decorate$23([n$1()], MessageEditor.prototype, "isStreaming", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "currentModel", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "thinkingLevel", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "showAttachmentButton", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "showModelSelector", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "showThinkingSelector", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "onInput", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "onSend", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "onAbort", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "onModelSelect", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "onThinkingChange", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "onFilesChange", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "attachments", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "maxFiles", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "maxFileSize", void 0); + __decorate$23([n$1()], MessageEditor.prototype, "acceptedTypes", void 0); + __decorate$23([r()], MessageEditor.prototype, "processingFiles", void 0); + __decorate$23([r()], MessageEditor.prototype, "isDragging", void 0); + MessageEditor = __decorate$23([t("message-editor")], MessageEditor); +})); + +//#endregion +//#region node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/repeat.js +var u, c; +var init_repeat$1 = __esmMin((() => { + init_lit_html(); + init_directive(); + init_directive_helpers(); + u = (e$10, s$5, t$6) => { + const r$10 = new Map(); + for (let l$3 = s$5; l$3 <= t$6; l$3++) r$10.set(e$10[l$3], l$3); + return r$10; + }, c = e$2(class extends i$2 { + constructor(e$10) { + if (super(e$10), e$10.type !== t$1.CHILD) throw Error("repeat() can only be used in text expressions"); + } + dt(e$10, s$5, t$6) { + let r$10; + void 0 === t$6 ? t$6 = s$5 : void 0 !== s$5 && (r$10 = s$5); + const l$3 = [], o$10 = []; + let i$7 = 0; + for (const s$6 of e$10) l$3[i$7] = r$10 ? r$10(s$6, i$7) : i$7, o$10[i$7] = t$6(s$6, i$7), i$7++; + return { + values: o$10, + keys: l$3 + }; + } + render(e$10, s$5, t$6) { + return this.dt(e$10, s$5, t$6).values; + } + update(s$5, [t$6, r$10, c$7]) { + const d$5 = p(s$5), { values: p$3, keys: a$2 } = this.dt(t$6, r$10, c$7); + if (!Array.isArray(d$5)) return this.ut = a$2, p$3; + const h$5 = this.ut ??= [], v$3 = []; + let m$3, y$3, x$2 = 0, j$2 = d$5.length - 1, k$2 = 0, w$2 = p$3.length - 1; + for (; x$2 <= j$2 && k$2 <= w$2;) if (null === d$5[x$2]) x$2++; + else if (null === d$5[j$2]) j$2--; + else if (h$5[x$2] === a$2[k$2]) v$3[k$2] = v$1(d$5[x$2], p$3[k$2]), x$2++, k$2++; + else if (h$5[j$2] === a$2[w$2]) v$3[w$2] = v$1(d$5[j$2], p$3[w$2]), j$2--, w$2--; + else if (h$5[x$2] === a$2[w$2]) v$3[w$2] = v$1(d$5[x$2], p$3[w$2]), s(s$5, v$3[w$2 + 1], d$5[x$2]), x$2++, w$2--; + else if (h$5[j$2] === a$2[k$2]) v$3[k$2] = v$1(d$5[j$2], p$3[k$2]), s(s$5, d$5[x$2], d$5[j$2]), j$2--, k$2++; + else if (void 0 === m$3 && (m$3 = u(a$2, k$2, w$2), y$3 = u(h$5, x$2, j$2)), m$3.has(h$5[x$2])) if (m$3.has(h$5[j$2])) { + const e$10 = y$3.get(a$2[k$2]), t$7 = void 0 !== e$10 ? d$5[e$10] : null; + if (null === t$7) { + const e$11 = s(s$5, d$5[x$2]); + v$1(e$11, p$3[k$2]), v$3[k$2] = e$11; + } else v$3[k$2] = v$1(t$7, p$3[k$2]), s(s$5, d$5[x$2], t$7), d$5[e$10] = null; + k$2++; + } else M$1(d$5[j$2]), j$2--; + else M$1(d$5[x$2]), x$2++; + for (; k$2 <= w$2;) { + const e$10 = s(s$5, v$3[w$2 + 1]); + v$1(e$10, p$3[k$2]), v$3[k$2++] = e$10; + } + for (; x$2 <= j$2;) { + const e$10 = d$5[x$2++]; + null !== e$10 && M$1(e$10); + } + return this.ut = a$2, m$1(s$5, v$3), T$2; + } + }); +})); + +//#endregion +//#region node_modules/.pnpm/lit@3.3.1/node_modules/lit/directives/repeat.js +var init_repeat = __esmMin((() => { + init_repeat$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/components/message-renderer-registry.js +function registerMessageRenderer(role, renderer) { + messageRenderers.set(role, renderer); +} +function getMessageRenderer(role) { + return messageRenderers.get(role); +} +function renderMessage(message) { + return messageRenderers.get(message.role)?.render(message); +} +var messageRenderers; +var init_message_renderer_registry = __esmMin((() => { + messageRenderers = new Map(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/components/MessageList.js +var __decorate$22, MessageList; +var init_MessageList = __esmMin((() => { + init_lit(); + init_decorators(); + init_repeat(); + init_message_renderer_registry(); + __decorate$22 = void 0 && (void 0).__decorate || function(decorators, target, key, desc) { + var c$7 = arguments.length, r$10 = c$7 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d$5; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r$10 = Reflect.decorate(decorators, target, key, desc); + else for (var i$7 = decorators.length - 1; i$7 >= 0; i$7--) if (d$5 = decorators[i$7]) r$10 = (c$7 < 3 ? d$5(r$10) : c$7 > 3 ? d$5(target, key, r$10) : d$5(target, key)) || r$10; + return c$7 > 3 && r$10 && Object.defineProperty(target, key, r$10), r$10; + }; + MessageList = class extends i { + constructor() { + super(...arguments); + this.messages = []; + this.tools = []; + this.isStreaming = false; + } + createRenderRoot() { + return this; + } + connectedCallback() { + super.connectedCallback(); + this.style.display = "block"; + } + buildRenderItems() { + const resultByCallId = new Map(); + for (const message of this.messages) { + if (message.role === "toolResult") { + resultByCallId.set(message.toolCallId, message); + } + } + const items = []; + let index = 0; + for (const msg of this.messages) { + if (msg.role === "artifact") { + continue; + } + const customTemplate = renderMessage(msg); + if (customTemplate) { + items.push({ + key: `msg:${index}`, + template: customTemplate + }); + index++; + continue; + } + if (msg.role === "user") { + items.push({ + key: `msg:${index}`, + template: x`` + }); + index++; + } else if (msg.role === "assistant") { + const amsg = msg; + items.push({ + key: `msg:${index}`, + template: x`` + }); + index++; + } else {} + } + return items; + } + render() { + const items = this.buildRenderItems(); + return x`
+ ${c(items, (it) => it.key, (it) => it.template)} +
`; + } + }; + __decorate$22([n$1({ type: Array })], MessageList.prototype, "messages", void 0); + __decorate$22([n$1({ type: Array })], MessageList.prototype, "tools", void 0); + __decorate$22([n$1({ type: Object })], MessageList.prototype, "pendingToolCalls", void 0); + __decorate$22([n$1({ type: Boolean })], MessageList.prototype, "isStreaming", void 0); + __decorate$22([n$1({ attribute: false })], MessageList.prototype, "onCostClick", void 0); + if (!customElements.get("message-list")) { + customElements.define("message-list", MessageList); + } +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/guard/value.mjs +/** Returns true if this value has this property key */ +function HasPropertyKey$1(value, key) { + return key in value; +} +/** Returns true if this value is an async iterator */ +function IsAsyncIterator(value) { + return IsObject$1(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.asyncIterator in value; +} +/** Returns true if this value is an array */ +function IsArray(value) { + return Array.isArray(value); +} +/** Returns true if this value is bigint */ +function IsBigInt(value) { + return typeof value === "bigint"; +} +/** Returns true if this value is a boolean */ +function IsBoolean$1(value) { + return typeof value === "boolean"; +} +/** Returns true if this value is a Date object */ +function IsDate(value) { + return value instanceof globalThis.Date; +} +/** Returns true if this value is a function */ +function IsFunction(value) { + return typeof value === "function"; +} +/** Returns true if this value is an iterator */ +function IsIterator(value) { + return IsObject$1(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.iterator in value; +} +/** Returns true if this value is null */ +function IsNull(value) { + return value === null; +} +/** Returns true if this value is number */ +function IsNumber$1(value) { + return typeof value === "number"; +} +/** Returns true if this value is an object */ +function IsObject$1(value) { + return typeof value === "object" && value !== null; +} +/** Returns true if this value is RegExp */ +function IsRegExp$3(value) { + return value instanceof globalThis.RegExp; +} +/** Returns true if this value is string */ +function IsString(value) { + return typeof value === "string"; +} +/** Returns true if this value is symbol */ +function IsSymbol(value) { + return typeof value === "symbol"; +} +/** Returns true if this value is a Uint8Array */ +function IsUint8Array(value) { + return value instanceof globalThis.Uint8Array; +} +/** Returns true if this value is undefined */ +function IsUndefined(value) { + return value === undefined; +} +var init_value$1 = __esmMin((() => {})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/clone/value.mjs +function ArrayType(value) { + return value.map((value$1) => Visit$2(value$1)); +} +function DateType(value) { + return new Date(value.getTime()); +} +function Uint8ArrayType(value) { + return new Uint8Array(value); +} +function RegExpType(value) { + return new RegExp(value.source, value.flags); +} +function ObjectType(value) { + const result = {}; + for (const key of Object.getOwnPropertyNames(value)) { + result[key] = Visit$2(value[key]); + } + for (const key of Object.getOwnPropertySymbols(value)) { + result[key] = Visit$2(value[key]); + } + return result; +} +function Visit$2(value) { + return IsArray(value) ? ArrayType(value) : IsDate(value) ? DateType(value) : IsUint8Array(value) ? Uint8ArrayType(value) : IsRegExp$3(value) ? RegExpType(value) : IsObject$1(value) ? ObjectType(value) : value; +} +/** Clones a value */ +function Clone(value) { + return Visit$2(value); +} +var init_value = __esmMin((() => { + init_value$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/clone/type.mjs +/** Clones a Rest */ +function CloneRest(schemas) { + return schemas.map((schema) => CloneType(schema)); +} +/** Clones a Type */ +function CloneType(schema, options) { + return options === undefined ? Clone(schema) : Clone({ + ...options, + ...schema + }); +} +var init_type$5 = __esmMin((() => { + init_value(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/clone/index.mjs +var init_clone = __esmMin((() => { + init_type$5(); + init_value(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/value/guard/guard.mjs +/** Returns true if this value is an async iterator */ +function IsAsyncIterator$3(value) { + return IsObject$3(value) && globalThis.Symbol.asyncIterator in value; +} +/** Returns true if this value is an iterator */ +function IsIterator$3(value) { + return IsObject$3(value) && globalThis.Symbol.iterator in value; +} +/** Returns true if this value is not an instance of a class */ +function IsStandardObject(value) { + return IsObject$3(value) && (globalThis.Object.getPrototypeOf(value) === Object.prototype || globalThis.Object.getPrototypeOf(value) === null); +} +/** Returns true if this value is an instance of a class */ +function IsInstanceObject(value) { + return IsObject$3(value) && !IsArray$3(value) && IsFunction$3(value.constructor) && value.constructor.name !== "Object"; +} +/** Returns true if this value is a Promise */ +function IsPromise$2(value) { + return value instanceof globalThis.Promise; +} +/** Returns true if this value is a Date */ +function IsDate$3(value) { + return value instanceof Date && globalThis.Number.isFinite(value.getTime()); +} +/** Returns true if this value is an instance of Map */ +function IsMap(value) { + return value instanceof globalThis.Map; +} +/** Returns true if this value is an instance of Set */ +function IsSet(value) { + return value instanceof globalThis.Set; +} +/** Returns true if this value is RegExp */ +function IsRegExp$2(value) { + return value instanceof globalThis.RegExp; +} +/** Returns true if this value is a typed array */ +function IsTypedArray(value) { + return globalThis.ArrayBuffer.isView(value); +} +/** Returns true if the value is a Int8Array */ +function IsInt8Array(value) { + return value instanceof globalThis.Int8Array; +} +/** Returns true if the value is a Uint8Array */ +function IsUint8Array$3(value) { + return value instanceof globalThis.Uint8Array; +} +/** Returns true if the value is a Uint8ClampedArray */ +function IsUint8ClampedArray(value) { + return value instanceof globalThis.Uint8ClampedArray; +} +/** Returns true if the value is a Int16Array */ +function IsInt16Array(value) { + return value instanceof globalThis.Int16Array; +} +/** Returns true if the value is a Uint16Array */ +function IsUint16Array(value) { + return value instanceof globalThis.Uint16Array; +} +/** Returns true if the value is a Int32Array */ +function IsInt32Array(value) { + return value instanceof globalThis.Int32Array; +} +/** Returns true if the value is a Uint32Array */ +function IsUint32Array(value) { + return value instanceof globalThis.Uint32Array; +} +/** Returns true if the value is a Float32Array */ +function IsFloat32Array(value) { + return value instanceof globalThis.Float32Array; +} +/** Returns true if the value is a Float64Array */ +function IsFloat64Array(value) { + return value instanceof globalThis.Float64Array; +} +/** Returns true if the value is a BigInt64Array */ +function IsBigInt64Array(value) { + return value instanceof globalThis.BigInt64Array; +} +/** Returns true if the value is a BigUint64Array */ +function IsBigUint64Array(value) { + return value instanceof globalThis.BigUint64Array; +} +/** Returns true if this value has this property key */ +function HasPropertyKey(value, key) { + return key in value; +} +/** Returns true of this value is an object type */ +function IsObject$3(value) { + return value !== null && typeof value === "object"; +} +/** Returns true if this value is an array, but not a typed array */ +function IsArray$3(value) { + return globalThis.Array.isArray(value) && !globalThis.ArrayBuffer.isView(value); +} +/** Returns true if this value is an undefined */ +function IsUndefined$3(value) { + return value === undefined; +} +/** Returns true if this value is an null */ +function IsNull$3(value) { + return value === null; +} +/** Returns true if this value is an boolean */ +function IsBoolean$3(value) { + return typeof value === "boolean"; +} +/** Returns true if this value is an number */ +function IsNumber$3(value) { + return typeof value === "number"; +} +/** Returns true if this value is an integer */ +function IsInteger$2(value) { + return globalThis.Number.isInteger(value); +} +/** Returns true if this value is bigint */ +function IsBigInt$3(value) { + return typeof value === "bigint"; +} +/** Returns true if this value is string */ +function IsString$3(value) { + return typeof value === "string"; +} +/** Returns true if this value is a function */ +function IsFunction$3(value) { + return typeof value === "function"; +} +/** Returns true if this value is a symbol */ +function IsSymbol$3(value) { + return typeof value === "symbol"; +} +/** Returns true if this value is a value type such as number, string, boolean */ +function IsValueType(value) { + return IsBigInt$3(value) || IsBoolean$3(value) || IsNull$3(value) || IsNumber$3(value) || IsString$3(value) || IsSymbol$3(value) || IsUndefined$3(value); +} +var init_guard$2 = __esmMin((() => {})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/value/guard/index.mjs +var init_guard$1 = __esmMin((() => { + init_guard$2(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/system/policy.mjs +var TypeSystemPolicy; +var init_policy = __esmMin((() => { + init_guard$1(); + ; + (function(TypeSystemPolicy$1) { + /** + * Configures the instantiation behavior of TypeBox types. The `default` option assigns raw JavaScript + * references for embedded types, which may cause side effects if type properties are explicitly updated + * outside the TypeBox type builder. The `clone` option creates copies of any shared types upon creation, + * preventing unintended side effects. The `freeze` option applies `Object.freeze()` to the type, making + * it fully readonly and immutable. Implementations should use `default` whenever possible, as it is the + * fastest way to instantiate types. The default setting is `default`. + */ + TypeSystemPolicy$1.InstanceMode = "default"; + /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */ + TypeSystemPolicy$1.ExactOptionalPropertyTypes = false; + /** Sets whether arrays should be treated as a kind of objects. The default is `false` */ + TypeSystemPolicy$1.AllowArrayObject = false; + /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */ + TypeSystemPolicy$1.AllowNaN = false; + /** Sets whether `null` should validate for void types. The default is `false` */ + TypeSystemPolicy$1.AllowNullVoid = false; + /** Checks this value using the ExactOptionalPropertyTypes policy */ + function IsExactOptionalProperty(value, key) { + return TypeSystemPolicy$1.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined; + } + TypeSystemPolicy$1.IsExactOptionalProperty = IsExactOptionalProperty; + /** Checks this value using the AllowArrayObjects policy */ + function IsObjectLike(value) { + const isObject$1 = IsObject$3(value); + return TypeSystemPolicy$1.AllowArrayObject ? isObject$1 : isObject$1 && !IsArray$3(value); + } + TypeSystemPolicy$1.IsObjectLike = IsObjectLike; + /** Checks this value as a record using the AllowArrayObjects policy */ + function IsRecordLike(value) { + return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array); + } + TypeSystemPolicy$1.IsRecordLike = IsRecordLike; + /** Checks this value using the AllowNaN policy */ + function IsNumberLike(value) { + return TypeSystemPolicy$1.AllowNaN ? IsNumber$3(value) : Number.isFinite(value); + } + TypeSystemPolicy$1.IsNumberLike = IsNumberLike; + /** Checks this value using the AllowVoidNull policy */ + function IsVoidLike(value) { + const isUndefined = IsUndefined$3(value); + return TypeSystemPolicy$1.AllowNullVoid ? isUndefined || value === null : isUndefined; + } + TypeSystemPolicy$1.IsVoidLike = IsVoidLike; + })(TypeSystemPolicy || (TypeSystemPolicy = {})); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/create/immutable.mjs +function ImmutableArray(value) { + return globalThis.Object.freeze(value).map((value$1) => Immutable(value$1)); +} +function ImmutableDate(value) { + return value; +} +function ImmutableUint8Array(value) { + return value; +} +function ImmutableRegExp(value) { + return value; +} +function ImmutableObject(value) { + const result = {}; + for (const key of Object.getOwnPropertyNames(value)) { + result[key] = Immutable(value[key]); + } + for (const key of Object.getOwnPropertySymbols(value)) { + result[key] = Immutable(value[key]); + } + return globalThis.Object.freeze(result); +} +/** Specialized deep immutable value. Applies freeze recursively to the given value */ +function Immutable(value) { + return IsArray(value) ? ImmutableArray(value) : IsDate(value) ? ImmutableDate(value) : IsUint8Array(value) ? ImmutableUint8Array(value) : IsRegExp$3(value) ? ImmutableRegExp(value) : IsObject$1(value) ? ImmutableObject(value) : value; +} +var init_immutable = __esmMin((() => { + init_value$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/create/type.mjs +/** Creates TypeBox schematics using the configured InstanceMode */ +function CreateType(schema, options) { + const result = options !== undefined ? { + ...options, + ...schema + } : schema; + switch (TypeSystemPolicy.InstanceMode) { + case "freeze": return Immutable(result); + case "clone": return Clone(result); + default: return result; + } +} +var init_type$4 = __esmMin((() => { + init_policy(); + init_immutable(); + init_value(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/create/index.mjs +var init_create$1 = __esmMin((() => { + init_type$4(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/error/error.mjs +var TypeBoxError; +var init_error$1 = __esmMin((() => { + TypeBoxError = class extends Error { + constructor(message) { + super(message); + } + }; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/error/index.mjs +var init_error = __esmMin((() => { + init_error$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/symbols/symbols.mjs +var TransformKind, ReadonlyKind, OptionalKind, Hint, Kind; +var init_symbols$1 = __esmMin((() => { + TransformKind = Symbol.for("TypeBox.Transform"); + ReadonlyKind = Symbol.for("TypeBox.Readonly"); + OptionalKind = Symbol.for("TypeBox.Optional"); + Hint = Symbol.for("TypeBox.Hint"); + Kind = Symbol.for("TypeBox.Kind"); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/symbols/index.mjs +var init_symbols = __esmMin((() => { + init_symbols$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/guard/kind.mjs +/** `[Kind-Only]` Returns true if this value has a Readonly symbol */ +function IsReadonly(value) { + return IsObject$1(value) && value[ReadonlyKind] === "Readonly"; +} +/** `[Kind-Only]` Returns true if this value has a Optional symbol */ +function IsOptional(value) { + return IsObject$1(value) && value[OptionalKind] === "Optional"; +} +/** `[Kind-Only]` Returns true if the given value is TAny */ +function IsAny(value) { + return IsKindOf$1(value, "Any"); +} +/** `[Kind-Only]` Returns true if the given value is TArgument */ +function IsArgument$1(value) { + return IsKindOf$1(value, "Argument"); +} +/** `[Kind-Only]` Returns true if the given value is TArray */ +function IsArray$1(value) { + return IsKindOf$1(value, "Array"); +} +/** `[Kind-Only]` Returns true if the given value is TAsyncIterator */ +function IsAsyncIterator$1(value) { + return IsKindOf$1(value, "AsyncIterator"); +} +/** `[Kind-Only]` Returns true if the given value is TBigInt */ +function IsBigInt$1(value) { + return IsKindOf$1(value, "BigInt"); +} +/** `[Kind-Only]` Returns true if the given value is TBoolean */ +function IsBoolean(value) { + return IsKindOf$1(value, "Boolean"); +} +/** `[Kind-Only]` Returns true if the given value is TComputed */ +function IsComputed(value) { + return IsKindOf$1(value, "Computed"); +} +/** `[Kind-Only]` Returns true if the given value is TConstructor */ +function IsConstructor(value) { + return IsKindOf$1(value, "Constructor"); +} +/** `[Kind-Only]` Returns true if the given value is TDate */ +function IsDate$2(value) { + return IsKindOf$1(value, "Date"); +} +/** `[Kind-Only]` Returns true if the given value is TFunction */ +function IsFunction$1(value) { + return IsKindOf$1(value, "Function"); +} +/** `[Kind-Only]` Returns true if the given value is TInteger */ +function IsImport$1(value) { + return IsKindOf$1(value, "Import"); +} +/** `[Kind-Only]` Returns true if the given value is TInteger */ +function IsInteger(value) { + return IsKindOf$1(value, "Integer"); +} +/** `[Kind-Only]` Returns true if the given schema is TProperties */ +function IsProperties$1(value) { + return IsObject$1(value); +} +/** `[Kind-Only]` Returns true if the given value is TIntersect */ +function IsIntersect(value) { + return IsKindOf$1(value, "Intersect"); +} +/** `[Kind-Only]` Returns true if the given value is TIterator */ +function IsIterator$1(value) { + return IsKindOf$1(value, "Iterator"); +} +/** `[Kind-Only]` Returns true if the given value is a TKind with the given name. */ +function IsKindOf$1(value, kind) { + return IsObject$1(value) && Kind in value && value[Kind] === kind; +} +/** `[Kind-Only]` Returns true if the given value is TLiteral */ +function IsLiteralString$1(value) { + return IsLiteral(value) && IsString(value.const); +} +/** `[Kind-Only]` Returns true if the given value is TLiteral */ +function IsLiteralNumber$1(value) { + return IsLiteral(value) && IsNumber$1(value.const); +} +/** `[Kind-Only]` Returns true if the given value is TLiteral */ +function IsLiteralBoolean$1(value) { + return IsLiteral(value) && IsBoolean$1(value.const); +} +/** `[Kind-Only]` Returns true if the given value is TLiteralValue */ +function IsLiteralValue(value) { + return IsBoolean$1(value) || IsNumber$1(value) || IsString(value); +} +/** `[Kind-Only]` Returns true if the given value is TLiteral */ +function IsLiteral(value) { + return IsKindOf$1(value, "Literal"); +} +/** `[Kind-Only]` Returns true if the given value is a TMappedKey */ +function IsMappedKey(value) { + return IsKindOf$1(value, "MappedKey"); +} +/** `[Kind-Only]` Returns true if the given value is TMappedResult */ +function IsMappedResult(value) { + return IsKindOf$1(value, "MappedResult"); +} +/** `[Kind-Only]` Returns true if the given value is TNever */ +function IsNever(value) { + return IsKindOf$1(value, "Never"); +} +/** `[Kind-Only]` Returns true if the given value is TNot */ +function IsNot$1(value) { + return IsKindOf$1(value, "Not"); +} +/** `[Kind-Only]` Returns true if the given value is TNull */ +function IsNull$2(value) { + return IsKindOf$1(value, "Null"); +} +/** `[Kind-Only]` Returns true if the given value is TNumber */ +function IsNumber(value) { + return IsKindOf$1(value, "Number"); +} +/** `[Kind-Only]` Returns true if the given value is TObject */ +function IsObject(value) { + return IsKindOf$1(value, "Object"); +} +/** `[Kind-Only]` Returns true if the given value is TPromise */ +function IsPromise(value) { + return IsKindOf$1(value, "Promise"); +} +/** `[Kind-Only]` Returns true if the given value is TRecord */ +function IsRecord(value) { + return IsKindOf$1(value, "Record"); +} +/** `[Kind-Only]` Returns true if this value is TRecursive */ +function IsRecursive$1(value) { + return IsObject$1(value) && Hint in value && value[Hint] === "Recursive"; +} +/** `[Kind-Only]` Returns true if the given value is TRef */ +function IsRef(value) { + return IsKindOf$1(value, "Ref"); +} +/** `[Kind-Only]` Returns true if the given value is TRegExp */ +function IsRegExp(value) { + return IsKindOf$1(value, "RegExp"); +} +/** `[Kind-Only]` Returns true if the given value is TString */ +function IsString$1(value) { + return IsKindOf$1(value, "String"); +} +/** `[Kind-Only]` Returns true if the given value is TSymbol */ +function IsSymbol$2(value) { + return IsKindOf$1(value, "Symbol"); +} +/** `[Kind-Only]` Returns true if the given value is TTemplateLiteral */ +function IsTemplateLiteral(value) { + return IsKindOf$1(value, "TemplateLiteral"); +} +/** `[Kind-Only]` Returns true if the given value is TThis */ +function IsThis$1(value) { + return IsKindOf$1(value, "This"); +} +/** `[Kind-Only]` Returns true of this value is TTransform */ +function IsTransform(value) { + return IsObject$1(value) && TransformKind in value; +} +/** `[Kind-Only]` Returns true if the given value is TTuple */ +function IsTuple(value) { + return IsKindOf$1(value, "Tuple"); +} +/** `[Kind-Only]` Returns true if the given value is TUndefined */ +function IsUndefined$2(value) { + return IsKindOf$1(value, "Undefined"); +} +/** `[Kind-Only]` Returns true if the given value is TUnion */ +function IsUnion(value) { + return IsKindOf$1(value, "Union"); +} +/** `[Kind-Only]` Returns true if the given value is TUint8Array */ +function IsUint8Array$2(value) { + return IsKindOf$1(value, "Uint8Array"); +} +/** `[Kind-Only]` Returns true if the given value is TUnknown */ +function IsUnknown$1(value) { + return IsKindOf$1(value, "Unknown"); +} +/** `[Kind-Only]` Returns true if the given value is a raw TUnsafe */ +function IsUnsafe$1(value) { + return IsKindOf$1(value, "Unsafe"); +} +/** `[Kind-Only]` Returns true if the given value is TVoid */ +function IsVoid$1(value) { + return IsKindOf$1(value, "Void"); +} +/** `[Kind-Only]` Returns true if the given value is TKind */ +function IsKind$1(value) { + return IsObject$1(value) && Kind in value && IsString(value[Kind]); +} +/** `[Kind-Only]` Returns true if the given value is TSchema */ +function IsSchema(value) { + return IsAny(value) || IsArgument$1(value) || IsArray$1(value) || IsBoolean(value) || IsBigInt$1(value) || IsAsyncIterator$1(value) || IsComputed(value) || IsConstructor(value) || IsDate$2(value) || IsFunction$1(value) || IsInteger(value) || IsIntersect(value) || IsIterator$1(value) || IsLiteral(value) || IsMappedKey(value) || IsMappedResult(value) || IsNever(value) || IsNot$1(value) || IsNull$2(value) || IsNumber(value) || IsObject(value) || IsPromise(value) || IsRecord(value) || IsRef(value) || IsRegExp(value) || IsString$1(value) || IsSymbol$2(value) || IsTemplateLiteral(value) || IsThis$1(value) || IsTuple(value) || IsUndefined$2(value) || IsUnion(value) || IsUint8Array$2(value) || IsUnknown$1(value) || IsUnsafe$1(value) || IsVoid$1(value) || IsKind$1(value); +} +var init_kind = __esmMin((() => { + init_value$1(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/guard/type.mjs +function IsPattern(value) { + try { + new RegExp(value); + return true; + } catch { + return false; + } +} +function IsControlCharacterFree(value) { + if (!IsString(value)) return false; + for (let i$7 = 0; i$7 < value.length; i$7++) { + const code = value.charCodeAt(i$7); + if (code >= 7 && code <= 13 || code === 27 || code === 127) { + return false; + } + } + return true; +} +function IsAdditionalProperties(value) { + return IsOptionalBoolean(value) || IsSchema$1(value); +} +function IsOptionalBigInt(value) { + return IsUndefined(value) || IsBigInt(value); +} +function IsOptionalNumber(value) { + return IsUndefined(value) || IsNumber$1(value); +} +function IsOptionalBoolean(value) { + return IsUndefined(value) || IsBoolean$1(value); +} +function IsOptionalString(value) { + return IsUndefined(value) || IsString(value); +} +function IsOptionalPattern(value) { + return IsUndefined(value) || IsString(value) && IsControlCharacterFree(value) && IsPattern(value); +} +function IsOptionalFormat(value) { + return IsUndefined(value) || IsString(value) && IsControlCharacterFree(value); +} +function IsOptionalSchema(value) { + return IsUndefined(value) || IsSchema$1(value); +} +/** Returns true if this value has a Readonly symbol */ +function IsReadonly$1(value) { + return IsObject$1(value) && value[ReadonlyKind] === "Readonly"; +} +/** Returns true if this value has a Optional symbol */ +function IsOptional$1(value) { + return IsObject$1(value) && value[OptionalKind] === "Optional"; +} +/** Returns true if the given value is TAny */ +function IsAny$1(value) { + return IsKindOf(value, "Any") && IsOptionalString(value.$id); +} +/** Returns true if the given value is TArgument */ +function IsArgument(value) { + return IsKindOf(value, "Argument") && IsNumber$1(value.index); +} +/** Returns true if the given value is TArray */ +function IsArray$2(value) { + return IsKindOf(value, "Array") && value.type === "array" && IsOptionalString(value.$id) && IsSchema$1(value.items) && IsOptionalNumber(value.minItems) && IsOptionalNumber(value.maxItems) && IsOptionalBoolean(value.uniqueItems) && IsOptionalSchema(value.contains) && IsOptionalNumber(value.minContains) && IsOptionalNumber(value.maxContains); +} +/** Returns true if the given value is TAsyncIterator */ +function IsAsyncIterator$2(value) { + return IsKindOf(value, "AsyncIterator") && value.type === "AsyncIterator" && IsOptionalString(value.$id) && IsSchema$1(value.items); +} +/** Returns true if the given value is TBigInt */ +function IsBigInt$2(value) { + return IsKindOf(value, "BigInt") && value.type === "bigint" && IsOptionalString(value.$id) && IsOptionalBigInt(value.exclusiveMaximum) && IsOptionalBigInt(value.exclusiveMinimum) && IsOptionalBigInt(value.maximum) && IsOptionalBigInt(value.minimum) && IsOptionalBigInt(value.multipleOf); +} +/** Returns true if the given value is TBoolean */ +function IsBoolean$2(value) { + return IsKindOf(value, "Boolean") && value.type === "boolean" && IsOptionalString(value.$id); +} +/** Returns true if the given value is TComputed */ +function IsComputed$1(value) { + return IsKindOf(value, "Computed") && IsString(value.target) && IsArray(value.parameters) && value.parameters.every((schema) => IsSchema$1(schema)); +} +/** Returns true if the given value is TConstructor */ +function IsConstructor$1(value) { + return IsKindOf(value, "Constructor") && value.type === "Constructor" && IsOptionalString(value.$id) && IsArray(value.parameters) && value.parameters.every((schema) => IsSchema$1(schema)) && IsSchema$1(value.returns); +} +/** Returns true if the given value is TDate */ +function IsDate$1(value) { + return IsKindOf(value, "Date") && value.type === "Date" && IsOptionalString(value.$id) && IsOptionalNumber(value.exclusiveMaximumTimestamp) && IsOptionalNumber(value.exclusiveMinimumTimestamp) && IsOptionalNumber(value.maximumTimestamp) && IsOptionalNumber(value.minimumTimestamp) && IsOptionalNumber(value.multipleOfTimestamp); +} +/** Returns true if the given value is TFunction */ +function IsFunction$2(value) { + return IsKindOf(value, "Function") && value.type === "Function" && IsOptionalString(value.$id) && IsArray(value.parameters) && value.parameters.every((schema) => IsSchema$1(schema)) && IsSchema$1(value.returns); +} +/** Returns true if the given value is TImport */ +function IsImport(value) { + return IsKindOf(value, "Import") && HasPropertyKey$1(value, "$defs") && IsObject$1(value.$defs) && IsProperties(value.$defs) && HasPropertyKey$1(value, "$ref") && IsString(value.$ref) && value.$ref in value.$defs; +} +/** Returns true if the given value is TInteger */ +function IsInteger$1(value) { + return IsKindOf(value, "Integer") && value.type === "integer" && IsOptionalString(value.$id) && IsOptionalNumber(value.exclusiveMaximum) && IsOptionalNumber(value.exclusiveMinimum) && IsOptionalNumber(value.maximum) && IsOptionalNumber(value.minimum) && IsOptionalNumber(value.multipleOf); +} +/** Returns true if the given schema is TProperties */ +function IsProperties(value) { + return IsObject$1(value) && Object.entries(value).every(([key, schema]) => IsControlCharacterFree(key) && IsSchema$1(schema)); +} +/** Returns true if the given value is TIntersect */ +function IsIntersect$1(value) { + return IsKindOf(value, "Intersect") && (IsString(value.type) && value.type !== "object" ? false : true) && IsArray(value.allOf) && value.allOf.every((schema) => IsSchema$1(schema) && !IsTransform$1(schema)) && IsOptionalString(value.type) && (IsOptionalBoolean(value.unevaluatedProperties) || IsOptionalSchema(value.unevaluatedProperties)) && IsOptionalString(value.$id); +} +/** Returns true if the given value is TIterator */ +function IsIterator$2(value) { + return IsKindOf(value, "Iterator") && value.type === "Iterator" && IsOptionalString(value.$id) && IsSchema$1(value.items); +} +/** Returns true if the given value is a TKind with the given name. */ +function IsKindOf(value, kind) { + return IsObject$1(value) && Kind in value && value[Kind] === kind; +} +/** Returns true if the given value is TLiteral */ +function IsLiteralString(value) { + return IsLiteral$1(value) && IsString(value.const); +} +/** Returns true if the given value is TLiteral */ +function IsLiteralNumber(value) { + return IsLiteral$1(value) && IsNumber$1(value.const); +} +/** Returns true if the given value is TLiteral */ +function IsLiteralBoolean(value) { + return IsLiteral$1(value) && IsBoolean$1(value.const); +} +/** Returns true if the given value is TLiteral */ +function IsLiteral$1(value) { + return IsKindOf(value, "Literal") && IsOptionalString(value.$id) && IsLiteralValue$1(value.const); +} +/** Returns true if the given value is a TLiteralValue */ +function IsLiteralValue$1(value) { + return IsBoolean$1(value) || IsNumber$1(value) || IsString(value); +} +/** Returns true if the given value is a TMappedKey */ +function IsMappedKey$1(value) { + return IsKindOf(value, "MappedKey") && IsArray(value.keys) && value.keys.every((key) => IsNumber$1(key) || IsString(key)); +} +/** Returns true if the given value is TMappedResult */ +function IsMappedResult$1(value) { + return IsKindOf(value, "MappedResult") && IsProperties(value.properties); +} +/** Returns true if the given value is TNever */ +function IsNever$1(value) { + return IsKindOf(value, "Never") && IsObject$1(value.not) && Object.getOwnPropertyNames(value.not).length === 0; +} +/** Returns true if the given value is TNot */ +function IsNot(value) { + return IsKindOf(value, "Not") && IsSchema$1(value.not); +} +/** Returns true if the given value is TNull */ +function IsNull$1(value) { + return IsKindOf(value, "Null") && value.type === "null" && IsOptionalString(value.$id); +} +/** Returns true if the given value is TNumber */ +function IsNumber$2(value) { + return IsKindOf(value, "Number") && value.type === "number" && IsOptionalString(value.$id) && IsOptionalNumber(value.exclusiveMaximum) && IsOptionalNumber(value.exclusiveMinimum) && IsOptionalNumber(value.maximum) && IsOptionalNumber(value.minimum) && IsOptionalNumber(value.multipleOf); +} +/** Returns true if the given value is TObject */ +function IsObject$2(value) { + return IsKindOf(value, "Object") && value.type === "object" && IsOptionalString(value.$id) && IsProperties(value.properties) && IsAdditionalProperties(value.additionalProperties) && IsOptionalNumber(value.minProperties) && IsOptionalNumber(value.maxProperties); +} +/** Returns true if the given value is TPromise */ +function IsPromise$1(value) { + return IsKindOf(value, "Promise") && value.type === "Promise" && IsOptionalString(value.$id) && IsSchema$1(value.item); +} +/** Returns true if the given value is TRecord */ +function IsRecord$1(value) { + return IsKindOf(value, "Record") && value.type === "object" && IsOptionalString(value.$id) && IsAdditionalProperties(value.additionalProperties) && IsObject$1(value.patternProperties) && ((schema) => { + const keys$1 = Object.getOwnPropertyNames(schema.patternProperties); + return keys$1.length === 1 && IsPattern(keys$1[0]) && IsObject$1(schema.patternProperties) && IsSchema$1(schema.patternProperties[keys$1[0]]); + })(value); +} +/** Returns true if this value is TRecursive */ +function IsRecursive(value) { + return IsObject$1(value) && Hint in value && value[Hint] === "Recursive"; +} +/** Returns true if the given value is TRef */ +function IsRef$1(value) { + return IsKindOf(value, "Ref") && IsOptionalString(value.$id) && IsString(value.$ref); +} +/** Returns true if the given value is TRegExp */ +function IsRegExp$1(value) { + return IsKindOf(value, "RegExp") && IsOptionalString(value.$id) && IsString(value.source) && IsString(value.flags) && IsOptionalNumber(value.maxLength) && IsOptionalNumber(value.minLength); +} +/** Returns true if the given value is TString */ +function IsString$2(value) { + return IsKindOf(value, "String") && value.type === "string" && IsOptionalString(value.$id) && IsOptionalNumber(value.minLength) && IsOptionalNumber(value.maxLength) && IsOptionalPattern(value.pattern) && IsOptionalFormat(value.format); +} +/** Returns true if the given value is TSymbol */ +function IsSymbol$1(value) { + return IsKindOf(value, "Symbol") && value.type === "symbol" && IsOptionalString(value.$id); +} +/** Returns true if the given value is TTemplateLiteral */ +function IsTemplateLiteral$1(value) { + return IsKindOf(value, "TemplateLiteral") && value.type === "string" && IsString(value.pattern) && value.pattern[0] === "^" && value.pattern[value.pattern.length - 1] === "$"; +} +/** Returns true if the given value is TThis */ +function IsThis(value) { + return IsKindOf(value, "This") && IsOptionalString(value.$id) && IsString(value.$ref); +} +/** Returns true of this value is TTransform */ +function IsTransform$1(value) { + return IsObject$1(value) && TransformKind in value; +} +/** Returns true if the given value is TTuple */ +function IsTuple$1(value) { + return IsKindOf(value, "Tuple") && value.type === "array" && IsOptionalString(value.$id) && IsNumber$1(value.minItems) && IsNumber$1(value.maxItems) && value.minItems === value.maxItems && (IsUndefined(value.items) && IsUndefined(value.additionalItems) && value.minItems === 0 || IsArray(value.items) && value.items.every((schema) => IsSchema$1(schema))); +} +/** Returns true if the given value is TUndefined */ +function IsUndefined$1(value) { + return IsKindOf(value, "Undefined") && value.type === "undefined" && IsOptionalString(value.$id); +} +/** Returns true if the given value is TUnion[]> */ +function IsUnionLiteral(value) { + return IsUnion$1(value) && value.anyOf.every((schema) => IsLiteralString(schema) || IsLiteralNumber(schema)); +} +/** Returns true if the given value is TUnion */ +function IsUnion$1(value) { + return IsKindOf(value, "Union") && IsOptionalString(value.$id) && IsObject$1(value) && IsArray(value.anyOf) && value.anyOf.every((schema) => IsSchema$1(schema)); +} +/** Returns true if the given value is TUint8Array */ +function IsUint8Array$1(value) { + return IsKindOf(value, "Uint8Array") && value.type === "Uint8Array" && IsOptionalString(value.$id) && IsOptionalNumber(value.minByteLength) && IsOptionalNumber(value.maxByteLength); +} +/** Returns true if the given value is TUnknown */ +function IsUnknown(value) { + return IsKindOf(value, "Unknown") && IsOptionalString(value.$id); +} +/** Returns true if the given value is a raw TUnsafe */ +function IsUnsafe(value) { + return IsKindOf(value, "Unsafe"); +} +/** Returns true if the given value is TVoid */ +function IsVoid(value) { + return IsKindOf(value, "Void") && value.type === "void" && IsOptionalString(value.$id); +} +/** Returns true if the given value is TKind */ +function IsKind(value) { + return IsObject$1(value) && Kind in value && IsString(value[Kind]) && !KnownTypes.includes(value[Kind]); +} +/** Returns true if the given value is TSchema */ +function IsSchema$1(value) { + return IsObject$1(value) && (IsAny$1(value) || IsArgument(value) || IsArray$2(value) || IsBoolean$2(value) || IsBigInt$2(value) || IsAsyncIterator$2(value) || IsComputed$1(value) || IsConstructor$1(value) || IsDate$1(value) || IsFunction$2(value) || IsInteger$1(value) || IsIntersect$1(value) || IsIterator$2(value) || IsLiteral$1(value) || IsMappedKey$1(value) || IsMappedResult$1(value) || IsNever$1(value) || IsNot(value) || IsNull$1(value) || IsNumber$2(value) || IsObject$2(value) || IsPromise$1(value) || IsRecord$1(value) || IsRef$1(value) || IsRegExp$1(value) || IsString$2(value) || IsSymbol$1(value) || IsTemplateLiteral$1(value) || IsThis(value) || IsTuple$1(value) || IsUndefined$1(value) || IsUnion$1(value) || IsUint8Array$1(value) || IsUnknown(value) || IsUnsafe(value) || IsVoid(value) || IsKind(value)); +} +var TypeGuardUnknownTypeError, KnownTypes; +var init_type$3 = __esmMin((() => { + init_value$1(); + init_symbols(); + init_error(); + TypeGuardUnknownTypeError = class extends TypeBoxError {}; + KnownTypes = [ + "Argument", + "Any", + "Array", + "AsyncIterator", + "BigInt", + "Boolean", + "Computed", + "Constructor", + "Date", + "Enum", + "Function", + "Integer", + "Intersect", + "Iterator", + "Literal", + "MappedKey", + "MappedResult", + "Not", + "Null", + "Number", + "Object", + "Promise", + "Record", + "Ref", + "RegExp", + "String", + "Symbol", + "TemplateLiteral", + "This", + "Tuple", + "Undefined", + "Union", + "Uint8Array", + "Unknown", + "Void" + ]; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/guard/index.mjs +var init_guard = __esmMin((() => { + init_kind(); + init_type$3(); + init_value$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/helpers/helpers.mjs +/** Increments the given string value + 1 */ +function Increment(T$3) { + return (parseInt(T$3) + 1).toString(); +} +var init_helpers$1 = __esmMin((() => {})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/helpers/index.mjs +var init_helpers = __esmMin((() => { + init_helpers$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/patterns/patterns.mjs +var PatternBoolean, PatternNumber, PatternString, PatternNever, PatternBooleanExact, PatternNumberExact, PatternStringExact, PatternNeverExact; +var init_patterns$1 = __esmMin((() => { + PatternBoolean = "(true|false)"; + PatternNumber = "(0|[1-9][0-9]*)"; + PatternString = "(.*)"; + PatternNever = "(?!.*)"; + PatternBooleanExact = `^${PatternBoolean}$`; + PatternNumberExact = `^${PatternNumber}$`; + PatternStringExact = `^${PatternString}$`; + PatternNeverExact = `^${PatternNever}$`; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/patterns/index.mjs +var init_patterns = __esmMin((() => { + init_patterns$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/registry/format.mjs +/** Returns the entries in this registry */ +function Entries$1() { + return new Map(map$1); +} +/** Clears all user defined string formats */ +function Clear$1() { + return map$1.clear(); +} +/** Deletes a registered format */ +function Delete$1(format) { + return map$1.delete(format); +} +/** Returns true if the user defined string format exists */ +function Has$1(format) { + return map$1.has(format); +} +/** Sets a validation function for a user defined string format */ +function Set$2(format, func) { + map$1.set(format, func); +} +/** Gets a validation function for a user defined string format */ +function Get$1(format) { + return map$1.get(format); +} +var map$1; +var init_format = __esmMin((() => { + map$1 = new Map(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/registry/type.mjs +/** Returns the entries in this registry */ +function Entries() { + return new Map(map); +} +/** Clears all user defined types */ +function Clear() { + return map.clear(); +} +/** Deletes a registered type */ +function Delete(kind) { + return map.delete(kind); +} +/** Returns true if this registry contains this kind */ +function Has(kind) { + return map.has(kind); +} +/** Sets a validation function for a user defined type */ +function Set$1(kind, func) { + map.set(kind, func); +} +/** Gets a custom validation function for a user defined type */ +function Get(kind) { + return map.get(kind); +} +var map; +var init_type$2 = __esmMin((() => { + map = new Map(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/registry/index.mjs +var init_registry = __esmMin((() => { + init_format(); + init_type$2(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/sets/set.mjs +/** Returns true if element right is in the set of left */ +function SetIncludes(T$3, S$4) { + return T$3.includes(S$4); +} +/** Returns true if left is a subset of right */ +function SetIsSubset(T$3, S$4) { + return T$3.every((L$2) => SetIncludes(S$4, L$2)); +} +/** Returns a distinct set of elements */ +function SetDistinct(T$3) { + return [...new Set(T$3)]; +} +/** Returns the Intersect of the given sets */ +function SetIntersect(T$3, S$4) { + return T$3.filter((L$2) => S$4.includes(L$2)); +} +/** Returns the Union of the given sets */ +function SetUnion(T$3, S$4) { + return [...T$3, ...S$4]; +} +/** Returns the Complement by omitting elements in T that are in S */ +function SetComplement(T$3, S$4) { + return T$3.filter((L$2) => !S$4.includes(L$2)); +} +function SetIntersectManyResolve(T$3, Init) { + return T$3.reduce((Acc, L$2) => { + return SetIntersect(Acc, L$2); + }, Init); +} +function SetIntersectMany(T$3) { + return T$3.length === 1 ? T$3[0] : T$3.length > 1 ? SetIntersectManyResolve(T$3.slice(1), T$3[0]) : []; +} +/** Returns the Union of multiple sets */ +function SetUnionMany(T$3) { + const Acc = []; + for (const L$2 of T$3) Acc.push(...L$2); + return Acc; +} +var init_set = __esmMin((() => {})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/sets/index.mjs +var init_sets = __esmMin((() => { + init_set(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/any/any.mjs +/** `[Json]` Creates an Any type */ +function Any(options) { + return CreateType({ [Kind]: "Any" }, options); +} +var init_any$1 = __esmMin((() => { + init_create$1(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/any/index.mjs +var init_any = __esmMin((() => { + init_any$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/array/array.mjs +/** `[Json]` Creates an Array type */ +function Array$1(items, options) { + return CreateType({ + [Kind]: "Array", + type: "array", + items + }, options); +} +var init_array$2 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/array/index.mjs +var init_array$1 = __esmMin((() => { + init_array$2(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/argument/argument.mjs +/** `[JavaScript]` Creates an Argument Type. */ +function Argument(index) { + return CreateType({ + [Kind]: "Argument", + index + }); +} +var init_argument$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/argument/index.mjs +var init_argument = __esmMin((() => { + init_argument$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/async-iterator/async-iterator.mjs +/** `[JavaScript]` Creates a AsyncIterator type */ +function AsyncIterator(items, options) { + return CreateType({ + [Kind]: "AsyncIterator", + type: "AsyncIterator", + items + }, options); +} +var init_async_iterator$1 = __esmMin((() => { + init_symbols(); + init_type$4(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/async-iterator/index.mjs +var init_async_iterator = __esmMin((() => { + init_async_iterator$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/computed/computed.mjs +/** `[Internal]` Creates a deferred computed type. This type is used exclusively in modules to defer resolution of computable types that contain interior references */ +function Computed(target, parameters, options) { + return CreateType({ + [Kind]: "Computed", + target, + parameters + }, options); +} +var init_computed$1 = __esmMin((() => { + init_create$1(); + init_symbols$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/computed/index.mjs +var init_computed = __esmMin((() => { + init_computed$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/discard/discard.mjs +function DiscardKey(value, key) { + const { [key]: _$2, ...rest } = value; + return rest; +} +/** Discards property keys from the given value. This function returns a shallow Clone. */ +function Discard(value, keys$1) { + return keys$1.reduce((acc, key) => DiscardKey(acc, key), value); +} +var init_discard$1 = __esmMin((() => {})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/discard/index.mjs +var init_discard = __esmMin((() => { + init_discard$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/never/never.mjs +/** `[Json]` Creates a Never type */ +function Never(options) { + return CreateType({ + [Kind]: "Never", + not: {} + }, options); +} +var init_never$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/never/index.mjs +var init_never = __esmMin((() => { + init_never$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/mapped/mapped-key.mjs +function MappedKey(T$3) { + return CreateType({ + [Kind]: "MappedKey", + keys: T$3 + }); +} +var init_mapped_key = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/mapped/mapped-result.mjs +function MappedResult(properties$1) { + return CreateType({ + [Kind]: "MappedResult", + properties: properties$1 + }); +} +var init_mapped_result = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/constructor/constructor.mjs +/** `[JavaScript]` Creates a Constructor type */ +function Constructor(parameters, returns, options) { + return CreateType({ + [Kind]: "Constructor", + type: "Constructor", + parameters, + returns + }, options); +} +var init_constructor$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/constructor/index.mjs +var init_constructor = __esmMin((() => { + init_constructor$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/function/function.mjs +/** `[JavaScript]` Creates a Function type */ +function Function$1(parameters, returns, options) { + return CreateType({ + [Kind]: "Function", + type: "Function", + parameters, + returns + }, options); +} +var init_function$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/function/index.mjs +var init_function = __esmMin((() => { + init_function$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/union/union-create.mjs +function UnionCreate(T$3, options) { + return CreateType({ + [Kind]: "Union", + anyOf: T$3 + }, options); +} +var init_union_create = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/union/union-evaluated.mjs +function IsUnionOptional(types) { + return types.some((type) => IsOptional(type)); +} +function RemoveOptionalFromRest$1(types) { + return types.map((left) => IsOptional(left) ? RemoveOptionalFromType$1(left) : left); +} +function RemoveOptionalFromType$1(T$3) { + return Discard(T$3, [OptionalKind]); +} +function ResolveUnion(types, options) { + const isOptional = IsUnionOptional(types); + return isOptional ? Optional(UnionCreate(RemoveOptionalFromRest$1(types), options)) : UnionCreate(RemoveOptionalFromRest$1(types), options); +} +/** `[Json]` Creates an evaluated Union type */ +function UnionEvaluated(T$3, options) { + return T$3.length === 1 ? CreateType(T$3[0], options) : T$3.length === 0 ? Never(options) : ResolveUnion(T$3, options); +} +var init_union_evaluated = __esmMin((() => { + init_type$4(); + init_symbols(); + init_discard(); + init_never(); + init_optional(); + init_union_create(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/union/union-type.mjs +var init_union_type = __esmMin((() => { + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/union/union.mjs +/** `[Json]` Creates a Union type */ +function Union(types, options) { + return types.length === 0 ? Never(options) : types.length === 1 ? CreateType(types[0], options) : UnionCreate(types, options); +} +var init_union$2 = __esmMin((() => { + init_never(); + init_type$4(); + init_union_create(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/union/index.mjs +var init_union$1 = __esmMin((() => { + init_union_evaluated(); + init_union_type(); + init_union$2(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/template-literal/parse.mjs +function Unescape(pattern) { + return pattern.replace(/\\\$/g, "$").replace(/\\\*/g, "*").replace(/\\\^/g, "^").replace(/\\\|/g, "|").replace(/\\\(/g, "(").replace(/\\\)/g, ")"); +} +function IsNonEscaped(pattern, index, char) { + return pattern[index] === char && pattern.charCodeAt(index - 1) !== 92; +} +function IsOpenParen(pattern, index) { + return IsNonEscaped(pattern, index, "("); +} +function IsCloseParen(pattern, index) { + return IsNonEscaped(pattern, index, ")"); +} +function IsSeparator(pattern, index) { + return IsNonEscaped(pattern, index, "|"); +} +function IsGroup(pattern) { + if (!(IsOpenParen(pattern, 0) && IsCloseParen(pattern, pattern.length - 1))) return false; + let count = 0; + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) count += 1; + if (IsCloseParen(pattern, index)) count -= 1; + if (count === 0 && index !== pattern.length - 1) return false; + } + return true; +} +function InGroup(pattern) { + return pattern.slice(1, pattern.length - 1); +} +function IsPrecedenceOr(pattern) { + let count = 0; + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) count += 1; + if (IsCloseParen(pattern, index)) count -= 1; + if (IsSeparator(pattern, index) && count === 0) return true; + } + return false; +} +function IsPrecedenceAnd(pattern) { + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) return true; + } + return false; +} +function Or(pattern) { + let [count, start] = [0, 0]; + const expressions = []; + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) count += 1; + if (IsCloseParen(pattern, index)) count -= 1; + if (IsSeparator(pattern, index) && count === 0) { + const range$1 = pattern.slice(start, index); + if (range$1.length > 0) expressions.push(TemplateLiteralParse(range$1)); + start = index + 1; + } + } + const range = pattern.slice(start); + if (range.length > 0) expressions.push(TemplateLiteralParse(range)); + if (expressions.length === 0) return { + type: "const", + const: "" + }; + if (expressions.length === 1) return expressions[0]; + return { + type: "or", + expr: expressions + }; +} +function And(pattern) { + function Group$1(value, index) { + if (!IsOpenParen(value, index)) throw new TemplateLiteralParserError(`TemplateLiteralParser: Index must point to open parens`); + let count = 0; + for (let scan = index; scan < value.length; scan++) { + if (IsOpenParen(value, scan)) count += 1; + if (IsCloseParen(value, scan)) count -= 1; + if (count === 0) return [index, scan]; + } + throw new TemplateLiteralParserError(`TemplateLiteralParser: Unclosed group parens in expression`); + } + function Range$1(pattern$1, index) { + for (let scan = index; scan < pattern$1.length; scan++) { + if (IsOpenParen(pattern$1, scan)) return [index, scan]; + } + return [index, pattern$1.length]; + } + const expressions = []; + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) { + const [start, end] = Group$1(pattern, index); + const range = pattern.slice(start, end + 1); + expressions.push(TemplateLiteralParse(range)); + index = end; + } else { + const [start, end] = Range$1(pattern, index); + const range = pattern.slice(start, end); + if (range.length > 0) expressions.push(TemplateLiteralParse(range)); + index = end - 1; + } + } + return expressions.length === 0 ? { + type: "const", + const: "" + } : expressions.length === 1 ? expressions[0] : { + type: "and", + expr: expressions + }; +} +/** Parses a pattern and returns an expression tree */ +function TemplateLiteralParse(pattern) { + return IsGroup(pattern) ? TemplateLiteralParse(InGroup(pattern)) : IsPrecedenceOr(pattern) ? Or(pattern) : IsPrecedenceAnd(pattern) ? And(pattern) : { + type: "const", + const: Unescape(pattern) + }; +} +/** Parses a pattern and strips forward and trailing ^ and $ */ +function TemplateLiteralParseExact(pattern) { + return TemplateLiteralParse(pattern.slice(1, pattern.length - 1)); +} +var TemplateLiteralParserError; +var init_parse$1 = __esmMin((() => { + init_error(); + TemplateLiteralParserError = class extends TypeBoxError {}; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/template-literal/finite.mjs +function IsNumberExpression(expression) { + return expression.type === "or" && expression.expr.length === 2 && expression.expr[0].type === "const" && expression.expr[0].const === "0" && expression.expr[1].type === "const" && expression.expr[1].const === "[1-9][0-9]*"; +} +function IsBooleanExpression(expression) { + return expression.type === "or" && expression.expr.length === 2 && expression.expr[0].type === "const" && expression.expr[0].const === "true" && expression.expr[1].type === "const" && expression.expr[1].const === "false"; +} +function IsStringExpression(expression) { + return expression.type === "const" && expression.const === ".*"; +} +function IsTemplateLiteralExpressionFinite(expression) { + return IsNumberExpression(expression) || IsStringExpression(expression) ? false : IsBooleanExpression(expression) ? true : expression.type === "and" ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) : expression.type === "or" ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) : expression.type === "const" ? true : (() => { + throw new TemplateLiteralFiniteError(`Unknown expression type`); + })(); +} +/** Returns true if this TemplateLiteral resolves to a finite set of values */ +function IsTemplateLiteralFinite(schema) { + const expression = TemplateLiteralParseExact(schema.pattern); + return IsTemplateLiteralExpressionFinite(expression); +} +var TemplateLiteralFiniteError; +var init_finite = __esmMin((() => { + init_parse$1(); + init_error(); + TemplateLiteralFiniteError = class extends TypeBoxError {}; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/template-literal/generate.mjs +function* GenerateReduce(buffer) { + if (buffer.length === 1) return yield* buffer[0]; + for (const left of buffer[0]) { + for (const right of GenerateReduce(buffer.slice(1))) { + yield `${left}${right}`; + } + } +} +function* GenerateAnd(expression) { + return yield* GenerateReduce(expression.expr.map((expr) => [...TemplateLiteralExpressionGenerate(expr)])); +} +function* GenerateOr(expression) { + for (const expr of expression.expr) yield* TemplateLiteralExpressionGenerate(expr); +} +function* GenerateConst(expression) { + return yield expression.const; +} +function* TemplateLiteralExpressionGenerate(expression) { + return expression.type === "and" ? yield* GenerateAnd(expression) : expression.type === "or" ? yield* GenerateOr(expression) : expression.type === "const" ? yield* GenerateConst(expression) : (() => { + throw new TemplateLiteralGenerateError("Unknown expression"); + })(); +} +/** Generates a tuple of strings from the given TemplateLiteral. Returns an empty tuple if infinite. */ +function TemplateLiteralGenerate(schema) { + const expression = TemplateLiteralParseExact(schema.pattern); + return IsTemplateLiteralExpressionFinite(expression) ? [...TemplateLiteralExpressionGenerate(expression)] : []; +} +var TemplateLiteralGenerateError; +var init_generate = __esmMin((() => { + init_finite(); + init_parse$1(); + init_error(); + TemplateLiteralGenerateError = class extends TypeBoxError {}; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/literal/literal.mjs +/** `[Json]` Creates a Literal type */ +function Literal(value, options) { + return CreateType({ + [Kind]: "Literal", + const: value, + type: typeof value + }, options); +} +var init_literal$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/literal/index.mjs +var init_literal = __esmMin((() => { + init_literal$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/boolean/boolean.mjs +/** `[Json]` Creates a Boolean type */ +function Boolean$1(options) { + return CreateType({ + [Kind]: "Boolean", + type: "boolean" + }, options); +} +var init_boolean$1 = __esmMin((() => { + init_symbols(); + init_create$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/boolean/index.mjs +var init_boolean = __esmMin((() => { + init_boolean$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/bigint/bigint.mjs +/** `[JavaScript]` Creates a BigInt type */ +function BigInt(options) { + return CreateType({ + [Kind]: "BigInt", + type: "bigint" + }, options); +} +var init_bigint$1 = __esmMin((() => { + init_symbols(); + init_create$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/bigint/index.mjs +var init_bigint = __esmMin((() => { + init_bigint$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/number/number.mjs +/** `[Json]` Creates a Number type */ +function Number$1(options) { + return CreateType({ + [Kind]: "Number", + type: "number" + }, options); +} +var init_number$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/number/index.mjs +var init_number = __esmMin((() => { + init_number$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/string/string.mjs +/** `[Json]` Creates a String type */ +function String$1(options) { + return CreateType({ + [Kind]: "String", + type: "string" + }, options); +} +var init_string$2 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/string/index.mjs +var init_string$1 = __esmMin((() => { + init_string$2(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/template-literal/syntax.mjs +function* FromUnion$9(syntax) { + const trim = syntax.trim().replace(/"|'/g, ""); + return trim === "boolean" ? yield Boolean$1() : trim === "number" ? yield Number$1() : trim === "bigint" ? yield BigInt() : trim === "string" ? yield String$1() : yield (() => { + const literals$1 = trim.split("|").map((literal) => Literal(literal.trim())); + return literals$1.length === 0 ? Never() : literals$1.length === 1 ? literals$1[0] : UnionEvaluated(literals$1); + })(); +} +function* FromTerminal(syntax) { + if (syntax[1] !== "{") { + const L$2 = Literal("$"); + const R$1 = FromSyntax(syntax.slice(1)); + return yield* [L$2, ...R$1]; + } + for (let i$7 = 2; i$7 < syntax.length; i$7++) { + if (syntax[i$7] === "}") { + const L$2 = FromUnion$9(syntax.slice(2, i$7)); + const R$1 = FromSyntax(syntax.slice(i$7 + 1)); + return yield* [...L$2, ...R$1]; + } + } + yield Literal(syntax); +} +function* FromSyntax(syntax) { + for (let i$7 = 0; i$7 < syntax.length; i$7++) { + if (syntax[i$7] === "$") { + const L$2 = Literal(syntax.slice(0, i$7)); + const R$1 = FromTerminal(syntax.slice(i$7)); + return yield* [L$2, ...R$1]; + } + } + yield Literal(syntax); +} +/** Parses TemplateLiteralSyntax and returns a tuple of TemplateLiteralKinds */ +function TemplateLiteralSyntax(syntax) { + return [...FromSyntax(syntax)]; +} +var init_syntax = __esmMin((() => { + init_literal(); + init_boolean(); + init_bigint(); + init_number(); + init_string$1(); + init_union$1(); + init_never(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/template-literal/pattern.mjs +function Escape(value) { + return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} +function Visit$1(schema, acc) { + return IsTemplateLiteral(schema) ? schema.pattern.slice(1, schema.pattern.length - 1) : IsUnion(schema) ? `(${schema.anyOf.map((schema$1) => Visit$1(schema$1, acc)).join("|")})` : IsNumber(schema) ? `${acc}${PatternNumber}` : IsInteger(schema) ? `${acc}${PatternNumber}` : IsBigInt$1(schema) ? `${acc}${PatternNumber}` : IsString$1(schema) ? `${acc}${PatternString}` : IsLiteral(schema) ? `${acc}${Escape(schema.const.toString())}` : IsBoolean(schema) ? `${acc}${PatternBoolean}` : (() => { + throw new TemplateLiteralPatternError(`Unexpected Kind '${schema[Kind]}'`); + })(); +} +function TemplateLiteralPattern(kinds) { + return `^${kinds.map((schema) => Visit$1(schema, "")).join("")}\$`; +} +var TemplateLiteralPatternError; +var init_pattern = __esmMin((() => { + init_patterns(); + init_symbols(); + init_error(); + init_kind(); + TemplateLiteralPatternError = class extends TypeBoxError {}; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/template-literal/union.mjs +/** Returns a Union from the given TemplateLiteral */ +function TemplateLiteralToUnion(schema) { + const R$1 = TemplateLiteralGenerate(schema); + const L$2 = R$1.map((S$4) => Literal(S$4)); + return UnionEvaluated(L$2); +} +var init_union = __esmMin((() => { + init_union$1(); + init_literal(); + init_generate(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/template-literal/template-literal.mjs +/** `[Json]` Creates a TemplateLiteral type */ +function TemplateLiteral(unresolved, options) { + const pattern = IsString(unresolved) ? TemplateLiteralPattern(TemplateLiteralSyntax(unresolved)) : TemplateLiteralPattern(unresolved); + return CreateType({ + [Kind]: "TemplateLiteral", + type: "string", + pattern + }, options); +} +var init_template_literal$1 = __esmMin((() => { + init_type$4(); + init_syntax(); + init_pattern(); + init_value$1(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/template-literal/index.mjs +var init_template_literal = __esmMin((() => { + init_finite(); + init_generate(); + init_syntax(); + init_parse$1(); + init_pattern(); + init_union(); + init_template_literal$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/indexed/indexed-property-keys.mjs +function FromTemplateLiteral$2(templateLiteral) { + const keys$1 = TemplateLiteralGenerate(templateLiteral); + return keys$1.map((key) => key.toString()); +} +function FromUnion$8(types) { + const result = []; + for (const type of types) result.push(...IndexPropertyKeys(type)); + return result; +} +function FromLiteral$1(literalValue) { + return [literalValue.toString()]; +} +/** Returns a tuple of PropertyKeys derived from the given TSchema */ +function IndexPropertyKeys(type) { + return [...new Set(IsTemplateLiteral(type) ? FromTemplateLiteral$2(type) : IsUnion(type) ? FromUnion$8(type.anyOf) : IsLiteral(type) ? FromLiteral$1(type.const) : IsNumber(type) ? ["[number]"] : IsInteger(type) ? ["[number]"] : [])]; +} +var init_indexed_property_keys = __esmMin((() => { + init_template_literal(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-result.mjs +function FromProperties$18(type, properties$1, options) { + const result = {}; + for (const K2 of Object.getOwnPropertyNames(properties$1)) { + result[K2] = Index(type, IndexPropertyKeys(properties$1[K2]), options); + } + return result; +} +function FromMappedResult$11(type, mappedResult, options) { + return FromProperties$18(type, mappedResult.properties, options); +} +function IndexFromMappedResult(type, mappedResult, options) { + const properties$1 = FromMappedResult$11(type, mappedResult, options); + return MappedResult(properties$1); +} +var init_indexed_from_mapped_result = __esmMin((() => { + init_mapped(); + init_indexed_property_keys(); + init_indexed(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/indexed/indexed.mjs +function FromRest$6(types, key) { + return types.map((type) => IndexFromPropertyKey(type, key)); +} +function FromIntersectRest(types) { + return types.filter((type) => !IsNever(type)); +} +function FromIntersect$7(types, key) { + return IntersectEvaluated(FromIntersectRest(FromRest$6(types, key))); +} +function FromUnionRest(types) { + return types.some((L$2) => IsNever(L$2)) ? [] : types; +} +function FromUnion$7(types, key) { + return UnionEvaluated(FromUnionRest(FromRest$6(types, key))); +} +function FromTuple$4(types, key) { + return key in types ? types[key] : key === "[number]" ? UnionEvaluated(types) : Never(); +} +function FromArray$5(type, key) { + return key === "[number]" ? type : Never(); +} +function FromProperty$2(properties$1, propertyKey) { + return propertyKey in properties$1 ? properties$1[propertyKey] : Never(); +} +function IndexFromPropertyKey(type, propertyKey) { + return IsIntersect(type) ? FromIntersect$7(type.allOf, propertyKey) : IsUnion(type) ? FromUnion$7(type.anyOf, propertyKey) : IsTuple(type) ? FromTuple$4(type.items ?? [], propertyKey) : IsArray$1(type) ? FromArray$5(type.items, propertyKey) : IsObject(type) ? FromProperty$2(type.properties, propertyKey) : Never(); +} +function IndexFromPropertyKeys(type, propertyKeys) { + return propertyKeys.map((propertyKey) => IndexFromPropertyKey(type, propertyKey)); +} +function FromSchema(type, propertyKeys) { + return UnionEvaluated(IndexFromPropertyKeys(type, propertyKeys)); +} +function IndexFromComputed(type, key) { + return Computed("Index", [type, key]); +} +/** `[Json]` Returns an Indexed property type for the given keys */ +function Index(type, key, options) { + if (IsRef(type) || IsRef(key)) { + const error$2 = `Index types using Ref parameters require both Type and Key to be of TSchema`; + if (!IsSchema(type) || !IsSchema(key)) throw new TypeBoxError(error$2); + return Computed("Index", [type, key]); + } + if (IsMappedResult(key)) return IndexFromMappedResult(type, key, options); + if (IsMappedKey(key)) return IndexFromMappedKey(type, key, options); + return CreateType(IsSchema(key) ? FromSchema(type, IndexPropertyKeys(key)) : FromSchema(type, key), options); +} +var init_indexed$1 = __esmMin((() => { + init_type$4(); + init_error(); + init_computed(); + init_never(); + init_intersect(); + init_union$1(); + init_indexed_property_keys(); + init_indexed_from_mapped_key(); + init_indexed_from_mapped_result(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-key.mjs +function MappedIndexPropertyKey(type, key, options) { + return { [key]: Index(type, [key], Clone(options)) }; +} +function MappedIndexPropertyKeys(type, propertyKeys, options) { + return propertyKeys.reduce((result, left) => { + return { + ...result, + ...MappedIndexPropertyKey(type, left, options) + }; + }, {}); +} +function MappedIndexProperties(type, mappedKey, options) { + return MappedIndexPropertyKeys(type, mappedKey.keys, options); +} +function IndexFromMappedKey(type, mappedKey, options) { + const properties$1 = MappedIndexProperties(type, mappedKey, options); + return MappedResult(properties$1); +} +var init_indexed_from_mapped_key = __esmMin((() => { + init_indexed$1(); + init_mapped(); + init_value(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/indexed/index.mjs +var init_indexed = __esmMin((() => { + init_indexed_from_mapped_key(); + init_indexed_from_mapped_result(); + init_indexed_property_keys(); + init_indexed$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/iterator/iterator.mjs +/** `[JavaScript]` Creates an Iterator type */ +function Iterator(items, options) { + return CreateType({ + [Kind]: "Iterator", + type: "Iterator", + items + }, options); +} +var init_iterator$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/iterator/index.mjs +var init_iterator = __esmMin((() => { + init_iterator$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/object/object.mjs +function RequiredKeys(properties$1) { + const keys$1 = []; + for (let key in properties$1) { + if (!IsOptional(properties$1[key])) keys$1.push(key); + } + return keys$1; +} +/** `[Json]` Creates an Object type */ +function _Object(properties$1, options) { + const required = RequiredKeys(properties$1); + const schematic = required.length > 0 ? { + [Kind]: "Object", + type: "object", + properties: properties$1, + required + } : { + [Kind]: "Object", + type: "object", + properties: properties$1 + }; + return CreateType(schematic, options); +} +var Object$1; +var init_object$1 = __esmMin((() => { + init_type$4(); + init_symbols(); + init_kind(); + Object$1 = _Object; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/object/index.mjs +var init_object = __esmMin((() => { + init_object$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/promise/promise.mjs +/** `[JavaScript]` Creates a Promise type */ +function Promise$1(item, options) { + return CreateType({ + [Kind]: "Promise", + type: "Promise", + item + }, options); +} +var init_promise$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/promise/index.mjs +var init_promise = __esmMin((() => { + init_promise$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/readonly/readonly.mjs +function RemoveReadonly(schema) { + return CreateType(Discard(schema, [ReadonlyKind])); +} +function AddReadonly(schema) { + return CreateType({ + ...schema, + [ReadonlyKind]: "Readonly" + }); +} +function ReadonlyWithFlag(schema, F$1) { + return F$1 === false ? RemoveReadonly(schema) : AddReadonly(schema); +} +/** `[Json]` Creates a Readonly property */ +function Readonly(schema, enable) { + const F$1 = enable ?? true; + return IsMappedResult(schema) ? ReadonlyFromMappedResult(schema, F$1) : ReadonlyWithFlag(schema, F$1); +} +var init_readonly$1 = __esmMin((() => { + init_type$4(); + init_symbols(); + init_discard(); + init_readonly_from_mapped_result(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/readonly/readonly-from-mapped-result.mjs +function FromProperties$17(K$1, F$1) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(K$1)) Acc[K2] = Readonly(K$1[K2], F$1); + return Acc; +} +function FromMappedResult$10(R$1, F$1) { + return FromProperties$17(R$1.properties, F$1); +} +function ReadonlyFromMappedResult(R$1, F$1) { + const P$2 = FromMappedResult$10(R$1, F$1); + return MappedResult(P$2); +} +var init_readonly_from_mapped_result = __esmMin((() => { + init_mapped(); + init_readonly$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/readonly/index.mjs +var init_readonly = __esmMin((() => { + init_readonly_from_mapped_result(); + init_readonly$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/tuple/tuple.mjs +/** `[Json]` Creates a Tuple type */ +function Tuple(types, options) { + return CreateType(types.length > 0 ? { + [Kind]: "Tuple", + type: "array", + items: types, + additionalItems: false, + minItems: types.length, + maxItems: types.length + } : { + [Kind]: "Tuple", + type: "array", + minItems: types.length, + maxItems: types.length + }, options); +} +var init_tuple$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/tuple/index.mjs +var init_tuple = __esmMin((() => { + init_tuple$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/mapped/mapped.mjs +function FromMappedResult$9(K$1, P$2) { + return K$1 in P$2 ? FromSchemaType(K$1, P$2[K$1]) : MappedResult(P$2); +} +function MappedKeyToKnownMappedResultProperties(K$1) { + return { [K$1]: Literal(K$1) }; +} +function MappedKeyToUnknownMappedResultProperties(P$2) { + const Acc = {}; + for (const L$2 of P$2) Acc[L$2] = Literal(L$2); + return Acc; +} +function MappedKeyToMappedResultProperties(K$1, P$2) { + return SetIncludes(P$2, K$1) ? MappedKeyToKnownMappedResultProperties(K$1) : MappedKeyToUnknownMappedResultProperties(P$2); +} +function FromMappedKey$3(K$1, P$2) { + const R$1 = MappedKeyToMappedResultProperties(K$1, P$2); + return FromMappedResult$9(K$1, R$1); +} +function FromRest$5(K$1, T$3) { + return T$3.map((L$2) => FromSchemaType(K$1, L$2)); +} +function FromProperties$16(K$1, T$3) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(T$3)) Acc[K2] = FromSchemaType(K$1, T$3[K2]); + return Acc; +} +function FromSchemaType(K$1, T$3) { + const options = { ...T$3 }; + return IsOptional(T$3) ? Optional(FromSchemaType(K$1, Discard(T$3, [OptionalKind]))) : IsReadonly(T$3) ? Readonly(FromSchemaType(K$1, Discard(T$3, [ReadonlyKind]))) : IsMappedResult(T$3) ? FromMappedResult$9(K$1, T$3.properties) : IsMappedKey(T$3) ? FromMappedKey$3(K$1, T$3.keys) : IsConstructor(T$3) ? Constructor(FromRest$5(K$1, T$3.parameters), FromSchemaType(K$1, T$3.returns), options) : IsFunction$1(T$3) ? Function$1(FromRest$5(K$1, T$3.parameters), FromSchemaType(K$1, T$3.returns), options) : IsAsyncIterator$1(T$3) ? AsyncIterator(FromSchemaType(K$1, T$3.items), options) : IsIterator$1(T$3) ? Iterator(FromSchemaType(K$1, T$3.items), options) : IsIntersect(T$3) ? Intersect(FromRest$5(K$1, T$3.allOf), options) : IsUnion(T$3) ? Union(FromRest$5(K$1, T$3.anyOf), options) : IsTuple(T$3) ? Tuple(FromRest$5(K$1, T$3.items ?? []), options) : IsObject(T$3) ? Object$1(FromProperties$16(K$1, T$3.properties), options) : IsArray$1(T$3) ? Array$1(FromSchemaType(K$1, T$3.items), options) : IsPromise(T$3) ? Promise$1(FromSchemaType(K$1, T$3.item), options) : T$3; +} +function MappedFunctionReturnType(K$1, T$3) { + const Acc = {}; + for (const L$2 of K$1) Acc[L$2] = FromSchemaType(L$2, T$3); + return Acc; +} +/** `[Json]` Creates a Mapped object type */ +function Mapped(key, map$2, options) { + const K$1 = IsSchema(key) ? IndexPropertyKeys(key) : key; + const RT = map$2({ + [Kind]: "MappedKey", + keys: K$1 + }); + const R$1 = MappedFunctionReturnType(K$1, RT); + return Object$1(R$1, options); +} +var init_mapped$1 = __esmMin((() => { + init_symbols(); + init_discard(); + init_array$1(); + init_async_iterator(); + init_constructor(); + init_function(); + init_indexed(); + init_intersect(); + init_iterator(); + init_literal(); + init_object(); + init_optional(); + init_promise(); + init_readonly(); + init_tuple(); + init_union$1(); + init_sets(); + init_mapped_result(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/mapped/index.mjs +var init_mapped = __esmMin((() => { + init_mapped_key(); + init_mapped_result(); + init_mapped$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/optional/optional.mjs +function RemoveOptional(schema) { + return CreateType(Discard(schema, [OptionalKind])); +} +function AddOptional(schema) { + return CreateType({ + ...schema, + [OptionalKind]: "Optional" + }); +} +function OptionalWithFlag(schema, F$1) { + return F$1 === false ? RemoveOptional(schema) : AddOptional(schema); +} +/** `[Json]` Creates a Optional property */ +function Optional(schema, enable) { + const F$1 = enable ?? true; + return IsMappedResult(schema) ? OptionalFromMappedResult(schema, F$1) : OptionalWithFlag(schema, F$1); +} +var init_optional$1 = __esmMin((() => { + init_type$4(); + init_symbols(); + init_discard(); + init_optional_from_mapped_result(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/optional/optional-from-mapped-result.mjs +function FromProperties$15(P$2, F$1) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(P$2)) Acc[K2] = Optional(P$2[K2], F$1); + return Acc; +} +function FromMappedResult$8(R$1, F$1) { + return FromProperties$15(R$1.properties, F$1); +} +function OptionalFromMappedResult(R$1, F$1) { + const P$2 = FromMappedResult$8(R$1, F$1); + return MappedResult(P$2); +} +var init_optional_from_mapped_result = __esmMin((() => { + init_mapped(); + init_optional$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/optional/index.mjs +var init_optional = __esmMin((() => { + init_optional_from_mapped_result(); + init_optional$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/intersect/intersect-create.mjs +function IntersectCreate(T$3, options = {}) { + const allObjects = T$3.every((schema) => IsObject(schema)); + const clonedUnevaluatedProperties = IsSchema(options.unevaluatedProperties) ? { unevaluatedProperties: options.unevaluatedProperties } : {}; + return CreateType(options.unevaluatedProperties === false || IsSchema(options.unevaluatedProperties) || allObjects ? { + ...clonedUnevaluatedProperties, + [Kind]: "Intersect", + type: "object", + allOf: T$3 + } : { + ...clonedUnevaluatedProperties, + [Kind]: "Intersect", + allOf: T$3 + }, options); +} +var init_intersect_create = __esmMin((() => { + init_type$4(); + init_symbols(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/intersect/intersect-evaluated.mjs +function IsIntersectOptional(types) { + return types.every((left) => IsOptional(left)); +} +function RemoveOptionalFromType(type) { + return Discard(type, [OptionalKind]); +} +function RemoveOptionalFromRest(types) { + return types.map((left) => IsOptional(left) ? RemoveOptionalFromType(left) : left); +} +function ResolveIntersect(types, options) { + return IsIntersectOptional(types) ? Optional(IntersectCreate(RemoveOptionalFromRest(types), options)) : IntersectCreate(RemoveOptionalFromRest(types), options); +} +/** `[Json]` Creates an evaluated Intersect type */ +function IntersectEvaluated(types, options = {}) { + if (types.length === 1) return CreateType(types[0], options); + if (types.length === 0) return Never(options); + if (types.some((schema) => IsTransform(schema))) throw new Error("Cannot intersect transform types"); + return ResolveIntersect(types, options); +} +var init_intersect_evaluated = __esmMin((() => { + init_symbols(); + init_type$4(); + init_discard(); + init_never(); + init_optional(); + init_intersect_create(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/intersect/intersect-type.mjs +var init_intersect_type = __esmMin((() => { + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/intersect/intersect.mjs +/** `[Json]` Creates an evaluated Intersect type */ +function Intersect(types, options) { + if (types.length === 1) return CreateType(types[0], options); + if (types.length === 0) return Never(options); + if (types.some((schema) => IsTransform(schema))) throw new Error("Cannot intersect transform types"); + return IntersectCreate(types, options); +} +var init_intersect$1 = __esmMin((() => { + init_type$4(); + init_never(); + init_intersect_create(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/intersect/index.mjs +var init_intersect = __esmMin((() => { + init_intersect_evaluated(); + init_intersect_type(); + init_intersect$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/ref/ref.mjs +/** `[Json]` Creates a Ref type. The referenced type must contain a $id */ +function Ref(...args) { + const [$ref, options] = typeof args[0] === "string" ? [args[0], args[1]] : [args[0].$id, args[1]]; + if (typeof $ref !== "string") throw new TypeBoxError("Ref: $ref must be a string"); + return CreateType({ + [Kind]: "Ref", + $ref + }, options); +} +var init_ref$1 = __esmMin((() => { + init_error(); + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/ref/index.mjs +var init_ref = __esmMin((() => { + init_ref$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/awaited/awaited.mjs +function FromComputed$4(target, parameters) { + return Computed("Awaited", [Computed(target, parameters)]); +} +function FromRef$3($ref) { + return Computed("Awaited", [Ref($ref)]); +} +function FromIntersect$6(types) { + return Intersect(FromRest$4(types)); +} +function FromUnion$6(types) { + return Union(FromRest$4(types)); +} +function FromPromise$2(type) { + return Awaited(type); +} +function FromRest$4(types) { + return types.map((type) => Awaited(type)); +} +/** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */ +function Awaited(type, options) { + return CreateType(IsComputed(type) ? FromComputed$4(type.target, type.parameters) : IsIntersect(type) ? FromIntersect$6(type.allOf) : IsUnion(type) ? FromUnion$6(type.anyOf) : IsPromise(type) ? FromPromise$2(type.item) : IsRef(type) ? FromRef$3(type.$ref) : type, options); +} +var init_awaited$1 = __esmMin((() => { + init_type$4(); + init_computed(); + init_intersect(); + init_union$1(); + init_ref(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/awaited/index.mjs +var init_awaited = __esmMin((() => { + init_awaited$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/keyof/keyof-property-keys.mjs +function FromRest$3(types) { + const result = []; + for (const L$2 of types) result.push(KeyOfPropertyKeys(L$2)); + return result; +} +function FromIntersect$5(types) { + const propertyKeysArray = FromRest$3(types); + const propertyKeys = SetUnionMany(propertyKeysArray); + return propertyKeys; +} +function FromUnion$5(types) { + const propertyKeysArray = FromRest$3(types); + const propertyKeys = SetIntersectMany(propertyKeysArray); + return propertyKeys; +} +function FromTuple$3(types) { + return types.map((_$2, indexer) => indexer.toString()); +} +function FromArray$4(_$2) { + return ["[number]"]; +} +function FromProperties$14(T$3) { + return globalThis.Object.getOwnPropertyNames(T$3); +} +function FromPatternProperties(patternProperties) { + if (!includePatternProperties) return []; + const patternPropertyKeys = globalThis.Object.getOwnPropertyNames(patternProperties); + return patternPropertyKeys.map((key) => { + return key[0] === "^" && key[key.length - 1] === "$" ? key.slice(1, key.length - 1) : key; + }); +} +/** Returns a tuple of PropertyKeys derived from the given TSchema. */ +function KeyOfPropertyKeys(type) { + return IsIntersect(type) ? FromIntersect$5(type.allOf) : IsUnion(type) ? FromUnion$5(type.anyOf) : IsTuple(type) ? FromTuple$3(type.items ?? []) : IsArray$1(type) ? FromArray$4(type.items) : IsObject(type) ? FromProperties$14(type.properties) : IsRecord(type) ? FromPatternProperties(type.patternProperties) : []; +} +/** Returns a regular expression pattern derived from the given TSchema */ +function KeyOfPattern(schema) { + includePatternProperties = true; + const keys$1 = KeyOfPropertyKeys(schema); + includePatternProperties = false; + const pattern = keys$1.map((key) => `(${key})`); + return `^(${pattern.join("|")})$`; +} +var includePatternProperties; +var init_keyof_property_keys = __esmMin((() => { + init_sets(); + init_kind(); + includePatternProperties = false; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/keyof/keyof.mjs +function FromComputed$3(target, parameters) { + return Computed("KeyOf", [Computed(target, parameters)]); +} +function FromRef$2($ref) { + return Computed("KeyOf", [Ref($ref)]); +} +function KeyOfFromType(type, options) { + const propertyKeys = KeyOfPropertyKeys(type); + const propertyKeyTypes = KeyOfPropertyKeysToRest(propertyKeys); + const result = UnionEvaluated(propertyKeyTypes); + return CreateType(result, options); +} +function KeyOfPropertyKeysToRest(propertyKeys) { + return propertyKeys.map((L$2) => L$2 === "[number]" ? Number$1() : Literal(L$2)); +} +/** `[Json]` Creates a KeyOf type */ +function KeyOf(type, options) { + return IsComputed(type) ? FromComputed$3(type.target, type.parameters) : IsRef(type) ? FromRef$2(type.$ref) : IsMappedResult(type) ? KeyOfFromMappedResult(type, options) : KeyOfFromType(type, options); +} +var init_keyof$1 = __esmMin((() => { + init_type$4(); + init_literal(); + init_number(); + init_computed(); + init_ref(); + init_keyof_property_keys(); + init_union$1(); + init_keyof_from_mapped_result(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/keyof/keyof-from-mapped-result.mjs +function FromProperties$13(properties$1, options) { + const result = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(properties$1)) result[K2] = KeyOf(properties$1[K2], Clone(options)); + return result; +} +function FromMappedResult$7(mappedResult, options) { + return FromProperties$13(mappedResult.properties, options); +} +function KeyOfFromMappedResult(mappedResult, options) { + const properties$1 = FromMappedResult$7(mappedResult, options); + return MappedResult(properties$1); +} +var init_keyof_from_mapped_result = __esmMin((() => { + init_mapped(); + init_keyof$1(); + init_value(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/keyof/keyof-property-entries.mjs +/** +* `[Utility]` Resolves an array of keys and schemas from the given schema. This method is faster +* than obtaining the keys and resolving each individually via indexing. This method was written +* accellerate Intersect and Union encoding. +*/ +function KeyOfPropertyEntries(schema) { + const keys$1 = KeyOfPropertyKeys(schema); + const schemas = IndexFromPropertyKeys(schema, keys$1); + return keys$1.map((_$2, index) => [keys$1[index], schemas[index]]); +} +var init_keyof_property_entries = __esmMin((() => { + init_indexed$1(); + init_keyof_property_keys(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/keyof/index.mjs +var init_keyof = __esmMin((() => { + init_keyof_from_mapped_result(); + init_keyof_property_entries(); + init_keyof_property_keys(); + init_keyof$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/composite/composite.mjs +function CompositeKeys(T$3) { + const Acc = []; + for (const L$2 of T$3) Acc.push(...KeyOfPropertyKeys(L$2)); + return SetDistinct(Acc); +} +function FilterNever(T$3) { + return T$3.filter((L$2) => !IsNever(L$2)); +} +function CompositeProperty(T$3, K$1) { + const Acc = []; + for (const L$2 of T$3) Acc.push(...IndexFromPropertyKeys(L$2, [K$1])); + return FilterNever(Acc); +} +function CompositeProperties(T$3, K$1) { + const Acc = {}; + for (const L$2 of K$1) { + Acc[L$2] = IntersectEvaluated(CompositeProperty(T$3, L$2)); + } + return Acc; +} +function Composite(T$3, options) { + const K$1 = CompositeKeys(T$3); + const P$2 = CompositeProperties(T$3, K$1); + const R$1 = Object$1(P$2, options); + return R$1; +} +var init_composite$1 = __esmMin((() => { + init_intersect(); + init_indexed(); + init_keyof(); + init_object(); + init_sets(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/composite/index.mjs +var init_composite = __esmMin((() => { + init_composite$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/date/date.mjs +/** `[JavaScript]` Creates a Date type */ +function Date$1(options) { + return CreateType({ + [Kind]: "Date", + type: "Date" + }, options); +} +var init_date$1 = __esmMin((() => { + init_symbols(); + init_type$4(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/date/index.mjs +var init_date = __esmMin((() => { + init_date$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/null/null.mjs +/** `[Json]` Creates a Null type */ +function Null(options) { + return CreateType({ + [Kind]: "Null", + type: "null" + }, options); +} +var init_null$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/null/index.mjs +var init_null = __esmMin((() => { + init_null$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/symbol/symbol.mjs +/** `[JavaScript]` Creates a Symbol type */ +function Symbol$1(options) { + return CreateType({ + [Kind]: "Symbol", + type: "symbol" + }, options); +} +var init_symbol$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/symbol/index.mjs +var init_symbol = __esmMin((() => { + init_symbol$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/undefined/undefined.mjs +/** `[JavaScript]` Creates a Undefined type */ +function Undefined(options) { + return CreateType({ + [Kind]: "Undefined", + type: "undefined" + }, options); +} +var init_undefined$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/undefined/index.mjs +var init_undefined = __esmMin((() => { + init_undefined$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/uint8array/uint8array.mjs +/** `[JavaScript]` Creates a Uint8Array type */ +function Uint8Array$1(options) { + return CreateType({ + [Kind]: "Uint8Array", + type: "Uint8Array" + }, options); +} +var init_uint8array$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/uint8array/index.mjs +var init_uint8array = __esmMin((() => { + init_uint8array$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/unknown/unknown.mjs +/** `[Json]` Creates an Unknown type */ +function Unknown(options) { + return CreateType({ [Kind]: "Unknown" }, options); +} +var init_unknown$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/unknown/index.mjs +var init_unknown = __esmMin((() => { + init_unknown$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/const/const.mjs +function FromArray$3(T$3) { + return T$3.map((L$2) => FromValue(L$2, false)); +} +function FromProperties$12(value) { + const Acc = {}; + for (const K$1 of globalThis.Object.getOwnPropertyNames(value)) Acc[K$1] = Readonly(FromValue(value[K$1], false)); + return Acc; +} +function ConditionalReadonly(T$3, root) { + return root === true ? T$3 : Readonly(T$3); +} +function FromValue(value, root) { + return IsAsyncIterator(value) ? ConditionalReadonly(Any(), root) : IsIterator(value) ? ConditionalReadonly(Any(), root) : IsArray(value) ? Readonly(Tuple(FromArray$3(value))) : IsUint8Array(value) ? Uint8Array$1() : IsDate(value) ? Date$1() : IsObject$1(value) ? ConditionalReadonly(Object$1(FromProperties$12(value)), root) : IsFunction(value) ? ConditionalReadonly(Function$1([], Unknown()), root) : IsUndefined(value) ? Undefined() : IsNull(value) ? Null() : IsSymbol(value) ? Symbol$1() : IsBigInt(value) ? BigInt() : IsNumber$1(value) ? Literal(value) : IsBoolean$1(value) ? Literal(value) : IsString(value) ? Literal(value) : Object$1({}); +} +/** `[JavaScript]` Creates a readonly const type from the given value. */ +function Const(T$3, options) { + return CreateType(FromValue(T$3, true), options); +} +var init_const$1 = __esmMin((() => { + init_any(); + init_bigint(); + init_date(); + init_function(); + init_literal(); + init_null(); + init_object(); + init_symbol(); + init_tuple(); + init_readonly(); + init_undefined(); + init_uint8array(); + init_unknown(); + init_create$1(); + init_value$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/const/index.mjs +var init_const = __esmMin((() => { + init_const$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/constructor-parameters/constructor-parameters.mjs +/** `[JavaScript]` Extracts the ConstructorParameters from the given Constructor type */ +function ConstructorParameters(schema, options) { + return IsConstructor(schema) ? Tuple(schema.parameters, options) : Never(options); +} +var init_constructor_parameters$1 = __esmMin((() => { + init_tuple(); + init_never(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/constructor-parameters/index.mjs +var init_constructor_parameters = __esmMin((() => { + init_constructor_parameters$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/enum/enum.mjs +/** `[Json]` Creates a Enum type */ +function Enum(item, options) { + if (IsUndefined(item)) throw new Error("Enum undefined or empty"); + const values1 = globalThis.Object.getOwnPropertyNames(item).filter((key) => isNaN(key)).map((key) => item[key]); + const values2 = [...new Set(values1)]; + const anyOf = values2.map((value) => Literal(value)); + return Union(anyOf, { + ...options, + [Hint]: "Enum" + }); +} +var init_enum$1 = __esmMin((() => { + init_literal(); + init_symbols(); + init_union$1(); + init_value$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/enum/index.mjs +var init_enum = __esmMin((() => { + init_enum$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/extends/extends-check.mjs +function IntoBooleanResult(result) { + return result === ExtendsResult.False ? result : ExtendsResult.True; +} +function Throw(message) { + throw new ExtendsResolverError(message); +} +function IsStructuralRight(right) { + return IsNever$1(right) || IsIntersect$1(right) || IsUnion$1(right) || IsUnknown(right) || IsAny$1(right); +} +function StructuralRight(left, right) { + return IsNever$1(right) ? FromNeverRight(left, right) : IsIntersect$1(right) ? FromIntersectRight(left, right) : IsUnion$1(right) ? FromUnionRight(left, right) : IsUnknown(right) ? FromUnknownRight(left, right) : IsAny$1(right) ? FromAnyRight(left, right) : Throw("StructuralRight"); +} +function FromAnyRight(left, right) { + return ExtendsResult.True; +} +function FromAny(left, right) { + return IsIntersect$1(right) ? FromIntersectRight(left, right) : IsUnion$1(right) && right.anyOf.some((schema) => IsAny$1(schema) || IsUnknown(schema)) ? ExtendsResult.True : IsUnion$1(right) ? ExtendsResult.Union : IsUnknown(right) ? ExtendsResult.True : IsAny$1(right) ? ExtendsResult.True : ExtendsResult.Union; +} +function FromArrayRight(left, right) { + return IsUnknown(left) ? ExtendsResult.False : IsAny$1(left) ? ExtendsResult.Union : IsNever$1(left) ? ExtendsResult.True : ExtendsResult.False; +} +function FromArray$2(left, right) { + return IsObject$2(right) && IsObjectArrayLike(right) ? ExtendsResult.True : IsStructuralRight(right) ? StructuralRight(left, right) : !IsArray$2(right) ? ExtendsResult.False : IntoBooleanResult(Visit(left.items, right.items)); +} +function FromAsyncIterator$2(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : !IsAsyncIterator$2(right) ? ExtendsResult.False : IntoBooleanResult(Visit(left.items, right.items)); +} +function FromBigInt(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : IsRecord$1(right) ? FromRecordRight(left, right) : IsBigInt$2(right) ? ExtendsResult.True : ExtendsResult.False; +} +function FromBooleanRight(left, right) { + return IsLiteralBoolean(left) ? ExtendsResult.True : IsBoolean$2(left) ? ExtendsResult.True : ExtendsResult.False; +} +function FromBoolean(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : IsRecord$1(right) ? FromRecordRight(left, right) : IsBoolean$2(right) ? ExtendsResult.True : ExtendsResult.False; +} +function FromConstructor$2(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : !IsConstructor$1(right) ? ExtendsResult.False : left.parameters.length > right.parameters.length ? ExtendsResult.False : !left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True) ? ExtendsResult.False : IntoBooleanResult(Visit(left.returns, right.returns)); +} +function FromDate(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : IsRecord$1(right) ? FromRecordRight(left, right) : IsDate$1(right) ? ExtendsResult.True : ExtendsResult.False; +} +function FromFunction$2(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : !IsFunction$2(right) ? ExtendsResult.False : left.parameters.length > right.parameters.length ? ExtendsResult.False : !left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True) ? ExtendsResult.False : IntoBooleanResult(Visit(left.returns, right.returns)); +} +function FromIntegerRight(left, right) { + return IsLiteral$1(left) && IsNumber$1(left.const) ? ExtendsResult.True : IsNumber$2(left) || IsInteger$1(left) ? ExtendsResult.True : ExtendsResult.False; +} +function FromInteger(left, right) { + return IsInteger$1(right) || IsNumber$2(right) ? ExtendsResult.True : IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : IsRecord$1(right) ? FromRecordRight(left, right) : ExtendsResult.False; +} +function FromIntersectRight(left, right) { + return right.allOf.every((schema) => Visit(left, schema) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; +} +function FromIntersect$4(left, right) { + return left.allOf.some((schema) => Visit(schema, right) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; +} +function FromIterator$2(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : !IsIterator$2(right) ? ExtendsResult.False : IntoBooleanResult(Visit(left.items, right.items)); +} +function FromLiteral(left, right) { + return IsLiteral$1(right) && right.const === left.const ? ExtendsResult.True : IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : IsRecord$1(right) ? FromRecordRight(left, right) : IsString$2(right) ? FromStringRight(left, right) : IsNumber$2(right) ? FromNumberRight(left, right) : IsInteger$1(right) ? FromIntegerRight(left, right) : IsBoolean$2(right) ? FromBooleanRight(left, right) : ExtendsResult.False; +} +function FromNeverRight(left, right) { + return ExtendsResult.False; +} +function FromNever(left, right) { + return ExtendsResult.True; +} +function UnwrapTNot(schema) { + let [current, depth] = [schema, 0]; + while (true) { + if (!IsNot(current)) break; + current = current.not; + depth += 1; + } + return depth % 2 === 0 ? current : Unknown(); +} +function FromNot(left, right) { + return IsNot(left) ? Visit(UnwrapTNot(left), right) : IsNot(right) ? Visit(left, UnwrapTNot(right)) : Throw("Invalid fallthrough for Not"); +} +function FromNull(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : IsRecord$1(right) ? FromRecordRight(left, right) : IsNull$1(right) ? ExtendsResult.True : ExtendsResult.False; +} +function FromNumberRight(left, right) { + return IsLiteralNumber(left) ? ExtendsResult.True : IsNumber$2(left) || IsInteger$1(left) ? ExtendsResult.True : ExtendsResult.False; +} +function FromNumber(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : IsRecord$1(right) ? FromRecordRight(left, right) : IsInteger$1(right) || IsNumber$2(right) ? ExtendsResult.True : ExtendsResult.False; +} +function IsObjectPropertyCount(schema, count) { + return Object.getOwnPropertyNames(schema.properties).length === count; +} +function IsObjectStringLike(schema) { + return IsObjectArrayLike(schema); +} +function IsObjectSymbolLike(schema) { + return IsObjectPropertyCount(schema, 0) || IsObjectPropertyCount(schema, 1) && "description" in schema.properties && IsUnion$1(schema.properties.description) && schema.properties.description.anyOf.length === 2 && (IsString$2(schema.properties.description.anyOf[0]) && IsUndefined$1(schema.properties.description.anyOf[1]) || IsString$2(schema.properties.description.anyOf[1]) && IsUndefined$1(schema.properties.description.anyOf[0])); +} +function IsObjectNumberLike(schema) { + return IsObjectPropertyCount(schema, 0); +} +function IsObjectBooleanLike(schema) { + return IsObjectPropertyCount(schema, 0); +} +function IsObjectBigIntLike(schema) { + return IsObjectPropertyCount(schema, 0); +} +function IsObjectDateLike(schema) { + return IsObjectPropertyCount(schema, 0); +} +function IsObjectUint8ArrayLike(schema) { + return IsObjectArrayLike(schema); +} +function IsObjectFunctionLike(schema) { + const length = Number$1(); + return IsObjectPropertyCount(schema, 0) || IsObjectPropertyCount(schema, 1) && "length" in schema.properties && IntoBooleanResult(Visit(schema.properties["length"], length)) === ExtendsResult.True; +} +function IsObjectConstructorLike(schema) { + return IsObjectPropertyCount(schema, 0); +} +function IsObjectArrayLike(schema) { + const length = Number$1(); + return IsObjectPropertyCount(schema, 0) || IsObjectPropertyCount(schema, 1) && "length" in schema.properties && IntoBooleanResult(Visit(schema.properties["length"], length)) === ExtendsResult.True; +} +function IsObjectPromiseLike(schema) { + const then = Function$1([Any()], Any()); + return IsObjectPropertyCount(schema, 0) || IsObjectPropertyCount(schema, 1) && "then" in schema.properties && IntoBooleanResult(Visit(schema.properties["then"], then)) === ExtendsResult.True; +} +function Property(left, right) { + return Visit(left, right) === ExtendsResult.False ? ExtendsResult.False : IsOptional$1(left) && !IsOptional$1(right) ? ExtendsResult.False : ExtendsResult.True; +} +function FromObjectRight(left, right) { + return IsUnknown(left) ? ExtendsResult.False : IsAny$1(left) ? ExtendsResult.Union : IsNever$1(left) || IsLiteralString(left) && IsObjectStringLike(right) || IsLiteralNumber(left) && IsObjectNumberLike(right) || IsLiteralBoolean(left) && IsObjectBooleanLike(right) || IsSymbol$1(left) && IsObjectSymbolLike(right) || IsBigInt$2(left) && IsObjectBigIntLike(right) || IsString$2(left) && IsObjectStringLike(right) || IsSymbol$1(left) && IsObjectSymbolLike(right) || IsNumber$2(left) && IsObjectNumberLike(right) || IsInteger$1(left) && IsObjectNumberLike(right) || IsBoolean$2(left) && IsObjectBooleanLike(right) || IsUint8Array$1(left) && IsObjectUint8ArrayLike(right) || IsDate$1(left) && IsObjectDateLike(right) || IsConstructor$1(left) && IsObjectConstructorLike(right) || IsFunction$2(left) && IsObjectFunctionLike(right) ? ExtendsResult.True : IsRecord$1(left) && IsString$2(RecordKey$1(left)) ? (() => { + return right[Hint] === "Record" ? ExtendsResult.True : ExtendsResult.False; + })() : IsRecord$1(left) && IsNumber$2(RecordKey$1(left)) ? (() => { + return IsObjectPropertyCount(right, 0) ? ExtendsResult.True : ExtendsResult.False; + })() : ExtendsResult.False; +} +function FromObject$6(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsRecord$1(right) ? FromRecordRight(left, right) : !IsObject$2(right) ? ExtendsResult.False : (() => { + for (const key of Object.getOwnPropertyNames(right.properties)) { + if (!(key in left.properties) && !IsOptional$1(right.properties[key])) { + return ExtendsResult.False; + } + if (IsOptional$1(right.properties[key])) { + return ExtendsResult.True; + } + if (Property(left.properties[key], right.properties[key]) === ExtendsResult.False) { + return ExtendsResult.False; + } + } + return ExtendsResult.True; + })(); +} +function FromPromise$1(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) && IsObjectPromiseLike(right) ? ExtendsResult.True : !IsPromise$1(right) ? ExtendsResult.False : IntoBooleanResult(Visit(left.item, right.item)); +} +function RecordKey$1(schema) { + return PatternNumberExact in schema.patternProperties ? Number$1() : PatternStringExact in schema.patternProperties ? String$1() : Throw("Unknown record key pattern"); +} +function RecordValue$1(schema) { + return PatternNumberExact in schema.patternProperties ? schema.patternProperties[PatternNumberExact] : PatternStringExact in schema.patternProperties ? schema.patternProperties[PatternStringExact] : Throw("Unable to get record value schema"); +} +function FromRecordRight(left, right) { + const [Key$1, Value] = [RecordKey$1(right), RecordValue$1(right)]; + return IsLiteralString(left) && IsNumber$2(Key$1) && IntoBooleanResult(Visit(left, Value)) === ExtendsResult.True ? ExtendsResult.True : IsUint8Array$1(left) && IsNumber$2(Key$1) ? Visit(left, Value) : IsString$2(left) && IsNumber$2(Key$1) ? Visit(left, Value) : IsArray$2(left) && IsNumber$2(Key$1) ? Visit(left, Value) : IsObject$2(left) ? (() => { + for (const key of Object.getOwnPropertyNames(left.properties)) { + if (Property(Value, left.properties[key]) === ExtendsResult.False) { + return ExtendsResult.False; + } + } + return ExtendsResult.True; + })() : ExtendsResult.False; +} +function FromRecord$2(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : !IsRecord$1(right) ? ExtendsResult.False : Visit(RecordValue$1(left), RecordValue$1(right)); +} +function FromRegExp(left, right) { + const L$2 = IsRegExp$1(left) ? String$1() : left; + const R$1 = IsRegExp$1(right) ? String$1() : right; + return Visit(L$2, R$1); +} +function FromStringRight(left, right) { + return IsLiteral$1(left) && IsString(left.const) ? ExtendsResult.True : IsString$2(left) ? ExtendsResult.True : ExtendsResult.False; +} +function FromString(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : IsRecord$1(right) ? FromRecordRight(left, right) : IsString$2(right) ? ExtendsResult.True : ExtendsResult.False; +} +function FromSymbol(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : IsRecord$1(right) ? FromRecordRight(left, right) : IsSymbol$1(right) ? ExtendsResult.True : ExtendsResult.False; +} +function FromTemplateLiteral$1(left, right) { + return IsTemplateLiteral$1(left) ? Visit(TemplateLiteralToUnion(left), right) : IsTemplateLiteral$1(right) ? Visit(left, TemplateLiteralToUnion(right)) : Throw("Invalid fallthrough for TemplateLiteral"); +} +function IsArrayOfTuple(left, right) { + return IsArray$2(right) && left.items !== undefined && left.items.every((schema) => Visit(schema, right.items) === ExtendsResult.True); +} +function FromTupleRight(left, right) { + return IsNever$1(left) ? ExtendsResult.True : IsUnknown(left) ? ExtendsResult.False : IsAny$1(left) ? ExtendsResult.Union : ExtendsResult.False; +} +function FromTuple$2(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) && IsObjectArrayLike(right) ? ExtendsResult.True : IsArray$2(right) && IsArrayOfTuple(left, right) ? ExtendsResult.True : !IsTuple$1(right) ? ExtendsResult.False : IsUndefined(left.items) && !IsUndefined(right.items) || !IsUndefined(left.items) && IsUndefined(right.items) ? ExtendsResult.False : IsUndefined(left.items) && !IsUndefined(right.items) ? ExtendsResult.True : left.items.every((schema, index) => Visit(schema, right.items[index]) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; +} +function FromUint8Array(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : IsRecord$1(right) ? FromRecordRight(left, right) : IsUint8Array$1(right) ? ExtendsResult.True : ExtendsResult.False; +} +function FromUndefined(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : IsRecord$1(right) ? FromRecordRight(left, right) : IsVoid(right) ? FromVoidRight(left, right) : IsUndefined$1(right) ? ExtendsResult.True : ExtendsResult.False; +} +function FromUnionRight(left, right) { + return right.anyOf.some((schema) => Visit(left, schema) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; +} +function FromUnion$4(left, right) { + return left.anyOf.every((schema) => Visit(schema, right) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; +} +function FromUnknownRight(left, right) { + return ExtendsResult.True; +} +function FromUnknown(left, right) { + return IsNever$1(right) ? FromNeverRight(left, right) : IsIntersect$1(right) ? FromIntersectRight(left, right) : IsUnion$1(right) ? FromUnionRight(left, right) : IsAny$1(right) ? FromAnyRight(left, right) : IsString$2(right) ? FromStringRight(left, right) : IsNumber$2(right) ? FromNumberRight(left, right) : IsInteger$1(right) ? FromIntegerRight(left, right) : IsBoolean$2(right) ? FromBooleanRight(left, right) : IsArray$2(right) ? FromArrayRight(left, right) : IsTuple$1(right) ? FromTupleRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : IsUnknown(right) ? ExtendsResult.True : ExtendsResult.False; +} +function FromVoidRight(left, right) { + return IsUndefined$1(left) ? ExtendsResult.True : IsUndefined$1(left) ? ExtendsResult.True : ExtendsResult.False; +} +function FromVoid(left, right) { + return IsIntersect$1(right) ? FromIntersectRight(left, right) : IsUnion$1(right) ? FromUnionRight(left, right) : IsUnknown(right) ? FromUnknownRight(left, right) : IsAny$1(right) ? FromAnyRight(left, right) : IsObject$2(right) ? FromObjectRight(left, right) : IsVoid(right) ? ExtendsResult.True : ExtendsResult.False; +} +function Visit(left, right) { + return IsTemplateLiteral$1(left) || IsTemplateLiteral$1(right) ? FromTemplateLiteral$1(left, right) : IsRegExp$1(left) || IsRegExp$1(right) ? FromRegExp(left, right) : IsNot(left) || IsNot(right) ? FromNot(left, right) : IsAny$1(left) ? FromAny(left, right) : IsArray$2(left) ? FromArray$2(left, right) : IsBigInt$2(left) ? FromBigInt(left, right) : IsBoolean$2(left) ? FromBoolean(left, right) : IsAsyncIterator$2(left) ? FromAsyncIterator$2(left, right) : IsConstructor$1(left) ? FromConstructor$2(left, right) : IsDate$1(left) ? FromDate(left, right) : IsFunction$2(left) ? FromFunction$2(left, right) : IsInteger$1(left) ? FromInteger(left, right) : IsIntersect$1(left) ? FromIntersect$4(left, right) : IsIterator$2(left) ? FromIterator$2(left, right) : IsLiteral$1(left) ? FromLiteral(left, right) : IsNever$1(left) ? FromNever(left, right) : IsNull$1(left) ? FromNull(left, right) : IsNumber$2(left) ? FromNumber(left, right) : IsObject$2(left) ? FromObject$6(left, right) : IsRecord$1(left) ? FromRecord$2(left, right) : IsString$2(left) ? FromString(left, right) : IsSymbol$1(left) ? FromSymbol(left, right) : IsTuple$1(left) ? FromTuple$2(left, right) : IsPromise$1(left) ? FromPromise$1(left, right) : IsUint8Array$1(left) ? FromUint8Array(left, right) : IsUndefined$1(left) ? FromUndefined(left, right) : IsUnion$1(left) ? FromUnion$4(left, right) : IsUnknown(left) ? FromUnknown(left, right) : IsVoid(left) ? FromVoid(left, right) : Throw(`Unknown left type operand '${left[Kind]}'`); +} +function ExtendsCheck(left, right) { + return Visit(left, right); +} +var ExtendsResolverError, ExtendsResult; +var init_extends_check = __esmMin((() => { + init_any(); + init_function(); + init_number(); + init_string$1(); + init_unknown(); + init_template_literal(); + init_patterns(); + init_symbols(); + init_error(); + init_guard(); + ExtendsResolverError = class extends TypeBoxError {}; + ; + (function(ExtendsResult$1) { + ExtendsResult$1[ExtendsResult$1["Union"] = 0] = "Union"; + ExtendsResult$1[ExtendsResult$1["True"] = 1] = "True"; + ExtendsResult$1[ExtendsResult$1["False"] = 2] = "False"; + })(ExtendsResult || (ExtendsResult = {})); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-result.mjs +function FromProperties$11(P$2, Right, True, False, options) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(P$2)) Acc[K2] = Extends(P$2[K2], Right, True, False, Clone(options)); + return Acc; +} +function FromMappedResult$6(Left, Right, True, False, options) { + return FromProperties$11(Left.properties, Right, True, False, options); +} +function ExtendsFromMappedResult(Left, Right, True, False, options) { + const P$2 = FromMappedResult$6(Left, Right, True, False, options); + return MappedResult(P$2); +} +var init_extends_from_mapped_result = __esmMin((() => { + init_mapped(); + init_extends$1(); + init_value(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/extends/extends.mjs +function ExtendsResolve(left, right, trueType, falseType) { + const R$1 = ExtendsCheck(left, right); + return R$1 === ExtendsResult.Union ? Union([trueType, falseType]) : R$1 === ExtendsResult.True ? trueType : falseType; +} +/** `[Json]` Creates a Conditional type */ +function Extends(L$2, R$1, T$3, F$1, options) { + return IsMappedResult(L$2) ? ExtendsFromMappedResult(L$2, R$1, T$3, F$1, options) : IsMappedKey(L$2) ? CreateType(ExtendsFromMappedKey(L$2, R$1, T$3, F$1, options)) : CreateType(ExtendsResolve(L$2, R$1, T$3, F$1), options); +} +var init_extends$1 = __esmMin((() => { + init_type$4(); + init_union$1(); + init_extends_check(); + init_extends_from_mapped_key(); + init_extends_from_mapped_result(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-key.mjs +function FromPropertyKey$2(K$1, U$1, L$2, R$1, options) { + return { [K$1]: Extends(Literal(K$1), U$1, L$2, R$1, Clone(options)) }; +} +function FromPropertyKeys$2(K$1, U$1, L$2, R$1, options) { + return K$1.reduce((Acc, LK) => { + return { + ...Acc, + ...FromPropertyKey$2(LK, U$1, L$2, R$1, options) + }; + }, {}); +} +function FromMappedKey$2(K$1, U$1, L$2, R$1, options) { + return FromPropertyKeys$2(K$1.keys, U$1, L$2, R$1, options); +} +function ExtendsFromMappedKey(T$3, U$1, L$2, R$1, options) { + const P$2 = FromMappedKey$2(T$3, U$1, L$2, R$1, options); + return MappedResult(P$2); +} +var init_extends_from_mapped_key = __esmMin((() => { + init_mapped(); + init_literal(); + init_extends$1(); + init_value(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/extends/extends-undefined.mjs +/** Fast undefined check used for properties of type undefined */ +function Intersect$1(schema) { + return schema.allOf.every((schema$1) => ExtendsUndefinedCheck(schema$1)); +} +function Union$1(schema) { + return schema.anyOf.some((schema$1) => ExtendsUndefinedCheck(schema$1)); +} +function Not$1(schema) { + return !ExtendsUndefinedCheck(schema.not); +} +/** Fast undefined check used for properties of type undefined */ +function ExtendsUndefinedCheck(schema) { + return schema[Kind] === "Intersect" ? Intersect$1(schema) : schema[Kind] === "Union" ? Union$1(schema) : schema[Kind] === "Not" ? Not$1(schema) : schema[Kind] === "Undefined" ? true : false; +} +var init_extends_undefined = __esmMin((() => { + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/extends/index.mjs +var init_extends = __esmMin((() => { + init_extends_check(); + init_extends_from_mapped_key(); + init_extends_from_mapped_result(); + init_extends_undefined(); + init_extends$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/exclude/exclude-from-template-literal.mjs +function ExcludeFromTemplateLiteral(L$2, R$1) { + return Exclude(TemplateLiteralToUnion(L$2), R$1); +} +var init_exclude_from_template_literal = __esmMin((() => { + init_exclude$1(); + init_template_literal(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/exclude/exclude.mjs +function ExcludeRest(L$2, R$1) { + const excluded = L$2.filter((inner$1) => ExtendsCheck(inner$1, R$1) === ExtendsResult.False); + return excluded.length === 1 ? excluded[0] : Union(excluded); +} +/** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */ +function Exclude(L$2, R$1, options = {}) { + if (IsTemplateLiteral(L$2)) return CreateType(ExcludeFromTemplateLiteral(L$2, R$1), options); + if (IsMappedResult(L$2)) return CreateType(ExcludeFromMappedResult(L$2, R$1), options); + return CreateType(IsUnion(L$2) ? ExcludeRest(L$2.anyOf, R$1) : ExtendsCheck(L$2, R$1) !== ExtendsResult.False ? Never() : L$2, options); +} +var init_exclude$1 = __esmMin((() => { + init_type$4(); + init_union$1(); + init_never(); + init_extends(); + init_exclude_from_mapped_result(); + init_exclude_from_template_literal(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/exclude/exclude-from-mapped-result.mjs +function FromProperties$10(P$2, U$1) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(P$2)) Acc[K2] = Exclude(P$2[K2], U$1); + return Acc; +} +function FromMappedResult$5(R$1, T$3) { + return FromProperties$10(R$1.properties, T$3); +} +function ExcludeFromMappedResult(R$1, T$3) { + const P$2 = FromMappedResult$5(R$1, T$3); + return MappedResult(P$2); +} +var init_exclude_from_mapped_result = __esmMin((() => { + init_mapped(); + init_exclude$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/exclude/index.mjs +var init_exclude = __esmMin((() => { + init_exclude_from_mapped_result(); + init_exclude_from_template_literal(); + init_exclude$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/extract/extract-from-template-literal.mjs +function ExtractFromTemplateLiteral(L$2, R$1) { + return Extract(TemplateLiteralToUnion(L$2), R$1); +} +var init_extract_from_template_literal = __esmMin((() => { + init_extract$1(); + init_template_literal(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/extract/extract.mjs +function ExtractRest(L$2, R$1) { + const extracted = L$2.filter((inner$1) => ExtendsCheck(inner$1, R$1) !== ExtendsResult.False); + return extracted.length === 1 ? extracted[0] : Union(extracted); +} +/** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */ +function Extract(L$2, R$1, options) { + if (IsTemplateLiteral(L$2)) return CreateType(ExtractFromTemplateLiteral(L$2, R$1), options); + if (IsMappedResult(L$2)) return CreateType(ExtractFromMappedResult(L$2, R$1), options); + return CreateType(IsUnion(L$2) ? ExtractRest(L$2.anyOf, R$1) : ExtendsCheck(L$2, R$1) !== ExtendsResult.False ? L$2 : Never(), options); +} +var init_extract$1 = __esmMin((() => { + init_type$4(); + init_union$1(); + init_never(); + init_extends(); + init_extract_from_mapped_result(); + init_extract_from_template_literal(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/extract/extract-from-mapped-result.mjs +function FromProperties$9(P$2, T$3) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(P$2)) Acc[K2] = Extract(P$2[K2], T$3); + return Acc; +} +function FromMappedResult$4(R$1, T$3) { + return FromProperties$9(R$1.properties, T$3); +} +function ExtractFromMappedResult(R$1, T$3) { + const P$2 = FromMappedResult$4(R$1, T$3); + return MappedResult(P$2); +} +var init_extract_from_mapped_result = __esmMin((() => { + init_mapped(); + init_extract$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/extract/index.mjs +var init_extract = __esmMin((() => { + init_extract_from_mapped_result(); + init_extract_from_template_literal(); + init_extract$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/instance-type/instance-type.mjs +/** `[JavaScript]` Extracts the InstanceType from the given Constructor type */ +function InstanceType(schema, options) { + return IsConstructor(schema) ? CreateType(schema.returns, options) : Never(options); +} +var init_instance_type$1 = __esmMin((() => { + init_type$4(); + init_never(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/instance-type/index.mjs +var init_instance_type = __esmMin((() => { + init_instance_type$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/readonly-optional/readonly-optional.mjs +/** `[Json]` Creates a Readonly and Optional property */ +function ReadonlyOptional(schema) { + return Readonly(Optional(schema)); +} +var init_readonly_optional$1 = __esmMin((() => { + init_readonly(); + init_optional(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/readonly-optional/index.mjs +var init_readonly_optional = __esmMin((() => { + init_readonly_optional$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/record/record.mjs +function RecordCreateFromPattern(pattern, T$3, options) { + return CreateType({ + [Kind]: "Record", + type: "object", + patternProperties: { [pattern]: T$3 } + }, options); +} +function RecordCreateFromKeys(K$1, T$3, options) { + const result = {}; + for (const K2 of K$1) result[K2] = T$3; + return Object$1(result, { + ...options, + [Hint]: "Record" + }); +} +function FromTemplateLiteralKey(K$1, T$3, options) { + return IsTemplateLiteralFinite(K$1) ? RecordCreateFromKeys(IndexPropertyKeys(K$1), T$3, options) : RecordCreateFromPattern(K$1.pattern, T$3, options); +} +function FromUnionKey(key, type, options) { + return RecordCreateFromKeys(IndexPropertyKeys(Union(key)), type, options); +} +function FromLiteralKey(key, type, options) { + return RecordCreateFromKeys([key.toString()], type, options); +} +function FromRegExpKey(key, type, options) { + return RecordCreateFromPattern(key.source, type, options); +} +function FromStringKey(key, type, options) { + const pattern = IsUndefined(key.pattern) ? PatternStringExact : key.pattern; + return RecordCreateFromPattern(pattern, type, options); +} +function FromAnyKey(_$2, type, options) { + return RecordCreateFromPattern(PatternStringExact, type, options); +} +function FromNeverKey(_key, type, options) { + return RecordCreateFromPattern(PatternNeverExact, type, options); +} +function FromBooleanKey(_key, type, options) { + return Object$1({ + true: type, + false: type + }, options); +} +function FromIntegerKey(_key, type, options) { + return RecordCreateFromPattern(PatternNumberExact, type, options); +} +function FromNumberKey(_$2, type, options) { + return RecordCreateFromPattern(PatternNumberExact, type, options); +} +/** `[Json]` Creates a Record type */ +function Record(key, type, options = {}) { + return IsUnion(key) ? FromUnionKey(key.anyOf, type, options) : IsTemplateLiteral(key) ? FromTemplateLiteralKey(key, type, options) : IsLiteral(key) ? FromLiteralKey(key.const, type, options) : IsBoolean(key) ? FromBooleanKey(key, type, options) : IsInteger(key) ? FromIntegerKey(key, type, options) : IsNumber(key) ? FromNumberKey(key, type, options) : IsRegExp(key) ? FromRegExpKey(key, type, options) : IsString$1(key) ? FromStringKey(key, type, options) : IsAny(key) ? FromAnyKey(key, type, options) : IsNever(key) ? FromNeverKey(key, type, options) : Never(options); +} +/** Gets the Records Pattern */ +function RecordPattern(record) { + return globalThis.Object.getOwnPropertyNames(record.patternProperties)[0]; +} +/** Gets the Records Key Type */ +function RecordKey(type) { + const pattern = RecordPattern(type); + return pattern === PatternStringExact ? String$1() : pattern === PatternNumberExact ? Number$1() : String$1({ pattern }); +} +/** Gets a Record Value Type */ +function RecordValue(type) { + return type.patternProperties[RecordPattern(type)]; +} +var init_record$1 = __esmMin((() => { + init_type$4(); + init_symbols(); + init_never(); + init_number(); + init_object(); + init_string$1(); + init_union$1(); + init_template_literal(); + init_patterns(); + init_indexed(); + init_value$1(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/record/index.mjs +var init_record = __esmMin((() => { + init_record$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/instantiate/instantiate.mjs +function FromConstructor$1(args, type) { + type.parameters = FromTypes$1(args, type.parameters); + type.returns = FromType$1(args, type.returns); + return type; +} +function FromFunction$1(args, type) { + type.parameters = FromTypes$1(args, type.parameters); + type.returns = FromType$1(args, type.returns); + return type; +} +function FromIntersect$3(args, type) { + type.allOf = FromTypes$1(args, type.allOf); + return type; +} +function FromUnion$3(args, type) { + type.anyOf = FromTypes$1(args, type.anyOf); + return type; +} +function FromTuple$1(args, type) { + if (IsUndefined(type.items)) return type; + type.items = FromTypes$1(args, type.items); + return type; +} +function FromArray$1(args, type) { + type.items = FromType$1(args, type.items); + return type; +} +function FromAsyncIterator$1(args, type) { + type.items = FromType$1(args, type.items); + return type; +} +function FromIterator$1(args, type) { + type.items = FromType$1(args, type.items); + return type; +} +function FromPromise(args, type) { + type.item = FromType$1(args, type.item); + return type; +} +function FromObject$5(args, type) { + const mappedProperties = FromProperties$8(args, type.properties); + return { + ...type, + ...Object$1(mappedProperties) + }; +} +function FromRecord$1(args, type) { + const mappedKey = FromType$1(args, RecordKey(type)); + const mappedValue = FromType$1(args, RecordValue(type)); + const result = Record(mappedKey, mappedValue); + return { + ...type, + ...result + }; +} +function FromArgument(args, argument) { + return argument.index in args ? args[argument.index] : Unknown(); +} +function FromProperty$1(args, type) { + const isReadonly = IsReadonly(type); + const isOptional = IsOptional(type); + const mapped = FromType$1(args, type); + return isReadonly && isOptional ? ReadonlyOptional(mapped) : isReadonly && !isOptional ? Readonly(mapped) : !isReadonly && isOptional ? Optional(mapped) : mapped; +} +function FromProperties$8(args, properties$1) { + return globalThis.Object.getOwnPropertyNames(properties$1).reduce((result, key) => { + return { + ...result, + [key]: FromProperty$1(args, properties$1[key]) + }; + }, {}); +} +function FromTypes$1(args, types) { + return types.map((type) => FromType$1(args, type)); +} +function FromType$1(args, type) { + return IsConstructor(type) ? FromConstructor$1(args, type) : IsFunction$1(type) ? FromFunction$1(args, type) : IsIntersect(type) ? FromIntersect$3(args, type) : IsUnion(type) ? FromUnion$3(args, type) : IsTuple(type) ? FromTuple$1(args, type) : IsArray$1(type) ? FromArray$1(args, type) : IsAsyncIterator$1(type) ? FromAsyncIterator$1(args, type) : IsIterator$1(type) ? FromIterator$1(args, type) : IsPromise(type) ? FromPromise(args, type) : IsObject(type) ? FromObject$5(args, type) : IsRecord(type) ? FromRecord$1(args, type) : IsArgument$1(type) ? FromArgument(args, type) : type; +} +/** `[JavaScript]` Instantiates a type with the given parameters */ +function Instantiate(type, args) { + return FromType$1(args, CloneType(type)); +} +var init_instantiate$1 = __esmMin((() => { + init_type$5(); + init_unknown(); + init_readonly_optional(); + init_readonly(); + init_optional(); + init_object(); + init_record(); + init_value$1(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/instantiate/index.mjs +var init_instantiate = __esmMin((() => { + init_instantiate$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/integer/integer.mjs +/** `[Json]` Creates an Integer type */ +function Integer(options) { + return CreateType({ + [Kind]: "Integer", + type: "integer" + }, options); +} +var init_integer$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/integer/index.mjs +var init_integer = __esmMin((() => { + init_integer$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/intrinsic/intrinsic-from-mapped-key.mjs +function MappedIntrinsicPropertyKey(K$1, M$3, options) { + return { [K$1]: Intrinsic(Literal(K$1), M$3, Clone(options)) }; +} +function MappedIntrinsicPropertyKeys(K$1, M$3, options) { + const result = K$1.reduce((Acc, L$2) => { + return { + ...Acc, + ...MappedIntrinsicPropertyKey(L$2, M$3, options) + }; + }, {}); + return result; +} +function MappedIntrinsicProperties(T$3, M$3, options) { + return MappedIntrinsicPropertyKeys(T$3["keys"], M$3, options); +} +function IntrinsicFromMappedKey(T$3, M$3, options) { + const P$2 = MappedIntrinsicProperties(T$3, M$3, options); + return MappedResult(P$2); +} +var init_intrinsic_from_mapped_key = __esmMin((() => { + init_mapped(); + init_intrinsic$1(); + init_literal(); + init_value(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/intrinsic/intrinsic.mjs +function ApplyUncapitalize(value) { + const [first, rest] = [value.slice(0, 1), value.slice(1)]; + return [first.toLowerCase(), rest].join(""); +} +function ApplyCapitalize(value) { + const [first, rest] = [value.slice(0, 1), value.slice(1)]; + return [first.toUpperCase(), rest].join(""); +} +function ApplyUppercase(value) { + return value.toUpperCase(); +} +function ApplyLowercase(value) { + return value.toLowerCase(); +} +function FromTemplateLiteral(schema, mode, options) { + const expression = TemplateLiteralParseExact(schema.pattern); + const finite = IsTemplateLiteralExpressionFinite(expression); + if (!finite) return { + ...schema, + pattern: FromLiteralValue(schema.pattern, mode) + }; + const strings = [...TemplateLiteralExpressionGenerate(expression)]; + const literals$1 = strings.map((value) => Literal(value)); + const mapped = FromRest$2(literals$1, mode); + const union = Union(mapped); + return TemplateLiteral([union], options); +} +function FromLiteralValue(value, mode) { + return typeof value === "string" ? mode === "Uncapitalize" ? ApplyUncapitalize(value) : mode === "Capitalize" ? ApplyCapitalize(value) : mode === "Uppercase" ? ApplyUppercase(value) : mode === "Lowercase" ? ApplyLowercase(value) : value : value.toString(); +} +function FromRest$2(T$3, M$3) { + return T$3.map((L$2) => Intrinsic(L$2, M$3)); +} +/** Applies an intrinsic string manipulation to the given type. */ +function Intrinsic(schema, mode, options = {}) { + return IsMappedKey(schema) ? IntrinsicFromMappedKey(schema, mode, options) : IsTemplateLiteral(schema) ? FromTemplateLiteral(schema, mode, options) : IsUnion(schema) ? Union(FromRest$2(schema.anyOf, mode), options) : IsLiteral(schema) ? Literal(FromLiteralValue(schema.const, mode), options) : CreateType(schema, options); +} +var init_intrinsic$1 = __esmMin((() => { + init_type$4(); + init_template_literal(); + init_intrinsic_from_mapped_key(); + init_literal(); + init_union$1(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/intrinsic/capitalize.mjs +/** `[Json]` Intrinsic function to Capitalize LiteralString types */ +function Capitalize(T$3, options = {}) { + return Intrinsic(T$3, "Capitalize", options); +} +var init_capitalize = __esmMin((() => { + init_intrinsic$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/intrinsic/lowercase.mjs +/** `[Json]` Intrinsic function to Lowercase LiteralString types */ +function Lowercase(T$3, options = {}) { + return Intrinsic(T$3, "Lowercase", options); +} +var init_lowercase = __esmMin((() => { + init_intrinsic$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/intrinsic/uncapitalize.mjs +/** `[Json]` Intrinsic function to Uncapitalize LiteralString types */ +function Uncapitalize(T$3, options = {}) { + return Intrinsic(T$3, "Uncapitalize", options); +} +var init_uncapitalize = __esmMin((() => { + init_intrinsic$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/intrinsic/uppercase.mjs +/** `[Json]` Intrinsic function to Uppercase LiteralString types */ +function Uppercase(T$3, options = {}) { + return Intrinsic(T$3, "Uppercase", options); +} +var init_uppercase = __esmMin((() => { + init_intrinsic$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/intrinsic/index.mjs +var init_intrinsic = __esmMin((() => { + init_capitalize(); + init_intrinsic_from_mapped_key(); + init_intrinsic$1(); + init_lowercase(); + init_uncapitalize(); + init_uppercase(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-result.mjs +function FromProperties$7(properties$1, propertyKeys, options) { + const result = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(properties$1)) result[K2] = Omit(properties$1[K2], propertyKeys, Clone(options)); + return result; +} +function FromMappedResult$3(mappedResult, propertyKeys, options) { + return FromProperties$7(mappedResult.properties, propertyKeys, options); +} +function OmitFromMappedResult(mappedResult, propertyKeys, options) { + const properties$1 = FromMappedResult$3(mappedResult, propertyKeys, options); + return MappedResult(properties$1); +} +var init_omit_from_mapped_result = __esmMin((() => { + init_mapped(); + init_omit$1(); + init_value(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/omit/omit.mjs +function FromIntersect$2(types, propertyKeys) { + return types.map((type) => OmitResolve(type, propertyKeys)); +} +function FromUnion$2(types, propertyKeys) { + return types.map((type) => OmitResolve(type, propertyKeys)); +} +function FromProperty(properties$1, key) { + const { [key]: _$2, ...R$1 } = properties$1; + return R$1; +} +function FromProperties$6(properties$1, propertyKeys) { + return propertyKeys.reduce((T$3, K2) => FromProperty(T$3, K2), properties$1); +} +function FromObject$4(properties$1, propertyKeys) { + const options = Discard(properties$1, [ + TransformKind, + "$id", + "required", + "properties" + ]); + const omittedProperties = FromProperties$6(properties$1["properties"], propertyKeys); + return Object$1(omittedProperties, options); +} +function UnionFromPropertyKeys$1(propertyKeys) { + const result = propertyKeys.reduce((result$1, key) => IsLiteralValue(key) ? [...result$1, Literal(key)] : result$1, []); + return Union(result); +} +function OmitResolve(properties$1, propertyKeys) { + return IsIntersect(properties$1) ? Intersect(FromIntersect$2(properties$1.allOf, propertyKeys)) : IsUnion(properties$1) ? Union(FromUnion$2(properties$1.anyOf, propertyKeys)) : IsObject(properties$1) ? FromObject$4(properties$1, propertyKeys) : Object$1({}); +} +/** `[Json]` Constructs a type whose keys are picked from the given type */ +function Omit(type, key, options) { + const typeKey = IsArray(key) ? UnionFromPropertyKeys$1(key) : key; + const propertyKeys = IsSchema(key) ? IndexPropertyKeys(key) : key; + const isTypeRef = IsRef(type); + const isKeyRef = IsRef(key); + return IsMappedResult(type) ? OmitFromMappedResult(type, propertyKeys, options) : IsMappedKey(key) ? OmitFromMappedKey(type, key, options) : isTypeRef && isKeyRef ? Computed("Omit", [type, typeKey], options) : !isTypeRef && isKeyRef ? Computed("Omit", [type, typeKey], options) : isTypeRef && !isKeyRef ? Computed("Omit", [type, typeKey], options) : CreateType({ + ...OmitResolve(type, propertyKeys), + ...options + }); +} +var init_omit$1 = __esmMin((() => { + init_type$4(); + init_discard$1(); + init_symbols$1(); + init_computed(); + init_literal(); + init_indexed(); + init_intersect(); + init_union$1(); + init_object(); + init_omit_from_mapped_key(); + init_omit_from_mapped_result(); + init_kind(); + init_value$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-key.mjs +function FromPropertyKey$1(type, key, options) { + return { [key]: Omit(type, [key], Clone(options)) }; +} +function FromPropertyKeys$1(type, propertyKeys, options) { + return propertyKeys.reduce((Acc, LK) => { + return { + ...Acc, + ...FromPropertyKey$1(type, LK, options) + }; + }, {}); +} +function FromMappedKey$1(type, mappedKey, options) { + return FromPropertyKeys$1(type, mappedKey.keys, options); +} +function OmitFromMappedKey(type, mappedKey, options) { + const properties$1 = FromMappedKey$1(type, mappedKey, options); + return MappedResult(properties$1); +} +var init_omit_from_mapped_key = __esmMin((() => { + init_mapped(); + init_omit$1(); + init_value(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/omit/index.mjs +var init_omit = __esmMin((() => { + init_omit_from_mapped_key(); + init_omit_from_mapped_result(); + init_omit$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-result.mjs +function FromProperties$5(properties$1, propertyKeys, options) { + const result = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(properties$1)) result[K2] = Pick(properties$1[K2], propertyKeys, Clone(options)); + return result; +} +function FromMappedResult$2(mappedResult, propertyKeys, options) { + return FromProperties$5(mappedResult.properties, propertyKeys, options); +} +function PickFromMappedResult(mappedResult, propertyKeys, options) { + const properties$1 = FromMappedResult$2(mappedResult, propertyKeys, options); + return MappedResult(properties$1); +} +var init_pick_from_mapped_result = __esmMin((() => { + init_mapped(); + init_pick$1(); + init_value(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/pick/pick.mjs +function FromIntersect$1(types, propertyKeys) { + return types.map((type) => PickResolve(type, propertyKeys)); +} +function FromUnion$1(types, propertyKeys) { + return types.map((type) => PickResolve(type, propertyKeys)); +} +function FromProperties$4(properties$1, propertyKeys) { + const result = {}; + for (const K2 of propertyKeys) if (K2 in properties$1) result[K2] = properties$1[K2]; + return result; +} +function FromObject$3(T$3, K$1) { + const options = Discard(T$3, [ + TransformKind, + "$id", + "required", + "properties" + ]); + const properties$1 = FromProperties$4(T$3["properties"], K$1); + return Object$1(properties$1, options); +} +function UnionFromPropertyKeys(propertyKeys) { + const result = propertyKeys.reduce((result$1, key) => IsLiteralValue(key) ? [...result$1, Literal(key)] : result$1, []); + return Union(result); +} +function PickResolve(properties$1, propertyKeys) { + return IsIntersect(properties$1) ? Intersect(FromIntersect$1(properties$1.allOf, propertyKeys)) : IsUnion(properties$1) ? Union(FromUnion$1(properties$1.anyOf, propertyKeys)) : IsObject(properties$1) ? FromObject$3(properties$1, propertyKeys) : Object$1({}); +} +/** `[Json]` Constructs a type whose keys are picked from the given type */ +function Pick(type, key, options) { + const typeKey = IsArray(key) ? UnionFromPropertyKeys(key) : key; + const propertyKeys = IsSchema(key) ? IndexPropertyKeys(key) : key; + const isTypeRef = IsRef(type); + const isKeyRef = IsRef(key); + return IsMappedResult(type) ? PickFromMappedResult(type, propertyKeys, options) : IsMappedKey(key) ? PickFromMappedKey(type, key, options) : isTypeRef && isKeyRef ? Computed("Pick", [type, typeKey], options) : !isTypeRef && isKeyRef ? Computed("Pick", [type, typeKey], options) : isTypeRef && !isKeyRef ? Computed("Pick", [type, typeKey], options) : CreateType({ + ...PickResolve(type, propertyKeys), + ...options + }); +} +var init_pick$1 = __esmMin((() => { + init_type$4(); + init_discard$1(); + init_computed(); + init_intersect(); + init_literal(); + init_object(); + init_union$1(); + init_indexed(); + init_symbols$1(); + init_kind(); + init_value$1(); + init_pick_from_mapped_key(); + init_pick_from_mapped_result(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-key.mjs +function FromPropertyKey(type, key, options) { + return { [key]: Pick(type, [key], Clone(options)) }; +} +function FromPropertyKeys(type, propertyKeys, options) { + return propertyKeys.reduce((result, leftKey) => { + return { + ...result, + ...FromPropertyKey(type, leftKey, options) + }; + }, {}); +} +function FromMappedKey(type, mappedKey, options) { + return FromPropertyKeys(type, mappedKey.keys, options); +} +function PickFromMappedKey(type, mappedKey, options) { + const properties$1 = FromMappedKey(type, mappedKey, options); + return MappedResult(properties$1); +} +var init_pick_from_mapped_key = __esmMin((() => { + init_mapped(); + init_pick$1(); + init_value(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/pick/index.mjs +var init_pick = __esmMin((() => { + init_pick_from_mapped_key(); + init_pick_from_mapped_result(); + init_pick$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/partial/partial.mjs +function FromComputed$2(target, parameters) { + return Computed("Partial", [Computed(target, parameters)]); +} +function FromRef$1($ref) { + return Computed("Partial", [Ref($ref)]); +} +function FromProperties$3(properties$1) { + const partialProperties = {}; + for (const K$1 of globalThis.Object.getOwnPropertyNames(properties$1)) partialProperties[K$1] = Optional(properties$1[K$1]); + return partialProperties; +} +function FromObject$2(type) { + const options = Discard(type, [ + TransformKind, + "$id", + "required", + "properties" + ]); + const properties$1 = FromProperties$3(type["properties"]); + return Object$1(properties$1, options); +} +function FromRest$1(types) { + return types.map((type) => PartialResolve(type)); +} +function PartialResolve(type) { + return IsComputed(type) ? FromComputed$2(type.target, type.parameters) : IsRef(type) ? FromRef$1(type.$ref) : IsIntersect(type) ? Intersect(FromRest$1(type.allOf)) : IsUnion(type) ? Union(FromRest$1(type.anyOf)) : IsObject(type) ? FromObject$2(type) : IsBigInt$1(type) ? type : IsBoolean(type) ? type : IsInteger(type) ? type : IsLiteral(type) ? type : IsNull$2(type) ? type : IsNumber(type) ? type : IsString$1(type) ? type : IsSymbol$2(type) ? type : IsUndefined$2(type) ? type : Object$1({}); +} +/** `[Json]` Constructs a type where all properties are optional */ +function Partial(type, options) { + if (IsMappedResult(type)) { + return PartialFromMappedResult(type, options); + } else { + return CreateType({ + ...PartialResolve(type), + ...options + }); + } +} +var init_partial$1 = __esmMin((() => { + init_type$4(); + init_computed(); + init_optional(); + init_object(); + init_intersect(); + init_union$1(); + init_ref(); + init_discard(); + init_symbols(); + init_partial_from_mapped_result(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/partial/partial-from-mapped-result.mjs +function FromProperties$2(K$1, options) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(K$1)) Acc[K2] = Partial(K$1[K2], Clone(options)); + return Acc; +} +function FromMappedResult$1(R$1, options) { + return FromProperties$2(R$1.properties, options); +} +function PartialFromMappedResult(R$1, options) { + const P$2 = FromMappedResult$1(R$1, options); + return MappedResult(P$2); +} +var init_partial_from_mapped_result = __esmMin((() => { + init_mapped(); + init_partial$1(); + init_value(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/partial/index.mjs +var init_partial = __esmMin((() => { + init_partial_from_mapped_result(); + init_partial$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/required/required.mjs +function FromComputed$1(target, parameters) { + return Computed("Required", [Computed(target, parameters)]); +} +function FromRef($ref) { + return Computed("Required", [Ref($ref)]); +} +function FromProperties$1(properties$1) { + const requiredProperties = {}; + for (const K$1 of globalThis.Object.getOwnPropertyNames(properties$1)) requiredProperties[K$1] = Discard(properties$1[K$1], [OptionalKind]); + return requiredProperties; +} +function FromObject$1(type) { + const options = Discard(type, [ + TransformKind, + "$id", + "required", + "properties" + ]); + const properties$1 = FromProperties$1(type["properties"]); + return Object$1(properties$1, options); +} +function FromRest(types) { + return types.map((type) => RequiredResolve(type)); +} +function RequiredResolve(type) { + return IsComputed(type) ? FromComputed$1(type.target, type.parameters) : IsRef(type) ? FromRef(type.$ref) : IsIntersect(type) ? Intersect(FromRest(type.allOf)) : IsUnion(type) ? Union(FromRest(type.anyOf)) : IsObject(type) ? FromObject$1(type) : IsBigInt$1(type) ? type : IsBoolean(type) ? type : IsInteger(type) ? type : IsLiteral(type) ? type : IsNull$2(type) ? type : IsNumber(type) ? type : IsString$1(type) ? type : IsSymbol$2(type) ? type : IsUndefined$2(type) ? type : Object$1({}); +} +/** `[Json]` Constructs a type where all properties are required */ +function Required(type, options) { + if (IsMappedResult(type)) { + return RequiredFromMappedResult(type, options); + } else { + return CreateType({ + ...RequiredResolve(type), + ...options + }); + } +} +var init_required$1 = __esmMin((() => { + init_type$4(); + init_computed(); + init_object(); + init_intersect(); + init_union$1(); + init_ref(); + init_symbols(); + init_discard(); + init_required_from_mapped_result(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/required/required-from-mapped-result.mjs +function FromProperties(P$2, options) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(P$2)) Acc[K2] = Required(P$2[K2], options); + return Acc; +} +function FromMappedResult(R$1, options) { + return FromProperties(R$1.properties, options); +} +function RequiredFromMappedResult(R$1, options) { + const P$2 = FromMappedResult(R$1, options); + return MappedResult(P$2); +} +var init_required_from_mapped_result = __esmMin((() => { + init_mapped(); + init_required$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/required/index.mjs +var init_required = __esmMin((() => { + init_required_from_mapped_result(); + init_required$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/module/compute.mjs +function DereferenceParameters(moduleProperties, types) { + return types.map((type) => { + return IsRef(type) ? Dereference(moduleProperties, type.$ref) : FromType(moduleProperties, type); + }); +} +function Dereference(moduleProperties, ref) { + return ref in moduleProperties ? IsRef(moduleProperties[ref]) ? Dereference(moduleProperties, moduleProperties[ref].$ref) : FromType(moduleProperties, moduleProperties[ref]) : Never(); +} +function FromAwaited(parameters) { + return Awaited(parameters[0]); +} +function FromIndex(parameters) { + return Index(parameters[0], parameters[1]); +} +function FromKeyOf(parameters) { + return KeyOf(parameters[0]); +} +function FromPartial(parameters) { + return Partial(parameters[0]); +} +function FromOmit(parameters) { + return Omit(parameters[0], parameters[1]); +} +function FromPick(parameters) { + return Pick(parameters[0], parameters[1]); +} +function FromRequired(parameters) { + return Required(parameters[0]); +} +function FromComputed(moduleProperties, target, parameters) { + const dereferenced = DereferenceParameters(moduleProperties, parameters); + return target === "Awaited" ? FromAwaited(dereferenced) : target === "Index" ? FromIndex(dereferenced) : target === "KeyOf" ? FromKeyOf(dereferenced) : target === "Partial" ? FromPartial(dereferenced) : target === "Omit" ? FromOmit(dereferenced) : target === "Pick" ? FromPick(dereferenced) : target === "Required" ? FromRequired(dereferenced) : Never(); +} +function FromArray(moduleProperties, type) { + return Array$1(FromType(moduleProperties, type)); +} +function FromAsyncIterator(moduleProperties, type) { + return AsyncIterator(FromType(moduleProperties, type)); +} +function FromConstructor(moduleProperties, parameters, instanceType) { + return Constructor(FromTypes(moduleProperties, parameters), FromType(moduleProperties, instanceType)); +} +function FromFunction(moduleProperties, parameters, returnType) { + return Function$1(FromTypes(moduleProperties, parameters), FromType(moduleProperties, returnType)); +} +function FromIntersect(moduleProperties, types) { + return Intersect(FromTypes(moduleProperties, types)); +} +function FromIterator(moduleProperties, type) { + return Iterator(FromType(moduleProperties, type)); +} +function FromObject(moduleProperties, properties$1) { + return Object$1(globalThis.Object.keys(properties$1).reduce((result, key) => { + return { + ...result, + [key]: FromType(moduleProperties, properties$1[key]) + }; + }, {})); +} +function FromRecord(moduleProperties, type) { + const [value, pattern] = [FromType(moduleProperties, RecordValue(type)), RecordPattern(type)]; + const result = CloneType(type); + result.patternProperties[pattern] = value; + return result; +} +function FromTransform(moduleProperties, transform) { + return IsRef(transform) ? { + ...Dereference(moduleProperties, transform.$ref), + [TransformKind]: transform[TransformKind] + } : transform; +} +function FromTuple(moduleProperties, types) { + return Tuple(FromTypes(moduleProperties, types)); +} +function FromUnion(moduleProperties, types) { + return Union(FromTypes(moduleProperties, types)); +} +function FromTypes(moduleProperties, types) { + return types.map((type) => FromType(moduleProperties, type)); +} +function FromType(moduleProperties, type) { + return IsOptional(type) ? CreateType(FromType(moduleProperties, Discard(type, [OptionalKind])), type) : IsReadonly(type) ? CreateType(FromType(moduleProperties, Discard(type, [ReadonlyKind])), type) : IsTransform(type) ? CreateType(FromTransform(moduleProperties, type), type) : IsArray$1(type) ? CreateType(FromArray(moduleProperties, type.items), type) : IsAsyncIterator$1(type) ? CreateType(FromAsyncIterator(moduleProperties, type.items), type) : IsComputed(type) ? CreateType(FromComputed(moduleProperties, type.target, type.parameters)) : IsConstructor(type) ? CreateType(FromConstructor(moduleProperties, type.parameters, type.returns), type) : IsFunction$1(type) ? CreateType(FromFunction(moduleProperties, type.parameters, type.returns), type) : IsIntersect(type) ? CreateType(FromIntersect(moduleProperties, type.allOf), type) : IsIterator$1(type) ? CreateType(FromIterator(moduleProperties, type.items), type) : IsObject(type) ? CreateType(FromObject(moduleProperties, type.properties), type) : IsRecord(type) ? CreateType(FromRecord(moduleProperties, type)) : IsTuple(type) ? CreateType(FromTuple(moduleProperties, type.items || []), type) : IsUnion(type) ? CreateType(FromUnion(moduleProperties, type.anyOf), type) : type; +} +function ComputeType(moduleProperties, key) { + return key in moduleProperties ? FromType(moduleProperties, moduleProperties[key]) : Never(); +} +function ComputeModuleProperties(moduleProperties) { + return globalThis.Object.getOwnPropertyNames(moduleProperties).reduce((result, key) => { + return { + ...result, + [key]: ComputeType(moduleProperties, key) + }; + }, {}); +} +var init_compute = __esmMin((() => { + init_create$1(); + init_clone(); + init_discard(); + init_array$1(); + init_awaited(); + init_async_iterator(); + init_constructor(); + init_indexed(); + init_function(); + init_intersect(); + init_iterator(); + init_keyof(); + init_object(); + init_omit(); + init_pick(); + init_never(); + init_partial(); + init_record(); + init_required(); + init_tuple(); + init_union$1(); + init_symbols(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/module/module.mjs +/** `[Json]` Creates a Type Definition Module. */ +function Module(properties$1) { + return new TModule(properties$1); +} +var TModule; +var init_module$1 = __esmMin((() => { + init_create$1(); + init_symbols(); + init_compute(); + TModule = class { + constructor($defs) { + const computed = ComputeModuleProperties($defs); + const identified = this.WithIdentifiers(computed); + this.$defs = identified; + } + /** `[Json]` Imports a Type by Key. */ + Import(key, options) { + const $defs = { + ...this.$defs, + [key]: CreateType(this.$defs[key], options) + }; + return CreateType({ + [Kind]: "Import", + $defs, + $ref: key + }); + } + WithIdentifiers($defs) { + return globalThis.Object.getOwnPropertyNames($defs).reduce((result, key) => { + return { + ...result, + [key]: { + ...$defs[key], + $id: key + } + }; + }, {}); + } + }; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/module/index.mjs +var init_module = __esmMin((() => { + init_module$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/not/not.mjs +/** `[Json]` Creates a Not type */ +function Not(type, options) { + return CreateType({ + [Kind]: "Not", + not: type + }, options); +} +var init_not$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/not/index.mjs +var init_not = __esmMin((() => { + init_not$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/parameters/parameters.mjs +/** `[JavaScript]` Extracts the Parameters from the given Function type */ +function Parameters(schema, options) { + return IsFunction$1(schema) ? Tuple(schema.parameters, options) : Never(); +} +var init_parameters$1 = __esmMin((() => { + init_tuple(); + init_never(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/parameters/index.mjs +var init_parameters = __esmMin((() => { + init_parameters$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/recursive/recursive.mjs +/** `[Json]` Creates a Recursive type */ +function Recursive(callback, options = {}) { + if (IsUndefined(options.$id)) options.$id = `T${Ordinal++}`; + const thisType = CloneType(callback({ + [Kind]: "This", + $ref: `${options.$id}` + })); + thisType.$id = options.$id; + return CreateType({ + [Hint]: "Recursive", + ...thisType + }, options); +} +var Ordinal; +var init_recursive$1 = __esmMin((() => { + init_type$5(); + init_type$4(); + init_value$1(); + init_symbols(); + Ordinal = 0; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/recursive/index.mjs +var init_recursive = __esmMin((() => { + init_recursive$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/regexp/regexp.mjs +/** `[JavaScript]` Creates a RegExp type */ +function RegExp$1(unresolved, options) { + const expr = IsString(unresolved) ? new globalThis.RegExp(unresolved) : unresolved; + return CreateType({ + [Kind]: "RegExp", + type: "RegExp", + source: expr.source, + flags: expr.flags + }, options); +} +var init_regexp$1 = __esmMin((() => { + init_type$4(); + init_value$1(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/regexp/index.mjs +var init_regexp = __esmMin((() => { + init_regexp$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/rest/rest.mjs +function RestResolve(T$3) { + return IsIntersect(T$3) ? T$3.allOf : IsUnion(T$3) ? T$3.anyOf : IsTuple(T$3) ? T$3.items ?? [] : []; +} +/** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */ +function Rest(T$3) { + return RestResolve(T$3); +} +var init_rest$1 = __esmMin((() => { + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/rest/index.mjs +var init_rest = __esmMin((() => { + init_rest$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/return-type/return-type.mjs +/** `[JavaScript]` Extracts the ReturnType from the given Function type */ +function ReturnType(schema, options) { + return IsFunction$1(schema) ? CreateType(schema.returns, options) : Never(options); +} +var init_return_type$1 = __esmMin((() => { + init_type$4(); + init_never(); + init_kind(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/return-type/index.mjs +var init_return_type = __esmMin((() => { + init_return_type$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/schema/anyschema.mjs +var init_anyschema = __esmMin((() => {})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/schema/schema.mjs +var init_schema$1 = __esmMin((() => { + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/schema/index.mjs +var init_schema = __esmMin((() => { + init_anyschema(); + init_schema$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/static/static.mjs +var init_static$1 = __esmMin((() => {})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/static/index.mjs +var init_static = __esmMin((() => { + init_static$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/transform/transform.mjs +/** `[Json]` Creates a Transform type */ +function Transform(schema) { + return new TransformDecodeBuilder(schema); +} +var TransformDecodeBuilder, TransformEncodeBuilder; +var init_transform$1 = __esmMin((() => { + init_symbols(); + init_kind(); + TransformDecodeBuilder = class { + constructor(schema) { + this.schema = schema; + } + Decode(decode) { + return new TransformEncodeBuilder(this.schema, decode); + } + }; + TransformEncodeBuilder = class { + constructor(schema, decode) { + this.schema = schema; + this.decode = decode; + } + EncodeTransform(encode, schema) { + const Encode = (value) => schema[TransformKind].Encode(encode(value)); + const Decode = (value) => this.decode(schema[TransformKind].Decode(value)); + const Codec = { + Encode, + Decode + }; + return { + ...schema, + [TransformKind]: Codec + }; + } + EncodeSchema(encode, schema) { + const Codec = { + Decode: this.decode, + Encode: encode + }; + return { + ...schema, + [TransformKind]: Codec + }; + } + Encode(encode) { + return IsTransform(this.schema) ? this.EncodeTransform(encode, this.schema) : this.EncodeSchema(encode, this.schema); + } + }; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/transform/index.mjs +var init_transform = __esmMin((() => { + init_transform$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/unsafe/unsafe.mjs +/** `[Json]` Creates a Unsafe type that will infers as the generic argument T */ +function Unsafe(options = {}) { + return CreateType({ [Kind]: options[Kind] ?? "Unsafe" }, options); +} +var init_unsafe$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/unsafe/index.mjs +var init_unsafe = __esmMin((() => { + init_unsafe$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/void/void.mjs +/** `[JavaScript]` Creates a Void type */ +function Void(options) { + return CreateType({ + [Kind]: "Void", + type: "void" + }, options); +} +var init_void$1 = __esmMin((() => { + init_type$4(); + init_symbols(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/void/index.mjs +var init_void = __esmMin((() => { + init_void$1(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/type/json.mjs +var JsonTypeBuilder; +var init_json$2 = __esmMin((() => { + init_any(); + init_array$1(); + init_boolean(); + init_composite(); + init_const(); + init_enum(); + init_exclude(); + init_extends(); + init_extract(); + init_indexed(); + init_integer(); + init_intersect(); + init_intrinsic(); + init_keyof(); + init_literal(); + init_mapped(); + init_never(); + init_not(); + init_null(); + init_module(); + init_number(); + init_object(); + init_omit(); + init_optional(); + init_partial(); + init_pick(); + init_readonly(); + init_readonly_optional(); + init_record(); + init_recursive(); + init_ref(); + init_required(); + init_rest(); + init_string$1(); + init_template_literal(); + init_transform(); + init_tuple(); + init_union$1(); + init_unknown(); + init_unsafe(); + JsonTypeBuilder = class { + /** `[Json]` Creates a Readonly and Optional property */ + ReadonlyOptional(type) { + return ReadonlyOptional(type); + } + /** `[Json]` Creates a Readonly property */ + Readonly(type, enable) { + return Readonly(type, enable ?? true); + } + /** `[Json]` Creates a Optional property */ + Optional(type, enable) { + return Optional(type, enable ?? true); + } + /** `[Json]` Creates an Any type */ + Any(options) { + return Any(options); + } + /** `[Json]` Creates an Array type */ + Array(items, options) { + return Array$1(items, options); + } + /** `[Json]` Creates a Boolean type */ + Boolean(options) { + return Boolean$1(options); + } + /** `[Json]` Intrinsic function to Capitalize LiteralString types */ + Capitalize(schema, options) { + return Capitalize(schema, options); + } + /** `[Json]` Creates a Composite object type */ + Composite(schemas, options) { + return Composite(schemas, options); + } + /** `[JavaScript]` Creates a readonly const type from the given value. */ + Const(value, options) { + return Const(value, options); + } + /** `[Json]` Creates a Enum type */ + Enum(item, options) { + return Enum(item, options); + } + /** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */ + Exclude(unionType, excludedMembers, options) { + return Exclude(unionType, excludedMembers, options); + } + /** `[Json]` Creates a Conditional type */ + Extends(L$2, R$1, T$3, F$1, options) { + return Extends(L$2, R$1, T$3, F$1, options); + } + /** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */ + Extract(type, union, options) { + return Extract(type, union, options); + } + /** `[Json]` Returns an Indexed property type for the given keys */ + Index(type, key, options) { + return Index(type, key, options); + } + /** `[Json]` Creates an Integer type */ + Integer(options) { + return Integer(options); + } + /** `[Json]` Creates an Intersect type */ + Intersect(types, options) { + return Intersect(types, options); + } + /** `[Json]` Creates a KeyOf type */ + KeyOf(type, options) { + return KeyOf(type, options); + } + /** `[Json]` Creates a Literal type */ + Literal(literalValue, options) { + return Literal(literalValue, options); + } + /** `[Json]` Intrinsic function to Lowercase LiteralString types */ + Lowercase(type, options) { + return Lowercase(type, options); + } + /** `[Json]` Creates a Mapped object type */ + Mapped(key, map$2, options) { + return Mapped(key, map$2, options); + } + /** `[Json]` Creates a Type Definition Module. */ + Module(properties$1) { + return Module(properties$1); + } + /** `[Json]` Creates a Never type */ + Never(options) { + return Never(options); + } + /** `[Json]` Creates a Not type */ + Not(type, options) { + return Not(type, options); + } + /** `[Json]` Creates a Null type */ + Null(options) { + return Null(options); + } + /** `[Json]` Creates a Number type */ + Number(options) { + return Number$1(options); + } + /** `[Json]` Creates an Object type */ + Object(properties$1, options) { + return Object$1(properties$1, options); + } + /** `[Json]` Constructs a type whose keys are omitted from the given type */ + Omit(schema, selector, options) { + return Omit(schema, selector, options); + } + /** `[Json]` Constructs a type where all properties are optional */ + Partial(type, options) { + return Partial(type, options); + } + /** `[Json]` Constructs a type whose keys are picked from the given type */ + Pick(type, key, options) { + return Pick(type, key, options); + } + /** `[Json]` Creates a Record type */ + Record(key, value, options) { + return Record(key, value, options); + } + /** `[Json]` Creates a Recursive type */ + Recursive(callback, options) { + return Recursive(callback, options); + } + /** `[Json]` Creates a Ref type. The referenced type must contain a $id */ + Ref(...args) { + return Ref(args[0], args[1]); + } + /** `[Json]` Constructs a type where all properties are required */ + Required(type, options) { + return Required(type, options); + } + /** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */ + Rest(type) { + return Rest(type); + } + /** `[Json]` Creates a String type */ + String(options) { + return String$1(options); + } + /** `[Json]` Creates a TemplateLiteral type */ + TemplateLiteral(unresolved, options) { + return TemplateLiteral(unresolved, options); + } + /** `[Json]` Creates a Transform type */ + Transform(type) { + return Transform(type); + } + /** `[Json]` Creates a Tuple type */ + Tuple(types, options) { + return Tuple(types, options); + } + /** `[Json]` Intrinsic function to Uncapitalize LiteralString types */ + Uncapitalize(type, options) { + return Uncapitalize(type, options); + } + /** `[Json]` Creates a Union type */ + Union(types, options) { + return Union(types, options); + } + /** `[Json]` Creates an Unknown type */ + Unknown(options) { + return Unknown(options); + } + /** `[Json]` Creates a Unsafe type that will infers as the generic argument T */ + Unsafe(options) { + return Unsafe(options); + } + /** `[Json]` Intrinsic function to Uppercase LiteralString types */ + Uppercase(schema, options) { + return Uppercase(schema, options); + } + }; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/type/type.mjs +var type_exports = /* @__PURE__ */ __export({ + Any: () => Any, + Argument: () => Argument, + Array: () => Array$1, + AsyncIterator: () => AsyncIterator, + Awaited: () => Awaited, + BigInt: () => BigInt, + Boolean: () => Boolean$1, + Capitalize: () => Capitalize, + Composite: () => Composite, + Const: () => Const, + Constructor: () => Constructor, + ConstructorParameters: () => ConstructorParameters, + Date: () => Date$1, + Enum: () => Enum, + Exclude: () => Exclude, + Extends: () => Extends, + Extract: () => Extract, + Function: () => Function$1, + Index: () => Index, + InstanceType: () => InstanceType, + Instantiate: () => Instantiate, + Integer: () => Integer, + Intersect: () => Intersect, + Iterator: () => Iterator, + KeyOf: () => KeyOf, + Literal: () => Literal, + Lowercase: () => Lowercase, + Mapped: () => Mapped, + Module: () => Module, + Never: () => Never, + Not: () => Not, + Null: () => Null, + Number: () => Number$1, + Object: () => Object$1, + Omit: () => Omit, + Optional: () => Optional, + Parameters: () => Parameters, + Partial: () => Partial, + Pick: () => Pick, + Promise: () => Promise$1, + Readonly: () => Readonly, + ReadonlyOptional: () => ReadonlyOptional, + Record: () => Record, + Recursive: () => Recursive, + Ref: () => Ref, + RegExp: () => RegExp$1, + Required: () => Required, + Rest: () => Rest, + ReturnType: () => ReturnType, + String: () => String$1, + Symbol: () => Symbol$1, + TemplateLiteral: () => TemplateLiteral, + Transform: () => Transform, + Tuple: () => Tuple, + Uint8Array: () => Uint8Array$1, + Uncapitalize: () => Uncapitalize, + Undefined: () => Undefined, + Union: () => Union, + Unknown: () => Unknown, + Unsafe: () => Unsafe, + Uppercase: () => Uppercase, + Void: () => Void +}); +var init_type$1 = __esmMin((() => { + init_any(); + init_argument(); + init_array$1(); + init_async_iterator(); + init_awaited(); + init_bigint(); + init_boolean(); + init_composite(); + init_const(); + init_constructor(); + init_constructor_parameters(); + init_date(); + init_enum(); + init_exclude(); + init_extends(); + init_extract(); + init_function(); + init_indexed(); + init_instance_type(); + init_instantiate(); + init_integer(); + init_intersect(); + init_intrinsic(); + init_iterator(); + init_keyof(); + init_literal(); + init_mapped(); + init_module(); + init_never(); + init_not(); + init_null(); + init_number(); + init_object(); + init_omit(); + init_optional(); + init_parameters(); + init_partial(); + init_pick(); + init_promise(); + init_readonly(); + init_readonly_optional(); + init_record(); + init_recursive(); + init_ref(); + init_regexp(); + init_required(); + init_rest(); + init_return_type(); + init_string$1(); + init_symbol(); + init_template_literal(); + init_transform(); + init_tuple(); + init_uint8array(); + init_undefined(); + init_union$1(); + init_unknown(); + init_unsafe(); + init_void(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/type/javascript.mjs +var JavaScriptTypeBuilder; +var init_javascript$1 = __esmMin((() => { + init_json$2(); + init_argument(); + init_async_iterator(); + init_awaited(); + init_bigint(); + init_constructor(); + init_constructor_parameters(); + init_date(); + init_function(); + init_instance_type(); + init_instantiate(); + init_iterator(); + init_parameters(); + init_promise(); + init_regexp(); + init_return_type(); + init_symbol(); + init_uint8array(); + init_undefined(); + init_void(); + JavaScriptTypeBuilder = class extends JsonTypeBuilder { + /** `[JavaScript]` Creates a Generic Argument Type */ + Argument(index) { + return Argument(index); + } + /** `[JavaScript]` Creates a AsyncIterator type */ + AsyncIterator(items, options) { + return AsyncIterator(items, options); + } + /** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */ + Awaited(schema, options) { + return Awaited(schema, options); + } + /** `[JavaScript]` Creates a BigInt type */ + BigInt(options) { + return BigInt(options); + } + /** `[JavaScript]` Extracts the ConstructorParameters from the given Constructor type */ + ConstructorParameters(schema, options) { + return ConstructorParameters(schema, options); + } + /** `[JavaScript]` Creates a Constructor type */ + Constructor(parameters, instanceType, options) { + return Constructor(parameters, instanceType, options); + } + /** `[JavaScript]` Creates a Date type */ + Date(options = {}) { + return Date$1(options); + } + /** `[JavaScript]` Creates a Function type */ + Function(parameters, returnType, options) { + return Function$1(parameters, returnType, options); + } + /** `[JavaScript]` Extracts the InstanceType from the given Constructor type */ + InstanceType(schema, options) { + return InstanceType(schema, options); + } + /** `[JavaScript]` Instantiates a type with the given parameters */ + Instantiate(schema, parameters) { + return Instantiate(schema, parameters); + } + /** `[JavaScript]` Creates an Iterator type */ + Iterator(items, options) { + return Iterator(items, options); + } + /** `[JavaScript]` Extracts the Parameters from the given Function type */ + Parameters(schema, options) { + return Parameters(schema, options); + } + /** `[JavaScript]` Creates a Promise type */ + Promise(item, options) { + return Promise$1(item, options); + } + /** `[JavaScript]` Creates a RegExp type */ + RegExp(unresolved, options) { + return RegExp$1(unresolved, options); + } + /** `[JavaScript]` Extracts the ReturnType from the given Function type */ + ReturnType(type, options) { + return ReturnType(type, options); + } + /** `[JavaScript]` Creates a Symbol type */ + Symbol(options) { + return Symbol$1(options); + } + /** `[JavaScript]` Creates a Undefined type */ + Undefined(options) { + return Undefined(options); + } + /** `[JavaScript]` Creates a Uint8Array type */ + Uint8Array(options) { + return Uint8Array$1(options); + } + /** `[JavaScript]` Creates a Void type */ + Void(options) { + return Void(options); + } + }; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/type/type/index.mjs +var Type; +var init_type = __esmMin((() => { + init_json$2(); + init_type$1(); + init_javascript$1(); + Type = type_exports; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/vendor/@sinclair/typebox/build/esm/index.mjs +var init_esm = __esmMin((() => { + init_clone(); + init_create$1(); + init_error(); + init_guard(); + init_helpers(); + init_patterns(); + init_registry(); + init_sets(); + init_symbols(); + init_any(); + init_array$1(); + init_argument(); + init_async_iterator(); + init_awaited(); + init_bigint(); + init_boolean(); + init_composite(); + init_const(); + init_constructor(); + init_constructor_parameters(); + init_date(); + init_enum(); + init_exclude(); + init_extends(); + init_extract(); + init_function(); + init_indexed(); + init_instance_type(); + init_instantiate(); + init_integer(); + init_intersect(); + init_iterator(); + init_intrinsic(); + init_keyof(); + init_literal(); + init_module(); + init_mapped(); + init_never(); + init_not(); + init_null(); + init_number(); + init_object(); + init_omit(); + init_optional(); + init_parameters(); + init_partial(); + init_pick(); + init_promise(); + init_readonly(); + init_readonly_optional(); + init_record(); + init_recursive(); + init_ref(); + init_regexp(); + init_required(); + init_rest(); + init_return_type(); + init_schema(); + init_static(); + init_string$1(); + init_symbol(); + init_template_literal(); + init_transform(); + init_tuple(); + init_uint8array(); + init_undefined(); + init_union$1(); + init_unknown(); + init_unsafe(); + init_void(); + init_type(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/components/sandbox/ConsoleRuntimeProvider.js +var ConsoleRuntimeProvider; +var init_ConsoleRuntimeProvider = __esmMin((() => { + ConsoleRuntimeProvider = class { + constructor() { + this.logs = []; + this.completionError = null; + this.completed = false; + } + getData() { + return {}; + } + getDescription() { + return ""; + } + getRuntime() { + return (_sandboxId) => { + if (!window.__originalConsole) { + window.__originalConsole = { + log: console.log.bind(console), + error: console.error.bind(console), + warn: console.warn.bind(console), + info: console.info.bind(console) + }; + } + const originalConsole = window.__originalConsole; + const pendingSends = []; + [ + "log", + "error", + "warn", + "info" + ].forEach((method) => { + console[method] = (...args) => { + const text$2 = args.map((arg) => { + try { + return typeof arg === "object" ? JSON.stringify(arg) : String(arg); + } catch { + return String(arg); + } + }).join(" "); + originalConsole[method].apply(console, args); + if (window.sendRuntimeMessage) { + const sendPromise = window.sendRuntimeMessage({ + type: "console", + method, + text: text$2, + args + }).catch(() => {}); + pendingSends.push(sendPromise); + } + }; + }); + if (window.onCompleted) { + window.onCompleted(async (_success) => { + if (pendingSends.length > 0) { + await Promise.all(pendingSends); + } + }); + } + let lastError = null; + window.addEventListener("error", (e$10) => { + const text$2 = (e$10.error?.stack || e$10.message || String(e$10)) + " at line " + (e$10.lineno || "?") + ":" + (e$10.colno || "?"); + lastError = { + message: e$10.error?.message || e$10.message || String(e$10), + stack: e$10.error?.stack || text$2 + }; + }); + window.addEventListener("unhandledrejection", (e$10) => { + const text$2 = "Unhandled promise rejection: " + (e$10.reason?.message || e$10.reason || "Unknown error"); + lastError = { + message: e$10.reason?.message || String(e$10.reason) || "Unhandled promise rejection", + stack: e$10.reason?.stack || text$2 + }; + }); + let completionSent = false; + window.complete = async (error$2, returnValue) => { + if (completionSent) return; + completionSent = true; + const finalError = error$2 || lastError; + if (window.sendRuntimeMessage) { + if (finalError) { + await window.sendRuntimeMessage({ + type: "execution-error", + error: finalError + }); + } else { + await window.sendRuntimeMessage({ + type: "execution-complete", + returnValue + }); + } + } + }; + }; + } + async handleMessage(message, respond) { + if (message.type === "console") { + this.logs.push({ + type: message.method === "error" ? "error" : message.method === "warn" ? "warn" : message.method === "info" ? "info" : "log", + text: message.text, + args: message.args + }); + respond({ success: true }); + } + } + /** + * Get collected console logs + */ + getLogs() { + return this.logs; + } + /** + * Get completion status + */ + isCompleted() { + return this.completed; + } + /** + * Get completion error if any + */ + getCompletionError() { + return this.completionError; + } + /** + * Reset state for reuse + */ + reset() { + this.logs = []; + this.completionError = null; + this.completed = false; + } + }; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/components/sandbox/RuntimeMessageBridge.js +var RuntimeMessageBridge; +var init_RuntimeMessageBridge = __esmMin((() => { + RuntimeMessageBridge = class RuntimeMessageBridge { + /** + * Generate sendRuntimeMessage() function as injectable string. + * Returns the function source code to be injected into target context. + */ + static generateBridgeCode(options) { + if (options.context === "sandbox-iframe") { + return RuntimeMessageBridge.generateSandboxBridge(options.sandboxId); + } else { + return RuntimeMessageBridge.generateUserScriptBridge(options.sandboxId); + } + } + static generateSandboxBridge(sandboxId) { + return ` +window.__completionCallbacks = []; +window.sendRuntimeMessage = async (message) => { + const messageId = 'msg_' + Date.now() + '_' + Math.random().toString(36).substring(2, 9); + + return new Promise((resolve, reject) => { + const handler = (e) => { + if (e.data.type === 'runtime-response' && e.data.messageId === messageId) { + window.removeEventListener('message', handler); + if (e.data.success) { + resolve(e.data); + } else { + reject(new Error(e.data.error || 'Operation failed')); + } + } + }; + + window.addEventListener('message', handler); + + window.parent.postMessage({ + ...message, + sandboxId: ${JSON.stringify(sandboxId)}, + messageId: messageId + }, '*'); + + // Timeout after 30s + setTimeout(() => { + window.removeEventListener('message', handler); + reject(new Error('Runtime message timeout')); + }, 30000); + }); +}; +window.onCompleted = (callback) => { + window.__completionCallbacks.push(callback); +}; +`.trim(); + } + static generateUserScriptBridge(sandboxId) { + return ` +window.__completionCallbacks = []; +window.sendRuntimeMessage = async (message) => { + return await chrome.runtime.sendMessage({ + ...message, + sandboxId: ${JSON.stringify(sandboxId)} + }); +}; +window.onCompleted = (callback) => { + window.__completionCallbacks.push(callback); +}; +`.trim(); + } + }; +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/components/sandbox/RuntimeMessageRouter.js +var RuntimeMessageRouter, RUNTIME_MESSAGE_ROUTER; +var init_RuntimeMessageRouter = __esmMin((() => { + RuntimeMessageRouter = class { + constructor() { + this.sandboxes = new Map(); + this.messageListener = null; + this.userScriptMessageListener = null; + } + /** + * Register a new sandbox with its runtime providers. + * Call this BEFORE creating the iframe (for sandbox contexts) or executing user script. + */ + registerSandbox(sandboxId, providers, consumers) { + this.sandboxes.set(sandboxId, { + sandboxId, + iframe: null, + providers, + consumers: new Set(consumers) + }); + this.setupListener(); + } + /** + * Update the iframe reference for a sandbox. + * Call this AFTER creating the iframe. + * This is needed so providers can send responses back to the sandbox. + */ + setSandboxIframe(sandboxId, iframe) { + const context = this.sandboxes.get(sandboxId); + if (context) { + context.iframe = iframe; + } + } + /** + * Unregister a sandbox and remove all its consumers. + * Call this when the sandbox is destroyed. + */ + unregisterSandbox(sandboxId) { + this.sandboxes.delete(sandboxId); + if (this.sandboxes.size === 0) { + if (this.messageListener) { + window.removeEventListener("message", this.messageListener); + this.messageListener = null; + } + if (this.userScriptMessageListener && typeof chrome !== "undefined" && chrome.runtime?.onUserScriptMessage) { + chrome.runtime.onUserScriptMessage.removeListener(this.userScriptMessageListener); + this.userScriptMessageListener = null; + } + } + } + /** + * Add a message consumer for a sandbox. + * Consumers receive broadcast messages (console, execution-complete, etc.) + */ + addConsumer(sandboxId, consumer) { + const context = this.sandboxes.get(sandboxId); + if (context) { + context.consumers.add(consumer); + } + } + /** + * Remove a message consumer from a sandbox. + */ + removeConsumer(sandboxId, consumer) { + const context = this.sandboxes.get(sandboxId); + if (context) { + context.consumers.delete(consumer); + } + } + /** + * Setup the global message listeners (called automatically) + */ + setupListener() { + if (!this.messageListener) { + this.messageListener = async (e$10) => { + const { sandboxId, messageId } = e$10.data; + if (!sandboxId) return; + const context = this.sandboxes.get(sandboxId); + if (!context) { + return; + } + const respond = (response) => { + context.iframe?.contentWindow?.postMessage({ + type: "runtime-response", + messageId, + sandboxId, + ...response + }, "*"); + }; + for (const provider of context.providers) { + if (provider.handleMessage) { + await provider.handleMessage(e$10.data, respond); + } + } + for (const consumer of context.consumers) { + await consumer.handleMessage(e$10.data); + } + }; + window.addEventListener("message", this.messageListener); + } + if (!this.userScriptMessageListener) { + if (typeof chrome === "undefined" || !chrome.runtime?.onUserScriptMessage) { + return; + } + this.userScriptMessageListener = (message, _sender, sendResponse) => { + const { sandboxId } = message; + if (!sandboxId) return false; + const context = this.sandboxes.get(sandboxId); + if (!context) return false; + const respond = (response) => { + sendResponse({ + ...response, + sandboxId + }); + }; + (async () => { + for (const provider of context.providers) { + if (provider.handleMessage) { + await provider.handleMessage(message, respond); + } + } + for (const consumer of context.consumers) { + await consumer.handleMessage(message); + } + })(); + return true; + }; + chrome.runtime.onUserScriptMessage.addListener(this.userScriptMessageListener); + } + } + }; + RUNTIME_MESSAGE_ROUTER = new RuntimeMessageRouter(); +})); + +//#endregion +//#region apps/macos/Sources/Clawdis/Resources/WebChat/components/SandboxedIframe.js +/** +* Escape HTML special sequences in code to prevent premature tag closure +* @param code Code that will be injected into