@mercuryworkshop/scramjet 2.0.0-alpha → 2.0.1-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/c34a4f083a11eae2.wasm +0 -0
  2. package/dist/scramjet.js +33 -0
  3. package/dist/scramjet.js.map +1 -0
  4. package/dist/scramjet.mjs +33 -0
  5. package/dist/scramjet.mjs.map +1 -0
  6. package/dist/scramjet.wasm.wasm +0 -0
  7. package/dist/scramjet_bundled.js +33 -0
  8. package/dist/scramjet_bundled.js.map +1 -0
  9. package/dist/scramjet_bundled.mjs +33 -0
  10. package/dist/scramjet_bundled.mjs.map +1 -0
  11. package/dist/types/client/client.d.ts +91 -0
  12. package/dist/types/client/entry.d.ts +5 -0
  13. package/dist/types/client/events.d.ts +38 -0
  14. package/dist/types/client/helpers.d.ts +1 -0
  15. package/dist/types/client/index.d.ts +7 -0
  16. package/dist/types/client/location.d.ts +2 -0
  17. package/dist/types/client/shared/eval.d.ts +3 -0
  18. package/dist/types/client/shared/sourcemaps.d.ts +19 -0
  19. package/dist/types/client/shared/wrap.d.ts +4 -0
  20. package/dist/types/client/singletonbox.d.ts +14 -0
  21. package/dist/types/fetch/index.d.ts +80 -0
  22. package/dist/types/index.d.ts +9 -0
  23. package/dist/types/shared/cookie.d.ts +18 -0
  24. package/dist/types/shared/headers.d.ts +13 -0
  25. package/dist/types/shared/htmlRules.d.ts +6 -0
  26. package/dist/types/shared/index.d.ts +23 -0
  27. package/dist/types/shared/rewriters/css.d.ts +4 -0
  28. package/dist/types/shared/rewriters/html.d.ts +6 -0
  29. package/dist/types/shared/rewriters/index.d.ts +6 -0
  30. package/dist/types/shared/rewriters/js.d.ts +11 -0
  31. package/dist/types/shared/rewriters/url.d.ts +11 -0
  32. package/dist/types/shared/rewriters/wasm.d.ts +8 -0
  33. package/dist/types/shared/rewriters/worker.d.ts +3 -0
  34. package/dist/types/shared/security/index.d.ts +1 -0
  35. package/dist/types/shared/security/siteTests.d.ts +1 -0
  36. package/dist/types/symbols.d.ts +7 -0
  37. package/dist/types/types.d.ts +114 -0
  38. package/lib/index.d.ts +5 -0
  39. package/package.json +98 -84
  40. package/LICENSE +0 -661
  41. package/README.md +0 -65
  42. package/dist/06813b79f94926ac.wasm +0 -0
  43. package/dist/09d5a95846afcaf1.wasm +0 -0
  44. package/dist/507621c43f70fc86.wasm +0 -0
  45. package/dist/63d477311eb50f38.wasm +0 -0
  46. package/dist/70102b41994b76de.wasm +0 -0
  47. package/dist/a31cde01c0b49ef3.wasm +0 -0
  48. package/dist/b4f3c1c0e4a92823.wasm +0 -0
  49. package/dist/d864ec42994880cb.wasm +0 -0
  50. package/dist/dbbe994629c3010c.wasm +0 -0
  51. package/dist/scramjet.all.js +0 -194
  52. package/dist/scramjet.all.js.map +0 -1
  53. package/dist/scramjet.bundle.js +0 -194
  54. package/dist/scramjet.bundle.js.map +0 -1
  55. package/dist/scramjet.sync.js +0 -2
  56. package/dist/scramjet.sync.js.map +0 -1
  57. package/lib/noop.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scramjet.js","sources":["webpack://$scramjet/./packages/core/src/index.ts","webpack://$scramjet/./node_modules/.pnpm/set-cookie-parser@2.7.1/node_modules/set-cookie-parser/lib/set-cookie.js","webpack://$scramjet//home/velzie/src/browser.js/packages/scramjet/packages/core/src/clientsync/^\\.\\/.*$/","webpack://$scramjet/./packages/core/src/client/client.ts","webpack://$scramjet/./packages/core/src/client/dom/attr.ts","webpack://$scramjet/./packages/core/src/client/dom/beacon.ts","webpack://$scramjet/./packages/core/src/client/dom/cookie.ts","webpack://$scramjet/./packages/core/src/client/dom/css.ts","webpack://$scramjet/./packages/core/src/client/dom/document.ts","webpack://$scramjet/./packages/core/src/client/dom/element.ts","webpack://$scramjet/./packages/core/src/client/dom/fontface.ts","webpack://$scramjet/./packages/core/src/client/dom/fragments.ts","webpack://$scramjet/./packages/core/src/client/dom/history.ts","webpack://$scramjet/./packages/core/src/client/dom/open.ts","webpack://$scramjet/./packages/core/src/client/dom/origin.ts","webpack://$scramjet/./packages/core/src/client/dom/performance.ts","webpack://$scramjet/./packages/core/src/client/dom/protocol.ts","webpack://$scramjet/./packages/core/src/client/dom/storage.ts","webpack://$scramjet/./packages/core/src/client/entry.ts","webpack://$scramjet/./packages/core/src/client/events.ts","webpack://$scramjet/./packages/core/src/client/helpers.ts","webpack://$scramjet/./packages/core/src/client/location.ts","webpack://$scramjet/./packages/core/src/client/shared/antiantidebugger.ts","webpack://$scramjet/./packages/core/src/client/shared/blob.ts","webpack://$scramjet/./packages/core/src/client/shared/caches.ts","webpack://$scramjet/./packages/core/src/client/shared/chrome.ts","webpack://$scramjet/./packages/core/src/client/shared/err.ts","webpack://$scramjet/./packages/core/src/client/shared/error.ts","webpack://$scramjet/./packages/core/src/client/shared/eval.ts","webpack://$scramjet/./packages/core/src/client/shared/event.ts","webpack://$scramjet/./packages/core/src/client/shared/function.ts","webpack://$scramjet/./packages/core/src/client/shared/import.ts","webpack://$scramjet/./packages/core/src/client/shared/indexeddb.ts","webpack://$scramjet/./packages/core/src/client/shared/opfs.ts","webpack://$scramjet/./packages/core/src/client/shared/postmessage.ts","webpack://$scramjet/./packages/core/src/client/shared/realm.ts","webpack://$scramjet/./packages/core/src/client/shared/requests/eventsource.ts","webpack://$scramjet/./packages/core/src/client/shared/requests/fetch.ts","webpack://$scramjet/./packages/core/src/client/shared/requests/websocket.ts","webpack://$scramjet/./packages/core/src/client/shared/requests/xmlhttprequest.ts","webpack://$scramjet/./packages/core/src/client/shared/settimeout.ts","webpack://$scramjet/./packages/core/src/client/shared/sourcemaps.ts","webpack://$scramjet/./packages/core/src/client/shared/worker.ts","webpack://$scramjet/./packages/core/src/client/shared/wrap.ts","webpack://$scramjet/./packages/core/src/client/singletonbox.ts","webpack://$scramjet/./packages/core/src/client/worker/importScripts.ts","webpack://$scramjet/./packages/core/src/fetch/index.ts","webpack://$scramjet/./packages/core/src/log.ts","webpack://$scramjet/./packages/core/src/shared/cookie.ts","webpack://$scramjet/./packages/core/src/shared/headers.ts","webpack://$scramjet/./packages/core/src/shared/htmlRules.ts","webpack://$scramjet/./packages/core/src/shared/index.ts","webpack://$scramjet/./packages/core/src/shared/rewriters/css.ts","webpack://$scramjet/./packages/core/src/shared/rewriters/html.ts","webpack://$scramjet/./packages/core/src/shared/rewriters/js.ts","webpack://$scramjet/./packages/core/src/shared/rewriters/url.ts","webpack://$scramjet/./packages/core/src/shared/rewriters/wasm.ts","webpack://$scramjet/./packages/core/src/shared/rewriters/worker.ts","webpack://$scramjet/./packages/core/src/symbols.ts","webpack://$scramjet/./node_modules/.pnpm/@mercuryworkshop+proxy-transports@1.0.2/node_modules/@mercuryworkshop/proxy-transports/dist/index.mjs","webpack://$scramjet/./node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/foreignNames.js","webpack://$scramjet/./node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/index.js","webpack://$scramjet/./node_modules/.pnpm/domelementtype@2.3.0/node_modules/domelementtype/lib/esm/index.js","webpack://$scramjet/./node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/index.js","webpack://$scramjet/./node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/node.js","webpack://$scramjet/./node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/helpers.js","webpack://$scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode.js","webpack://$scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode_codepoint.js","webpack://$scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/escape.js","webpack://$scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-html.js","webpack://$scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-xml.js","webpack://$scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/index.js","webpack://$scramjet/./node_modules/.pnpm/entities@6.0.1/node_modules/entities/dist/esm/decode-codepoint.js","webpack://$scramjet/./node_modules/.pnpm/entities@6.0.1/node_modules/entities/dist/esm/decode.js","webpack://$scramjet/./node_modules/.pnpm/entities@6.0.1/node_modules/entities/dist/esm/generated/decode-data-html.js","webpack://$scramjet/./node_modules/.pnpm/entities@6.0.1/node_modules/entities/dist/esm/generated/decode-data-xml.js","webpack://$scramjet/./node_modules/.pnpm/htmlparser2@10.0.0/node_modules/htmlparser2/dist/esm/Parser.js","webpack://$scramjet/./node_modules/.pnpm/htmlparser2@10.0.0/node_modules/htmlparser2/dist/esm/Tokenizer.js","webpack://$scramjet/./packages/core/rewriter/wasm/out/snippets/wasm-4b0f351a8e6eeb46/inline0.js","webpack://$scramjet/./packages/core/rewriter/wasm/out/wasm.js","webpack://$scramjet/webpack/runtime/compat_get_default_export","webpack://$scramjet/webpack/runtime/define_property_getters","webpack://$scramjet/webpack/runtime/has_own_property","webpack://$scramjet/webpack/runtime/make_namespace_object"],"sourcesContent":["// NOTE: this is the entrypoint for scramjet.bundle.js\n// as such it exports everything in scramjet\n// the entry point for scramjet.all.js (what most sites wil use) is entry.ts\n\nimport { setWasm } from \"@rewriters/wasm\";\nimport \"./global.d\";\nimport { ScramjetConfig } from \"./types\";\nexport * from \"./client\";\nexport * from \"./shared\";\nexport * from \"./symbols\";\nexport * from \"./types\";\nexport * from \"./fetch\";\n\ndeclare const REWRITERWASM: string | undefined;\n\nexport const defaultConfig: ScramjetConfig = {\n\tglobals: {\n\t\twrapfn: \"$scramjet$wrap\",\n\t\twrappropertybase: \"$scramjet__\",\n\t\twrappropertyfn: \"$scramjet$prop\",\n\t\tcleanrestfn: \"$scramjet$clean\",\n\t\timportfn: \"$scramjet$import\",\n\t\trewritefn: \"$scramjet$rewrite\",\n\t\tmetafn: \"$scramjet$meta\",\n\t\twrappostmessagefn: \"$scramjet$wrappostmessage\",\n\t\tpushsourcemapfn: \"$scramjet$pushsourcemap\",\n\t\ttrysetfn: \"$scramjet$tryset\",\n\t\ttemplocid: \"$scramjet$temploc\",\n\t\ttempunusedid: \"$scramjet$tempunused\",\n\t},\n\tflags: {\n\t\tsyncxhr: false,\n\t\tstrictRewrites: true,\n\t\trewriterLogs: false,\n\t\tcaptureErrors: true,\n\t\tcleanErrors: false,\n\t\tscramitize: false,\n\t\tsourcemaps: true,\n\t\tdestructureRewrites: false,\n\t\tallowInvalidJs: false,\n\t\tdebugTrampolines: false,\n\t\tallowFailedIntercepts: false,\n\t},\n\tsiteFlags: {},\n\tmaskedfiles: [],\n};\n\nexport const defaultConfigDev: ScramjetConfig = {\n\t...defaultConfig,\n\tflags: {\n\t\t...defaultConfig.flags,\n\t\trewriterLogs: true,\n\t\tcleanErrors: false,\n\t\tdebugTrampolines: true,\n\t},\n};\n\n// bundled build will have the wasm binary inlined as a base64 string\nif (REWRITERWASM) {\n\tsetWasm(Uint8Array.from(atob(REWRITERWASM), (c) => c.charCodeAt(0)));\n}\n","\"use strict\";\n\nvar defaultParseOptions = {\n decodeValues: true,\n map: false,\n silent: false,\n};\n\nfunction isNonEmptyString(str) {\n return typeof str === \"string\" && !!str.trim();\n}\n\nfunction parseString(setCookieValue, options) {\n var parts = setCookieValue.split(\";\").filter(isNonEmptyString);\n\n var nameValuePairStr = parts.shift();\n var parsed = parseNameValuePair(nameValuePairStr);\n var name = parsed.name;\n var value = parsed.value;\n\n options = options\n ? Object.assign({}, defaultParseOptions, options)\n : defaultParseOptions;\n\n try {\n value = options.decodeValues ? decodeURIComponent(value) : value; // decode cookie value\n } catch (e) {\n console.error(\n \"set-cookie-parser encountered an error while decoding a cookie with value '\" +\n value +\n \"'. Set options.decodeValues to false to disable this feature.\",\n e\n );\n }\n\n var cookie = {\n name: name,\n value: value,\n };\n\n parts.forEach(function (part) {\n var sides = part.split(\"=\");\n var key = sides.shift().trimLeft().toLowerCase();\n var value = sides.join(\"=\");\n if (key === \"expires\") {\n cookie.expires = new Date(value);\n } else if (key === \"max-age\") {\n cookie.maxAge = parseInt(value, 10);\n } else if (key === \"secure\") {\n cookie.secure = true;\n } else if (key === \"httponly\") {\n cookie.httpOnly = true;\n } else if (key === \"samesite\") {\n cookie.sameSite = value;\n } else if (key === \"partitioned\") {\n cookie.partitioned = true;\n } else {\n cookie[key] = value;\n }\n });\n\n return cookie;\n}\n\nfunction parseNameValuePair(nameValuePairStr) {\n // Parses name-value-pair according to rfc6265bis draft\n\n var name = \"\";\n var value = \"\";\n var nameValueArr = nameValuePairStr.split(\"=\");\n if (nameValueArr.length > 1) {\n name = nameValueArr.shift();\n value = nameValueArr.join(\"=\"); // everything after the first =, joined by a \"=\" if there was more than one part\n } else {\n value = nameValuePairStr;\n }\n\n return { name: name, value: value };\n}\n\nfunction parse(input, options) {\n options = options\n ? Object.assign({}, defaultParseOptions, options)\n : defaultParseOptions;\n\n if (!input) {\n if (!options.map) {\n return [];\n } else {\n return {};\n }\n }\n\n if (input.headers) {\n if (typeof input.headers.getSetCookie === \"function\") {\n // for fetch responses - they combine headers of the same type in the headers array,\n // but getSetCookie returns an uncombined array\n input = input.headers.getSetCookie();\n } else if (input.headers[\"set-cookie\"]) {\n // fast-path for node.js (which automatically normalizes header names to lower-case\n input = input.headers[\"set-cookie\"];\n } else {\n // slow-path for other environments - see #25\n var sch =\n input.headers[\n Object.keys(input.headers).find(function (key) {\n return key.toLowerCase() === \"set-cookie\";\n })\n ];\n // warn if called on a request-like object with a cookie header rather than a set-cookie header - see #34, 36\n if (!sch && input.headers.cookie && !options.silent) {\n console.warn(\n \"Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning.\"\n );\n }\n input = sch;\n }\n }\n if (!Array.isArray(input)) {\n input = [input];\n }\n\n if (!options.map) {\n return input.filter(isNonEmptyString).map(function (str) {\n return parseString(str, options);\n });\n } else {\n var cookies = {};\n return input.filter(isNonEmptyString).reduce(function (cookies, str) {\n var cookie = parseString(str, options);\n cookies[cookie.name] = cookie;\n return cookies;\n }, cookies);\n }\n}\n\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n\n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nfunction splitCookiesString(cookiesString) {\n if (Array.isArray(cookiesString)) {\n return cookiesString;\n }\n if (typeof cookiesString !== \"string\") {\n return [];\n }\n\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos;\n pos += 1;\n\n skipWhitespace();\n nextStart = pos;\n\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n // we found cookies separator\n cookiesSeparatorFound = true;\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n\n return cookiesStrings;\n}\n\nmodule.exports = parse;\nmodule.exports.parse = parse;\nmodule.exports.parseString = parseString;\nmodule.exports.splitCookiesString = splitCookiesString;\n","var map = {\n \"./\": \"6061\",\n \"./client\": \"7174\",\n \"./client.ts\": \"7174\",\n \"./dom/attr\": \"8415\",\n \"./dom/attr.ts\": \"8415\",\n \"./dom/beacon\": \"1324\",\n \"./dom/beacon.ts\": \"1324\",\n \"./dom/cookie\": \"8434\",\n \"./dom/cookie.ts\": \"8434\",\n \"./dom/css\": \"5629\",\n \"./dom/css.ts\": \"5629\",\n \"./dom/document\": \"3649\",\n \"./dom/document.ts\": \"3649\",\n \"./dom/element\": \"754\",\n \"./dom/element.ts\": \"754\",\n \"./dom/fontface\": \"9292\",\n \"./dom/fontface.ts\": \"9292\",\n \"./dom/fragments\": \"9471\",\n \"./dom/fragments.ts\": \"9471\",\n \"./dom/history\": \"8834\",\n \"./dom/history.ts\": \"8834\",\n \"./dom/open\": \"1596\",\n \"./dom/open.ts\": \"1596\",\n \"./dom/origin\": \"5218\",\n \"./dom/origin.ts\": \"5218\",\n \"./dom/performance\": \"5960\",\n \"./dom/performance.ts\": \"5960\",\n \"./dom/protocol\": \"4360\",\n \"./dom/protocol.ts\": \"4360\",\n \"./dom/storage\": \"2683\",\n \"./dom/storage.ts\": \"2683\",\n \"./entry\": \"4421\",\n \"./entry.ts\": \"4421\",\n \"./events\": \"4344\",\n \"./events.ts\": \"4344\",\n \"./helpers\": \"4688\",\n \"./helpers.ts\": \"4688\",\n \"./index\": \"6061\",\n \"./index.ts\": \"6061\",\n \"./location\": \"5422\",\n \"./location.ts\": \"5422\",\n \"./shared/antiantidebugger\": \"9908\",\n \"./shared/antiantidebugger.ts\": \"9908\",\n \"./shared/blob\": \"8356\",\n \"./shared/blob.ts\": \"8356\",\n \"./shared/caches\": \"524\",\n \"./shared/caches.ts\": \"524\",\n \"./shared/chrome\": \"1589\",\n \"./shared/chrome.ts\": \"1589\",\n \"./shared/err\": \"9520\",\n \"./shared/err.ts\": \"9520\",\n \"./shared/error\": \"545\",\n \"./shared/error.ts\": \"545\",\n \"./shared/eval\": \"2505\",\n \"./shared/eval.ts\": \"2505\",\n \"./shared/event\": \"9467\",\n \"./shared/event.ts\": \"9467\",\n \"./shared/function\": \"5123\",\n \"./shared/function.ts\": \"5123\",\n \"./shared/import\": \"338\",\n \"./shared/import.ts\": \"338\",\n \"./shared/indexeddb\": \"9156\",\n \"./shared/indexeddb.ts\": \"9156\",\n \"./shared/opfs\": \"6363\",\n \"./shared/opfs.ts\": \"6363\",\n \"./shared/postmessage\": \"1750\",\n \"./shared/postmessage.ts\": \"1750\",\n \"./shared/realm\": \"7016\",\n \"./shared/realm.ts\": \"7016\",\n \"./shared/requests/eventsource\": \"7523\",\n \"./shared/requests/eventsource.ts\": \"7523\",\n \"./shared/requests/fetch\": \"2826\",\n \"./shared/requests/fetch.ts\": \"2826\",\n \"./shared/requests/websocket\": \"3921\",\n \"./shared/requests/websocket.ts\": \"3921\",\n \"./shared/requests/xmlhttprequest\": \"2074\",\n \"./shared/requests/xmlhttprequest.ts\": \"2074\",\n \"./shared/settimeout\": \"3984\",\n \"./shared/settimeout.ts\": \"3984\",\n \"./shared/sourcemaps\": \"489\",\n \"./shared/sourcemaps.ts\": \"489\",\n \"./shared/worker\": \"1369\",\n \"./shared/worker.ts\": \"1369\",\n \"./shared/wrap\": \"3547\",\n \"./shared/wrap.ts\": \"3547\",\n \"./singletonbox\": \"3127\",\n \"./singletonbox.ts\": \"3127\",\n \"./worker/importScripts\": \"8559\",\n \"./worker/importScripts.ts\": \"8559\"\n};\n\n\nfunction webpackContext(req) {\n var id = webpackContextResolve(req);\n return __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n if(!__webpack_require__.o(map, req)) {\n var e = new Error(\"Cannot find module '\" + req + \"'\");\n e.code = 'MODULE_NOT_FOUND';\n throw e;\n }\n return map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n return Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6004;\n","type ScramjetFrame = any;\nimport {\n\tBareCompatibleClient,\n\tProxyTransport,\n} from \"@mercuryworkshop/proxy-transports\";\nimport { SCRAMJETCLIENT, SCRAMJETFRAME } from \"@/symbols\";\nimport { getOwnPropertyDescriptorHandler } from \"@client/helpers\";\nimport { createLocationProxy } from \"@client/location\";\nimport { createWrapFn } from \"@client/shared/wrap\";\nimport { NavigateEvent } from \"@client/events\";\nimport { rewriteUrl, unrewriteUrl, type URLMeta } from \"@rewriters/url\";\nimport { flagEnabled, ScramjetContext, ScramjetInterface } from \"@/shared\";\nimport { CookieJar } from \"@/shared/cookie\";\nimport { iswindow } from \"./entry\";\nimport { SingletonBox } from \"./singletonbox\";\nimport { ScramjetConfig } from \"@/types\";\n\nexport type ScramjetClientInit = {\n\tcontext: ScramjetContext;\n\ttransport: ProxyTransport;\n\tsendSetCookie: (url: URL, cookie: string) => Promise<void>;\n\tshouldPassthroughWebsocket?: (url: string | URL) => boolean;\n\tshouldBlockMessageEvent?: (ev: MessageEvent) => boolean;\n\thookSubcontext: (self: Self, frame?: HTMLIFrameElement) => ScramjetClient;\n};\n\ntype NativeStore = {\n\tstore: Record<string, any>;\n\tcall: (target: string, that: any, ...args) => any;\n\tconstruct: (target: string, ...args) => any;\n};\ntype DescriptorStore = {\n\tstore: Record<string, PropertyDescriptor>;\n\tget: (target: string, that: any) => any;\n\tset: (target: string, that: any, value: any) => void;\n};\n//eslint-disable-next-line\nexport type AnyFunction = Function;\n\nexport type ScramjetModule = {\n\tenabled: (client: ScramjetClient) => boolean | undefined;\n\tdisabled: (\n\t\tclient: ScramjetClient,\n\t\tself: typeof globalThis\n\t) => void | undefined;\n\torder: number | undefined;\n\tdefault: (client: ScramjetClient, self: typeof globalThis) => void;\n};\n\nexport type ProxyCtx = {\n\tfn: AnyFunction;\n\tthis: any;\n\targs: any[];\n\tnewTarget: AnyFunction;\n\treturn: (r: any) => void;\n\tcall: () => any;\n};\nexport type Proxy = {\n\tconstruct?(ctx: ProxyCtx): any;\n\tapply?(ctx: ProxyCtx): any;\n};\n\nexport type TrapCtx<T> = {\n\tthis: any;\n\tget: () => T;\n\tset: (v: T) => void;\n};\nexport type Trap<T> = {\n\twritable?: boolean;\n\tvalue?: any;\n\tenumerable?: boolean;\n\tconfigurable?: boolean;\n\tget?: (ctx: TrapCtx<T>) => T;\n\tset?: (ctx: TrapCtx<T>, v: T) => void;\n};\n\nfunction findBox(global: Window, seen: Window[]): SingletonBox | null {\n\tif (seen.includes(global)) return null;\n\tseen.push(global);\n\n\ttry {\n\t\tif ((SCRAMJETCLIENT in global) as any) {\n\t\t\treturn global[SCRAMJETCLIENT].box;\n\t\t}\n\t} catch {}\n\n\ttry {\n\t\tconst b = findBox(global.parent, seen);\n\t\tif (b) return b;\n\t} catch {}\n\n\ttry {\n\t\tconst b = findBox(global.top, seen);\n\t\tif (b) return b;\n\t} catch {}\n\n\ttry {\n\t\tif (global.opener) {\n\t\t\tconst b = findBox(global.opener, seen);\n\t\t\tif (b) return b;\n\t\t}\n\t} catch {}\n\n\tfor (let i = 0; i < global.length; i++) {\n\t\ttry {\n\t\t\tconst b = findBox(global[i], seen);\n\t\t\tif (b) return b;\n\t\t} catch {}\n\t}\n}\n\nexport class ScramjetClient {\n\tlocationProxy: any;\n\tserviceWorker: ServiceWorkerContainer;\n\tbare: BareCompatibleClient;\n\n\tnatives: NativeStore;\n\tdescriptors: DescriptorStore;\n\twrapfn: (i: any, ...args: any) => any;\n\n\teventcallbacks: Map<\n\t\tany,\n\t\t[\n\t\t\t{\n\t\t\t\tevent: string;\n\t\t\t\toriginalCallback: AnyFunction;\n\t\t\t\tproxiedCallback: AnyFunction;\n\t\t\t},\n\t\t]\n\t> = new Map();\n\n\tmeta: URLMeta;\n\n\tbox: SingletonBox;\n\n\tcontext: ScramjetContext;\n\n\tconstructor(\n\t\tpublic global: typeof globalThis,\n\t\tpublic init: ScramjetClientInit\n\t) {\n\t\tif (SCRAMJETCLIENT in global) {\n\t\t\tconsole.error(\n\t\t\t\t\"attempted to initialize a scramjet client, but one is already loaded - this is very bad\"\n\t\t\t);\n\t\t\tthrow new Error();\n\t\t}\n\n\t\tif (iswindow) {\n\t\t\tconst b = findBox(global as unknown as Window, []);\n\t\t\tif (b) {\n\t\t\t\tthis.box = b;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.box) {\n\t\t\tthis.box = new SingletonBox(this);\n\t\t}\n\n\t\tthis.box.registerClient(this, global as Self);\n\n\t\tthis.context = init.context;\n\t\tthis.bare = new BareCompatibleClient(init.transport);\n\n\t\tthis.serviceWorker = this.global.navigator.serviceWorker;\n\n\t\tif (iswindow) {\n\t\t\tglobal.document[SCRAMJETCLIENT] = this;\n\t\t}\n\n\t\tthis.wrapfn = createWrapFn(this, global);\n\t\tthis.natives = {\n\t\t\tstore: new Proxy(\n\t\t\t\t{},\n\t\t\t\t{\n\t\t\t\t\tget: (target, prop: string) => {\n\t\t\t\t\t\tif (prop in target) {\n\t\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst split = prop.split(\".\");\n\t\t\t\t\t\tconst realProp = split.pop();\n\t\t\t\t\t\tconst realTarget = split.reduce((a, b) => a?.[b], this.global);\n\n\t\t\t\t\t\tif (!realTarget) return;\n\n\t\t\t\t\t\tconst original = Reflect.get(realTarget, realProp);\n\t\t\t\t\t\ttarget[prop] = original;\n\n\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t),\n\t\t\tconstruct(target: string, ...args) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\treturn new original(...args);\n\t\t\t},\n\t\t\tcall(target: string, that: any, ...args) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\treturn original.call(that, ...args);\n\t\t\t},\n\t\t};\n\t\tthis.descriptors = {\n\t\t\tstore: new Proxy(\n\t\t\t\t{},\n\t\t\t\t{\n\t\t\t\t\tget: (target, prop: string) => {\n\t\t\t\t\t\tif (prop in target) {\n\t\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst split = prop.split(\".\");\n\t\t\t\t\t\tconst realProp = split.pop();\n\t\t\t\t\t\tconst realTarget = split.reduce((a, b) => a?.[b], this.global);\n\n\t\t\t\t\t\tif (!realTarget) return;\n\n\t\t\t\t\t\tconst original = client.natives.call(\n\t\t\t\t\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\trealTarget,\n\t\t\t\t\t\t\trealProp\n\t\t\t\t\t\t);\n\t\t\t\t\t\ttarget[prop] = original;\n\n\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t),\n\t\t\tget(target: string, that: any) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\treturn original.get.call(that);\n\t\t\t},\n\t\t\tset(target: string, that: any, value: any) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\toriginal.set.call(that, value);\n\t\t\t},\n\t\t};\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\tconst client = this;\n\t\tthis.meta = {\n\t\t\tget origin() {\n\t\t\t\treturn client.url;\n\t\t\t},\n\t\t\tget base() {\n\t\t\t\tif (iswindow) {\n\t\t\t\t\tconst base = client.natives.call(\n\t\t\t\t\t\t\"Document.prototype.querySelector\",\n\t\t\t\t\t\tclient.global.document,\n\t\t\t\t\t\t\"base\"\n\t\t\t\t\t);\n\t\t\t\t\tif (base) {\n\t\t\t\t\t\tlet url = base.getAttribute(\"href\");\n\t\t\t\t\t\tif (!url) return client.url;\n\t\t\t\t\t\tconst frag = url.indexOf(\"#\");\n\t\t\t\t\t\turl = url.substring(0, frag === -1 ? undefined : frag);\n\t\t\t\t\t\tif (!url) return client.url;\n\n\t\t\t\t\t\treturn new URL(url, client.url.origin);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn client.url;\n\t\t\t},\n\t\t\tget topFrameName() {\n\t\t\t\tif (!iswindow)\n\t\t\t\t\tthrow new Error(\"topFrameName was called from a worker?\");\n\n\t\t\t\tlet currentWin = client.global;\n\n\t\t\t\ttry {\n\t\t\t\t\tif (currentWin.parent.window == currentWin.window) {\n\t\t\t\t\t\t// we're top level & we don't have a frame name\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// accessing parent was blocked by CORS, we're in a frame but the parent is cross origin\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\t// find the topmost frame that's controlled by scramjet, stopping before the real top frame\n\t\t\t\t\twhile (currentWin.parent.window !== currentWin.window) {\n\t\t\t\t\t\tif (!currentWin.parent.window[SCRAMJETCLIENT]) break;\n\t\t\t\t\t\tcurrentWin = currentWin.parent.window;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// doesn't matter if it throws here just means we found the topmost one\n\t\t\t\t}\n\n\t\t\t\tconst curclient = currentWin[SCRAMJETCLIENT];\n\t\t\t\tconst frame = curclient.descriptors.get(\n\t\t\t\t\t\"window.frameElement\",\n\t\t\t\t\tcurrentWin\n\t\t\t\t);\n\t\t\t\tif (!frame) {\n\t\t\t\t\t// we're inside an iframe, but the top frame is scramjet-controlled and top level, so we can't get a top frame name\n\t\t\t\t\t// or we're cross-origin and frameElement doesn't exist. that's a TODO because this won't work\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (!frame.name) {\n\t\t\t\t\t// the top frame is scramjet-controlled, but it has no name. this is user error\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\"YOU NEED TO USE `new ScramjetFrame()`! DIRECT IFRAMES WILL NOT WORK\"\n\t\t\t\t\t);\n\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn frame.name;\n\t\t\t},\n\t\t\tget parentFrameName() {\n\t\t\t\tif (!iswindow)\n\t\t\t\t\tthrow new Error(\"parentFrameName was called from a worker?\");\n\n\t\t\t\ttry {\n\t\t\t\t\tif (client.global.parent.window == client.global.window) {\n\t\t\t\t\t\t// we're top level & we don't have a frame name\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// accessing parent was blocked by CORS, we're in a frame but the parent is cross origin\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst parentWin = client.global.parent.window;\n\t\t\t\tif (parentWin[SCRAMJETCLIENT]) {\n\t\t\t\t\t// we're inside an iframe, and the parent is scramjet-controlled\n\t\t\t\t\tconst parentClient = parentWin[SCRAMJETCLIENT];\n\t\t\t\t\tconst frame = parentClient.descriptors.get(\n\t\t\t\t\t\t\"window.frameElement\",\n\t\t\t\t\t\tparentWin\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!frame) {\n\t\t\t\t\t\t// parent is scramjet controlled and top-level. there is no parent frame name\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!frame.name) {\n\t\t\t\t\t\t// the parent frame is scramjet-controlled, but it has no name. this is user error\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\"YOU NEED TO USE `new ScramjetFrame()`! DIRECT IFRAMES WILL NOT WORK\"\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn frame.name;\n\t\t\t\t} else {\n\t\t\t\t\t// we're inside an iframe, and the parent is not scramjet-controlled\n\t\t\t\t\t// return our own frame name\n\t\t\t\t\tconst frame = client.descriptors.get(\n\t\t\t\t\t\t\"window.frameElement\",\n\t\t\t\t\t\tclient.global\n\t\t\t\t\t);\n\t\t\t\t\tif (!frame.name) {\n\t\t\t\t\t\t// the parent frame is not scramjet-controlled, so we can't get a parent frame name\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\"YOU NEED TO USE `new ScramjetFrame()`! DIRECT IFRAMES WILL NOT WORK\"\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn frame.name;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t\tthis.locationProxy = createLocationProxy(this, global);\n\n\t\tglobal[SCRAMJETCLIENT] = this;\n\t}\n\n\tget frame(): ScramjetFrame | null {\n\t\tif (!iswindow) return null;\n\t\tconst frame = this.descriptors.get(\"window.frameElement\", this.global);\n\n\t\tif (!frame) return null; // we're top level\n\t\tconst sframe = frame[SCRAMJETFRAME];\n\n\t\tif (!sframe) {\n\t\t\t// we're in a subframe, recurse upward until we find one\n\t\t\tlet currentwin = this.global.window;\n\t\t\twhile (currentwin.parent !== currentwin) {\n\t\t\t\tlet currentclient = currentwin[SCRAMJETCLIENT];\n\t\t\t\tlet currentFrame = currentclient.descriptors.get(\n\t\t\t\t\t\"window.frameElement\",\n\t\t\t\t\tcurrentwin\n\t\t\t\t);\n\t\t\t\tif (!currentFrame) return null; // ??\n\t\t\t\tif (currentFrame && currentFrame[SCRAMJETFRAME]) {\n\t\t\t\t\treturn currentFrame[SCRAMJETFRAME];\n\t\t\t\t}\n\t\t\t\tcurrentwin = currentwin.parent.window;\n\t\t\t}\n\t\t}\n\n\t\treturn sframe;\n\t}\n\tget isSubframe(): boolean {\n\t\tif (!iswindow) return false;\n\t\tconst frame = this.descriptors.get(\"window.frameElement\", this.global);\n\n\t\tif (!frame) return false; // we're top level\n\t\tconst sframe = frame[SCRAMJETFRAME];\n\t\tif (!sframe) return true;\n\n\t\treturn false;\n\t}\n\n\thook() {\n\t\tconst context = import.meta.webpackContext(\".\", {\n\t\t\trecursive: true,\n\t\t});\n\n\t\tconst modules: ScramjetModule[] = [];\n\n\t\tfor (const key of context.keys()) {\n\t\t\tconst module = context(key) as ScramjetModule;\n\t\t\tif (!key.endsWith(\".ts\")) continue;\n\t\t\tif (\n\t\t\t\t(key.startsWith(\"./dom/\") && \"window\" in this.global) ||\n\t\t\t\t(key.startsWith(\"./worker/\") && \"WorkerGlobalScope\" in this.global) ||\n\t\t\t\tkey.startsWith(\"./shared/\")\n\t\t\t) {\n\t\t\t\tmodules.push(module);\n\t\t\t}\n\t\t}\n\n\t\tmodules.sort((a, b) => {\n\t\t\tconst aorder = a.order || 0;\n\t\t\tconst border = b.order || 0;\n\n\t\t\treturn aorder - border;\n\t\t});\n\n\t\tfor (const module of modules) {\n\t\t\tif (!module.enabled || module.enabled(this))\n\t\t\t\tmodule.default(this, this.global);\n\t\t\telse if (module.disabled) module.disabled(this, this.global);\n\t\t}\n\t}\n\n\tget url(): URL {\n\t\treturn new URL(this.unrewriteUrl(this.global.location.href));\n\t}\n\n\tset url(url: URL | string) {\n\t\tif (url instanceof URL) url = url.toString();\n\n\t\tconst ev = new NavigateEvent(url);\n\t\tif (this.frame) {\n\t\t\tthis.frame.dispatchEvent(ev);\n\t\t}\n\t\tif (ev.defaultPrevented) return;\n\n\t\tthis.global.location.href = this.rewriteUrl(ev.url);\n\t}\n\n\t// below are the utilities for proxying and trapping dom APIs\n\t// you don't have to understand this it just makes the rest easier\n\t// i'll document it eventually\n\n\tProxy(name: string | string[], handler: Proxy) {\n\t\tif (Array.isArray(name)) {\n\t\t\tfor (const n of name) {\n\t\t\t\tthis.Proxy(n, handler);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst split = name.split(\".\");\n\t\tconst prop = split.pop();\n\t\tconst target = split.reduce((a, b) => a?.[b], this.global);\n\t\tif (!target) return;\n\n\t\tif (!(name in this.natives.store)) {\n\t\t\tconst original = Reflect.get(target, prop);\n\t\t\tthis.natives.store[name] = original;\n\t\t}\n\n\t\tthis.RawProxy(target, prop, handler, name);\n\t}\n\tRawProxy(target: any, prop: string, handler: Proxy, debugname?: string) {\n\t\tif (!target) return;\n\t\tif (!prop) return;\n\t\tif (!Reflect.has(target, prop)) return;\n\n\t\tconst value = Reflect.get(target, prop);\n\t\tdelete target[prop];\n\n\t\tconst h: ProxyHandler<any> = {};\n\n\t\tlet applyFn: typeof Reflect.apply;\n\t\tlet constructFn: typeof Reflect.construct;\n\t\tif (this.flagEnabled(\"debugTrampolines\")) {\n\t\t\tlet fnName: string;\n\t\t\tif (debugname) {\n\t\t\t\tfnName = debugname;\n\t\t\t} else if (typeof value === \"function\" && value.name) {\n\t\t\t\tfnName = `Function ${value.name} -> ${prop}`;\n\t\t\t} else if (typeof value === \"object\" && value.constructor) {\n\t\t\t\tfnName = `Object ${value.constructor.name} -> ${prop}`;\n\t\t\t} else {\n\t\t\t\tfnName = `${typeof value} -> ${prop}`;\n\t\t\t}\n\t\t\tlet windowName = this.descriptors.get(\"window.name\", this.global);\n\t\t\tif (!windowName) windowName = \"<unnamed window>\";\n\t\t\tlet location = this.url.href;\n\n\t\t\t// sanitize newlines just in case somehow\n\t\t\tlocation = location.replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n\t\t\twindowName = windowName.replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n\t\t\tfnName = fnName.replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n\t\t\tlet sourceURL = debugname ? `${debugname}.sj` : `rawproxy.sj`;\n\n\t\t\tlet { construct, apply } = this.natives.call(\n\t\t\t\t\"Function\",\n\t\t\t\tnull,\n\t\t\t\t`\"use strict\";\n\n// SCRAMJET FUNCTION INTERCEPT\n// target: ${fnName}\n// frame: ${windowName}\n// location: ${location}\n\nfunction apply(fn, that, args) {\n\treturn Reflect.apply(fn, that, args);\n}\n\nfunction construct(fn, args, newTarget) {\n\treturn Reflect.construct(fn, args, newTarget);\n}\n\nreturn { apply, construct };\n\n//# sourceURL=${sourceURL}`\n\t\t\t)();\n\n\t\t\tapplyFn = apply;\n\t\t\tconstructFn = construct;\n\t\t} else {\n\t\t\tapplyFn = Reflect.apply;\n\t\t\tconstructFn = Reflect.construct;\n\t\t}\n\n\t\tif (handler.construct) {\n\t\t\th.construct = function (\n\t\t\t\tconstructor: any,\n\t\t\t\targs: any[],\n\t\t\t\tnewTarget: AnyFunction\n\t\t\t) {\n\t\t\t\tlet returnValue: any = undefined;\n\t\t\t\tlet earlyreturn = false;\n\n\t\t\t\tconst ctx: ProxyCtx = {\n\t\t\t\t\tfn: constructor,\n\t\t\t\t\tthis: null,\n\t\t\t\t\targs,\n\t\t\t\t\tnewTarget: newTarget,\n\t\t\t\t\treturn: (r: any) => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = r;\n\t\t\t\t\t},\n\t\t\t\t\tcall: () => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = constructFn(ctx.fn, ctx.args, ctx.newTarget);\n\n\t\t\t\t\t\treturn returnValue;\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\thandler.construct(ctx);\n\n\t\t\t\tif (earlyreturn) {\n\t\t\t\t\treturn returnValue;\n\t\t\t\t}\n\n\t\t\t\treturn constructFn(ctx.fn, ctx.args, ctx.newTarget);\n\t\t\t};\n\t\t}\n\n\t\tif (handler.apply) {\n\t\t\th.apply = (fn: any, that: any, args: any[]) => {\n\t\t\t\tlet returnValue: any = undefined;\n\t\t\t\tlet earlyreturn = false;\n\n\t\t\t\tconst ctx: ProxyCtx = {\n\t\t\t\t\tfn,\n\t\t\t\t\tthis: that,\n\t\t\t\t\targs,\n\t\t\t\t\tnewTarget: null,\n\t\t\t\t\treturn: (r: any) => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = r;\n\t\t\t\t\t},\n\t\t\t\t\tcall: () => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = applyFn(ctx.fn, ctx.this, ctx.args);\n\n\t\t\t\t\t\treturn returnValue;\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tconst pst = Error.prepareStackTrace;\n\n\t\t\t\tlet client = this;\n\t\t\t\tError.prepareStackTrace = function (err, s) {\n\t\t\t\t\tif (\n\t\t\t\t\t\ts[0].getFileName() &&\n\t\t\t\t\t\t!s[0].getFileName().startsWith(client.context.prefix.href)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn { stack: err.stack };\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\ttry {\n\t\t\t\t\thandler.apply(ctx);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (err instanceof Error) {\n\t\t\t\t\t\tif ((err.stack as any) instanceof Object) {\n\t\t\t\t\t\t\t//@ts-expect-error i'm not going to explain this\n\t\t\t\t\t\t\terr.stack = err.stack.stack;\n\t\t\t\t\t\t\tconsole.error(\"ERROR FROM SCRAMJET INTERNALS\", err);\n\t\t\t\t\t\t\tif (!this.flagEnabled(\"allowFailedIntercepts\")) {\n\t\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tError.prepareStackTrace = pst;\n\n\t\t\t\tif (earlyreturn) {\n\t\t\t\t\treturn returnValue;\n\t\t\t\t}\n\n\t\t\t\treturn applyFn(ctx.fn, ctx.this, ctx.args);\n\t\t\t};\n\t\t}\n\n\t\th.getOwnPropertyDescriptor = getOwnPropertyDescriptorHandler;\n\t\ttarget[prop] = new Proxy(value, h);\n\t}\n\tTrap<T>(name: string | string[], descriptor: Trap<T>): PropertyDescriptor {\n\t\tif (Array.isArray(name)) {\n\t\t\tfor (const n of name) {\n\t\t\t\tthis.Trap(n, descriptor);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst split = name.split(\".\");\n\t\tconst prop = split.pop();\n\t\tconst target = split.reduce((a, b) => a?.[b], this.global);\n\t\tif (!target) return;\n\n\t\tconst original = this.natives.call(\n\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\tnull,\n\t\t\ttarget,\n\t\t\tprop\n\t\t);\n\t\tthis.descriptors.store[name] = original;\n\n\t\treturn this.RawTrap(target, prop, descriptor);\n\t}\n\tRawTrap<T>(\n\t\ttarget: any,\n\t\tprop: string,\n\t\tdescriptor: Trap<T>\n\t): PropertyDescriptor {\n\t\tif (!target) return;\n\t\tif (!prop) return;\n\t\tif (!Reflect.has(target, prop)) return;\n\n\t\tconst oldDescriptor = this.natives.call(\n\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\tnull,\n\t\t\ttarget,\n\t\t\tprop\n\t\t);\n\n\t\tconst ctx: TrapCtx<T> = {\n\t\t\tthis: null,\n\t\t\tget: function () {\n\t\t\t\treturn oldDescriptor && oldDescriptor.get.call(this.this);\n\t\t\t},\n\t\t\tset: function (v: T) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-expressions\n\t\t\t\toldDescriptor && oldDescriptor.set.call(this.this, v);\n\t\t\t},\n\t\t};\n\n\t\tdelete target[prop];\n\n\t\tconst desc: PropertyDescriptor = {};\n\n\t\tif (descriptor.get) {\n\t\t\tdesc.get = function () {\n\t\t\t\tctx.this = this;\n\n\t\t\t\treturn descriptor.get(ctx);\n\t\t\t};\n\t\t} else if (oldDescriptor?.get) {\n\t\t\tdesc.get = oldDescriptor.get;\n\t\t}\n\n\t\tif (descriptor.set) {\n\t\t\tdesc.set = function (v: T) {\n\t\t\t\tctx.this = this;\n\n\t\t\t\tdescriptor.set(ctx, v);\n\t\t\t};\n\t\t} else if (oldDescriptor?.set) {\n\t\t\tdesc.set = oldDescriptor.set;\n\t\t}\n\n\t\tif (descriptor.enumerable) desc.enumerable = descriptor.enumerable;\n\t\telse if (oldDescriptor?.enumerable)\n\t\t\tdesc.enumerable = oldDescriptor.enumerable;\n\t\tif (descriptor.configurable) desc.configurable = descriptor.configurable;\n\t\telse if (oldDescriptor?.configurable)\n\t\t\tdesc.configurable = oldDescriptor.configurable;\n\n\t\tObject.defineProperty(target, prop, desc);\n\n\t\treturn oldDescriptor;\n\t}\n\n\trewriteUrl(url: string | URL): string {\n\t\treturn rewriteUrl(url, this.context, this.meta);\n\t}\n\n\tunrewriteUrl(url: string | URL): string {\n\t\treturn unrewriteUrl(url, this.context);\n\t}\n\n\tflagEnabled(flag: keyof ScramjetConfig[\"flags\"]): boolean {\n\t\treturn flagEnabled(flag, this.context, this.url);\n\t}\n\n\tget config(): ScramjetConfig {\n\t\treturn this.context.config;\n\t}\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, _self: typeof window) {\n\tclient.Trap(\"Element.prototype.attributes\", {\n\t\tget(ctx) {\n\t\t\tconst map = ctx.get() as NamedNodeMap;\n\t\t\tconst proxy = new Proxy(map, {\n\t\t\t\tget(target, prop, _receiver) {\n\t\t\t\t\tconst value = Reflect.get(target, prop);\n\n\t\t\t\t\tif (prop === \"length\") {\n\t\t\t\t\t\treturn Object.keys(proxy).length;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (prop === \"getNamedItem\") {\n\t\t\t\t\t\treturn (name: string) => proxy[name];\n\t\t\t\t\t}\n\t\t\t\t\tif (prop === \"getNamedItemNS\") {\n\t\t\t\t\t\treturn (namespace: string, name: string) =>\n\t\t\t\t\t\t\tproxy[`${namespace}:${name}`];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (prop in NamedNodeMap.prototype && typeof value === \"function\") {\n\t\t\t\t\t\treturn new Proxy(value, {\n\t\t\t\t\t\t\tapply(target, that, args) {\n\t\t\t\t\t\t\t\tif (that === proxy) {\n\t\t\t\t\t\t\t\t\treturn Reflect.apply(target, map, args);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn Reflect.apply(target, that, args);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(typeof prop === \"string\" || typeof prop === \"number\") &&\n\t\t\t\t\t\t!isNaN(Number(prop))\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst position = Object.keys(proxy)[prop];\n\n\t\t\t\t\t\treturn map[position];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.has(target, prop)) return undefined;\n\n\t\t\t\t\treturn value;\n\t\t\t\t},\n\t\t\t\townKeys(target) {\n\t\t\t\t\tconst keys = Reflect.ownKeys(target);\n\n\t\t\t\t\treturn keys.filter((key) => this.has(target, key));\n\t\t\t\t},\n\t\t\t\thas(target, prop) {\n\t\t\t\t\tif (typeof prop === \"symbol\") return Reflect.has(target, prop);\n\t\t\t\t\tif (prop.startsWith(\"scramjet-attr-\")) return false;\n\t\t\t\t\tif (map[prop]?.name?.startsWith(\"scramjet-attr-\")) return false;\n\n\t\t\t\t\treturn Reflect.has(target, prop);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn proxy;\n\t\t},\n\t});\n\n\tclient.Trap([\"Attr.prototype.value\", \"Attr.prototype.nodeValue\"], {\n\t\tget(ctx) {\n\t\t\tif (ctx.this?.ownerElement) {\n\t\t\t\treturn ctx.this.ownerElement.getAttribute(ctx.this.name);\n\t\t\t}\n\n\t\t\treturn ctx.get();\n\t\t},\n\t\tset(ctx, value) {\n\t\t\tif (ctx.this?.ownerElement) {\n\t\t\t\treturn ctx.this.ownerElement.setAttribute(ctx.this.name, value);\n\t\t\t}\n\n\t\t\treturn ctx.set(value);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"Navigator.prototype.sendBeacon\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, self: typeof window) {\n\tclient.Trap(\"Document.prototype.cookie\", {\n\t\tget() {\n\t\t\treturn client.context.cookieJar.getCookies(client.url, true);\n\t\t},\n\t\tset(ctx, value: string) {\n\t\t\tclient.context.cookieJar.setCookies([value], client.url);\n\t\t\tclient.init.sendSetCookie(client.url, value);\n\t\t},\n\t});\n\n\t// @ts-ignore\n\tdelete self.cookieStore;\n}\n","import { rewriteCss, unrewriteCss } from \"@rewriters/css\";\nimport { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"CSSStyleDeclaration.prototype.setProperty\", {\n\t\tapply(ctx) {\n\t\t\tif (!ctx.args[1]) return;\n\t\t\tctx.args[1] = rewriteCss(ctx.args[1], client.context, client.meta);\n\t\t},\n\t});\n\n\tclient.Proxy(\"CSSStyleDeclaration.prototype.getPropertyValue\", {\n\t\tapply(ctx) {\n\t\t\tconst v = ctx.call();\n\t\t\tif (!v) return v;\n\t\t\tctx.return(unrewriteCss(v));\n\t\t},\n\t});\n\n\tclient.Trap(\"CSSStyleDeclaration.prototype.cssText\", {\n\t\tset(ctx, value: string) {\n\t\t\tctx.set(rewriteCss(value, client.context, client.meta));\n\t\t},\n\t\tget(ctx) {\n\t\t\treturn unrewriteCss(ctx.get());\n\t\t},\n\t});\n\n\tclient.Proxy(\"CSSStyleSheet.prototype.insertRule\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = rewriteCss(ctx.args[0], client.context, client.meta);\n\t\t},\n\t});\n\n\tclient.Proxy(\"CSSStyleSheet.prototype.replace\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = rewriteCss(ctx.args[0], client.context, client.meta);\n\t\t},\n\t});\n\n\tclient.Proxy(\"CSSStyleSheet.prototype.replaceSync\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = rewriteCss(ctx.args[0], client.context, client.meta);\n\t\t},\n\t});\n\n\tclient.Trap(\"CSSRule.prototype.cssText\", {\n\t\tset(ctx, value: string) {\n\t\t\tctx.set(rewriteCss(value, client.context, client.meta));\n\t\t},\n\t\tget(ctx) {\n\t\t\treturn unrewriteCss(ctx.get());\n\t\t},\n\t});\n\n\tclient.Proxy(\"CSSStyleValue.parse\", {\n\t\tapply(ctx) {\n\t\t\tif (!ctx.args[1]) return;\n\t\t\tctx.args[1] = rewriteCss(ctx.args[1], client.context, client.meta);\n\t\t},\n\t});\n\n\tclient.Trap(\"HTMLElement.prototype.style\", {\n\t\tget(ctx) {\n\t\t\t// unfortunate and dumb hack. we have to trap every property of this\n\t\t\t// since the prototype chain is fucked\n\n\t\t\tconst style = ctx.get() as CSSStyleDeclaration;\n\n\t\t\treturn new Proxy(style, {\n\t\t\t\tget(target, prop) {\n\t\t\t\t\tconst value = Reflect.get(target, prop);\n\n\t\t\t\t\tif (typeof value === \"function\") {\n\t\t\t\t\t\treturn new Proxy(value, {\n\t\t\t\t\t\t\tapply(target, that, args) {\n\t\t\t\t\t\t\t\treturn Reflect.apply(target, style, args);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (prop in CSSStyleDeclaration.prototype) return value;\n\t\t\t\t\tif (!value) return value;\n\n\t\t\t\t\treturn unrewriteCss(value);\n\t\t\t\t},\n\t\t\t\tset(target, prop, value) {\n\t\t\t\t\tif (prop == \"cssText\" || value == \"\" || typeof value !== \"string\") {\n\t\t\t\t\t\treturn Reflect.set(target, prop, value);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Reflect.set(\n\t\t\t\t\t\ttarget,\n\t\t\t\t\t\tprop,\n\t\t\t\t\t\trewriteCss(value, client.context, client.meta)\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tset(ctx, value: string) {\n\t\t\t// this will actually run the trap for cssText. don't rewrite it here\n\t\t\tctx.set(value);\n\t\t},\n\t});\n}\n","import { rewriteHtml } from \"@rewriters/html\";\nimport { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tconst tostring = String;\n\tclient.Proxy(\n\t\t[\"Document.prototype.querySelector\", \"Document.prototype.querySelectorAll\"],\n\t\t{\n\t\t\tapply(ctx) {\n\t\t\t\tctx.args[0] = tostring(ctx.args[0]).replace(\n\t\t\t\t\t/((?:^|\\s)\\b\\w+\\[(?:src|href|data-href))[\\^]?(=['\"]?(?:https?[:])?\\/\\/)/,\n\t\t\t\t\t\"$1*$2\"\n\t\t\t\t);\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Proxy(\"Document.prototype.write\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\n\t\t\t\ttry {\n\t\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\t\tctx.args[0],\n\t\t\t\t\t\tclient.context,\n\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t} catch {}\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.referrer\", {\n\t\tget() {\n\t\t\treturn client.url.toString();\n\t\t},\n\t});\n\n\tclient.Proxy(\"Document.prototype.writeln\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\n\t\t\t\ttry {\n\t\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\t\tctx.args[0],\n\t\t\t\t\t\tclient.context,\n\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t} catch {}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Document.prototype.parseHTMLUnsafe\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\n\t\t\t\ttry {\n\t\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\t\tctx.args[0],\n\t\t\t\t\t\tclient.context,\n\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t} catch {}\n\t\t},\n\t});\n}\n","import { htmlRules } from \"@/shared/htmlRules\";\nimport { rewriteCss, unrewriteCss } from \"@rewriters/css\";\nimport { rewriteHtml, unrewriteHtml } from \"@rewriters/html\";\nimport { rewriteJs } from \"@rewriters/js\";\nimport { rewriteUrl, unrewriteUrl } from \"@rewriters/url\";\nimport { SCRAMJETCLIENT } from \"@/symbols\";\nimport { ScramjetClient } from \"@client/index\";\n\nconst encoder = new TextEncoder();\nfunction bytesToBase64(bytes: Uint8Array) {\n\tconst binString = Array.from(bytes, (byte) =>\n\t\tString.fromCodePoint(byte)\n\t).join(\"\");\n\n\treturn btoa(binString);\n}\nexport default function (client: ScramjetClient, self: typeof window) {\n\tconst attrObject = {\n\t\tnonce: [self.HTMLElement],\n\t\tintegrity: [self.HTMLScriptElement, self.HTMLLinkElement],\n\t\tcsp: [self.HTMLIFrameElement],\n\t\tcredentialless: [self.HTMLIFrameElement],\n\t\tsrc: [\n\t\t\tself.HTMLImageElement,\n\t\t\tself.HTMLMediaElement,\n\t\t\tself.HTMLIFrameElement,\n\t\t\tself.HTMLFrameElement,\n\t\t\tself.HTMLEmbedElement,\n\t\t\tself.HTMLScriptElement,\n\t\t\tself.HTMLSourceElement,\n\t\t],\n\t\thref: [self.HTMLAnchorElement, self.HTMLLinkElement],\n\t\tdata: [self.HTMLObjectElement],\n\t\taction: [self.HTMLFormElement],\n\t\tformaction: [self.HTMLButtonElement, self.HTMLInputElement],\n\t\tsrcdoc: [self.HTMLIFrameElement],\n\t\tposter: [self.HTMLVideoElement],\n\t\timagesrcset: [self.HTMLLinkElement],\n\t};\n\n\tconst urlinterfaces = [\n\t\tself.HTMLAnchorElement.prototype,\n\t\tself.HTMLAreaElement.prototype,\n\t];\n\tconst originalhrefs = [\n\t\tclient.natives.call(\n\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\tnull,\n\t\t\tself.HTMLAnchorElement.prototype,\n\t\t\t\"href\"\n\t\t),\n\t\tclient.natives.call(\n\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\tnull,\n\t\t\tself.HTMLAreaElement.prototype,\n\t\t\t\"href\"\n\t\t),\n\t];\n\n\tconst attrs = Object.keys(attrObject);\n\n\tfor (const attr of attrs) {\n\t\tfor (const element of attrObject[attr]) {\n\t\t\tconst descriptor = client.natives.call(\n\t\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\t\tnull,\n\t\t\t\telement.prototype,\n\t\t\t\tattr\n\t\t\t);\n\t\t\tObject.defineProperty(element.prototype, attr, {\n\t\t\t\tget() {\n\t\t\t\t\tif ([\"src\", \"data\", \"href\", \"action\", \"formaction\"].includes(attr)) {\n\t\t\t\t\t\treturn unrewriteUrl(descriptor.get.call(this), client.context);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn descriptor.get.call(this);\n\t\t\t\t},\n\n\t\t\t\tset(value) {\n\t\t\t\t\treturn this.setAttribute(attr, value);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\t// note that href is not here\n\tconst urlprops = [\n\t\t\"protocol\",\n\t\t\"hash\",\n\t\t\"host\",\n\t\t\"hostname\",\n\t\t\"origin\",\n\t\t\"pathname\",\n\t\t\"port\",\n\t\t\"search\",\n\t];\n\tfor (const prop of urlprops) {\n\t\tfor (const i in urlinterfaces) {\n\t\t\tconst target = urlinterfaces[i];\n\t\t\tconst desc = originalhrefs[i];\n\t\t\tclient.RawTrap(target, prop, {\n\t\t\t\tget(ctx) {\n\t\t\t\t\tconst href = desc.get.call(ctx.this);\n\t\t\t\t\tif (!href) return href;\n\n\t\t\t\t\tconst url = new URL(unrewriteUrl(href, client.context));\n\n\t\t\t\t\treturn url[prop];\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tclient.Trap(\"Node.prototype.baseURI\", {\n\t\tget(ctx) {\n\t\t\tconst node = ctx.this as Node;\n\t\t\tlet base = node.ownerDocument?.querySelector(\"base\");\n\t\t\tif (node instanceof Document) base = node.querySelector(\"base\");\n\n\t\t\tif (base) {\n\t\t\t\treturn new URL(base.href, client.url.origin).href;\n\t\t\t}\n\n\t\t\treturn client.url.origin;\n\t\t},\n\t\tset(ctx, v) {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getAttribute\", {\n\t\tapply(ctx) {\n\t\t\tconst [name] = ctx.args;\n\n\t\t\tif (name.startsWith(\"scramjet-attr\")) {\n\t\t\t\treturn ctx.return(null);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.hasAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t`scramjet-attr-${name}`\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tconst attrib = ctx.fn.call(ctx.this, `scramjet-attr-${name}`);\n\t\t\t\tif (attrib === null) return ctx.return(\"\");\n\n\t\t\t\treturn ctx.return(attrib);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getAttributeNames\", {\n\t\tapply(ctx) {\n\t\t\tconst attrNames = ctx.call() as string[];\n\t\t\tconst cleaned = attrNames.filter(\n\t\t\t\t(attr) => !attr.startsWith(\"scramjet-attr\")\n\t\t\t);\n\n\t\t\tctx.return(cleaned);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getAttributeNode\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0].startsWith(\"scramjet-attr\")) return ctx.return(null);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.hasAttribute\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0].startsWith(\"scramjet-attr\")) return ctx.return(false);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.setAttribute\", {\n\t\tapply(ctx) {\n\t\t\tconst [name, value] = ctx.args;\n\n\t\t\tconst ruleList = htmlRules.find((rule) => {\n\t\t\t\tconst r = rule[name.toLowerCase()];\n\t\t\t\tif (!r) return false;\n\t\t\t\tif (r === \"*\") return true;\n\t\t\t\tif (typeof r === \"function\") return false; // this can't happen but ts\n\n\t\t\t\treturn r.includes(ctx.this.tagName.toLowerCase());\n\t\t\t});\n\n\t\t\tif (ruleList) {\n\t\t\t\tconst ret = ruleList.fn(value, client.context, client.meta);\n\t\t\t\tif (ret == null) {\n\t\t\t\t\tclient.natives.call(\n\t\t\t\t\t\t\"Element.prototype.removeAttribute\",\n\t\t\t\t\t\tctx.this,\n\t\t\t\t\t\tname\n\t\t\t\t\t);\n\t\t\t\t\tctx.return(undefined);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tctx.args[1] = ret;\n\t\t\t\tctx.fn.call(ctx.this, `scramjet-attr-${ctx.args[0]}`, value);\n\t\t\t}\n\t\t},\n\t});\n\n\t// i actually need to do something with this\n\tclient.Proxy(\"Element.prototype.setAttributeNode\", {\n\t\tapply(_ctx) {},\n\t});\n\n\tclient.Proxy(\"Element.prototype.setAttributeNS\", {\n\t\tapply(ctx) {\n\t\t\tconst [_namespace, name, value] = ctx.args;\n\n\t\t\tconst ruleList = htmlRules.find((rule) => {\n\t\t\t\tconst r = rule[name.toLowerCase()];\n\t\t\t\tif (!r) return false;\n\t\t\t\tif (r === \"*\") return true;\n\t\t\t\tif (typeof r === \"function\") return false; // this can't happen but ts\n\n\t\t\t\treturn r.includes(ctx.this.tagName.toLowerCase());\n\t\t\t});\n\n\t\t\tif (ruleList) {\n\t\t\t\tctx.args[2] = ruleList.fn(value, client.context, client.meta);\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.setAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t`scramjet-attr-${ctx.args[1]}`,\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t});\n\n\t// this is separate from the regular href handlers because it returns an SVGAnimatedString\n\tclient.Trap(\"SVGAnimatedString.prototype.baseVal\", {\n\t\tget(ctx) {\n\t\t\tconst href = ctx.get() as string;\n\t\t\tif (!href) return href;\n\n\t\t\treturn unrewriteUrl(href, client.context);\n\t\t},\n\t\tset(ctx, val: string) {\n\t\t\tctx.set(client.rewriteUrl(val));\n\t\t},\n\t});\n\tclient.Trap(\"SVGAnimatedString.prototype.animVal\", {\n\t\tget(ctx) {\n\t\t\tconst href = ctx.get() as string;\n\t\t\tif (!href) return href;\n\n\t\t\treturn unrewriteUrl(href, client.context);\n\t\t},\n\t\t// it has no setter\n\t});\n\n\tclient.Proxy(\"Element.prototype.removeAttribute\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0].startsWith(\"scramjet-attr\")) return ctx.return(undefined);\n\t\t\tif (\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.hasAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\tctx.args[0]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tctx.fn.call(ctx.this, `scramjet-attr-${ctx.args[0]}`);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.toggleAttribute\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0].startsWith(\"scramjet-attr\")) return ctx.return(false);\n\t\t\tif (\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.hasAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\tctx.args[0]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tctx.fn.call(ctx.this, `scramjet-attr-${ctx.args[0]}`);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Trap(\"Element.prototype.innerHTML\", {\n\t\tset(ctx, value: string) {\n\t\t\tlet newval;\n\t\t\tif (\n\t\t\t\tctx.this instanceof self.HTMLScriptElement &&\n\t\t\t\t/(application|text)\\/javascript|module|undefined/.test(ctx.this.type)\n\t\t\t) {\n\t\t\t\tnewval = rewriteJs(\n\t\t\t\t\tvalue,\n\t\t\t\t\t\"(anonymous script element)\",\n\t\t\t\t\tclient.context,\n\t\t\t\t\tclient.meta\n\t\t\t\t);\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.setAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t\"scramjet-attr-script-source-src\",\n\t\t\t\t\tbytesToBase64(encoder.encode(newval))\n\t\t\t\t);\n\t\t\t} else if (ctx.this instanceof self.HTMLStyleElement) {\n\t\t\t\tnewval = rewriteCss(value, client.context, client.meta);\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tnewval = rewriteHtml(value, client.context, client.meta);\n\t\t\t\t} catch {\n\t\t\t\t\tnewval = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tctx.set(newval);\n\t\t},\n\t\tget(ctx) {\n\t\t\tif (ctx.this instanceof self.HTMLScriptElement) {\n\t\t\t\tconst scriptSource = client.natives.call(\n\t\t\t\t\t\"Element.prototype.getAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t\"scramjet-attr-script-source-src\"\n\t\t\t\t);\n\n\t\t\t\tif (scriptSource) {\n\t\t\t\t\treturn atob(scriptSource);\n\t\t\t\t}\n\n\t\t\t\treturn ctx.get();\n\t\t\t}\n\t\t\tif (ctx.this instanceof self.HTMLStyleElement) {\n\t\t\t\treturn ctx.get();\n\t\t\t}\n\n\t\t\treturn unrewriteHtml(ctx.get());\n\t\t},\n\t});\n\n\tclient.Trap(\"Node.prototype.textContent\", {\n\t\tset(ctx, value: string) {\n\t\t\t// TODO: box the instanceofs\n\t\t\tif (\n\t\t\t\tctx.this instanceof self.HTMLScriptElement &&\n\t\t\t\t/(application|text)\\/javascript|module|undefined/.test(ctx.this.type)\n\t\t\t) {\n\t\t\t\tconst newval: string = rewriteJs(\n\t\t\t\t\tvalue,\n\t\t\t\t\t\"(anonymous script element)\",\n\t\t\t\t\tclient.context,\n\t\t\t\t\tclient.meta\n\t\t\t\t) as string;\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.setAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t\"scramjet-attr-script-source-src\",\n\t\t\t\t\tbytesToBase64(encoder.encode(newval))\n\t\t\t\t);\n\n\t\t\t\treturn ctx.set(newval);\n\t\t\t} else if (ctx.this instanceof self.HTMLStyleElement) {\n\t\t\t\treturn ctx.set(rewriteCss(value, client.context, client.meta));\n\t\t\t} else {\n\t\t\t\treturn ctx.set(value);\n\t\t\t}\n\t\t},\n\t\tget(ctx) {\n\t\t\tif (ctx.this instanceof self.HTMLScriptElement) {\n\t\t\t\tconst scriptSource = client.natives.call(\n\t\t\t\t\t\"Element.prototype.getAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t\"scramjet-attr-script-source-src\"\n\t\t\t\t);\n\n\t\t\t\tif (scriptSource) {\n\t\t\t\t\treturn atob(scriptSource);\n\t\t\t\t}\n\n\t\t\t\treturn ctx.get();\n\t\t\t}\n\t\t\tif (ctx.this instanceof self.HTMLStyleElement) {\n\t\t\t\treturn unrewriteCss(ctx.get() as string);\n\t\t\t}\n\n\t\t\treturn ctx.get();\n\t\t},\n\t});\n\n\tclient.Trap(\"Element.prototype.outerHTML\", {\n\t\tset(ctx, value: string) {\n\t\t\tctx.set(rewriteHtml(value, client.context, client.meta));\n\t\t},\n\t\tget(ctx) {\n\t\t\treturn unrewriteHtml(ctx.get());\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.setHTMLUnsafe\", {\n\t\tapply(ctx) {\n\t\t\ttry {\n\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\tctx.args[0],\n\t\t\t\t\tclient.context,\n\t\t\t\t\tclient.meta,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t} catch {}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getHTML\", {\n\t\tapply(ctx) {\n\t\t\tctx.return(unrewriteHtml(ctx.call()));\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.insertAdjacentHTML\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[1])\n\t\t\t\ttry {\n\t\t\t\t\tctx.args[1] = rewriteHtml(\n\t\t\t\t\t\tctx.args[1],\n\t\t\t\t\t\tclient.context,\n\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t} catch {}\n\t\t},\n\t});\n\n\t// TODO: this needs to be done for all insert methods\n\t// client.Proxy([\"Element.prototype.appendChild\", \"Element.prototype.append\"], {\n\t// \tapply(ctx) {\n\t// \t\tif (ctx.this instanceof self.HTMLStyleElement) {\n\t// \t\t\tfor (const node of ctx.args) {\n\t// \t\t\t\tif (node instanceof self.Text) {\n\t// \t\t\t\t\tnode.data = rewriteCss(\n\t// \t\t\t\t\t\tctx.args[0].data,\n\t// \t\t\t\t\t\tclient.context,\n\t// \t\t\t\t\t\tclient.meta\n\t// \t\t\t\t\t);\n\t// \t\t\t\t}\n\t// \t\t\t}\n\t// \t\t} else if (ctx.this instanceof self.HTMLScriptElement) {\n\t// \t\t\tfor (const node of ctx.args) {\n\t// \t\t\t\tif (node instanceof self.Text) {\n\t// \t\t\t\t\tconst newval: string = rewriteJs(\n\t// \t\t\t\t\t\tnode.data,\n\t// \t\t\t\t\t\t\"(anonymous script element)\",\n\t// \t\t\t\t\t\tclient.context,\n\t// \t\t\t\t\t\tclient.meta\n\t// \t\t\t\t\t) as string;\n\t// \t\t\t\t\tclient.natives.call(\n\t// \t\t\t\t\t\t\"Element.prototype.setAttribute\",\n\t// \t\t\t\t\t\tctx.this,\n\t// \t\t\t\t\t\t\"scramjet-attr-script-source-src\",\n\t// \t\t\t\t\t\tbytesToBase64(encoder.encode(newval))\n\t// \t\t\t\t\t);\n\t// \t\t\t\t\tnode.data = newval;\n\t// \t\t\t\t}\n\t// \t\t\t}\n\t// \t\t}\n\t// \t},\n\t// });\n\n\tclient.Proxy(\"Audio\", {\n\t\tconstruct(ctx) {\n\t\t\tif (ctx.args[0]) ctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t},\n\t});\n\tclient.Proxy(\"Text.prototype.appendData\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.this.parentElement?.tagName === \"STYLE\") {\n\t\t\t\tctx.args[0] = rewriteCss(ctx.args[0], client.context, client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Text.prototype.insertData\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.this.parentElement?.tagName === \"STYLE\") {\n\t\t\t\tctx.args[1] = rewriteCss(ctx.args[1], client.context, client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Text.prototype.replaceData\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.this.parentElement?.tagName === \"STYLE\") {\n\t\t\t\tctx.args[2] = rewriteCss(ctx.args[2], client.context, client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Trap(\"Text.prototype.wholeText\", {\n\t\tget(ctx) {\n\t\t\tif (ctx.this.parentElement?.tagName === \"STYLE\") {\n\t\t\t\treturn unrewriteCss(ctx.get() as string);\n\t\t\t}\n\n\t\t\treturn ctx.get();\n\t\t},\n\t\tset(ctx, v) {\n\t\t\tif (ctx.this.parentElement?.tagName === \"STYLE\") {\n\t\t\t\treturn ctx.set(rewriteCss(v as string, client.context, client.meta));\n\t\t\t}\n\n\t\t\treturn ctx.set(v);\n\t\t},\n\t});\n\n\tclient.Trap(\n\t\t[\n\t\t\t\"HTMLIFrameElement.prototype.contentWindow\",\n\t\t\t\"HTMLFrameElement.prototype.contentWindow\",\n\t\t\t\"HTMLObjectElement.prototype.contentWindow\",\n\t\t\t\"HTMLEmbedElement.prototype.contentWindow\",\n\t\t],\n\t\t{\n\t\t\tget(ctx) {\n\t\t\t\tconst realwin = ctx.get() as Window;\n\t\t\t\tif (!realwin) return realwin;\n\n\t\t\t\ttry {\n\t\t\t\t\tif (!(SCRAMJETCLIENT in realwin)) {\n\t\t\t\t\t\t// hook the iframe before the client can start to steal globals out of it\n\t\t\t\t\t\tclient.init.hookSubcontext(realwin, ctx.this);\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// cross-origin iframe, can't do anything here\n\t\t\t\t\treturn realwin;\n\t\t\t\t}\n\n\t\t\t\treturn realwin;\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Trap(\n\t\t[\n\t\t\t\"HTMLIFrameElement.prototype.contentDocument\",\n\t\t\t\"HTMLFrameElement.prototype.contentDocument\",\n\t\t\t\"HTMLObjectElement.prototype.contentDocument\",\n\t\t\t\"HTMLEmbedElement.prototype.contentDocument\",\n\t\t],\n\t\t{\n\t\t\tget(ctx) {\n\t\t\t\tconst realwin = client.descriptors.get(\n\t\t\t\t\t`${ctx.this.constructor.name}.prototype.contentWindow`,\n\t\t\t\t\tctx.this\n\t\t\t\t);\n\t\t\t\tif (!realwin) return realwin;\n\n\t\t\t\tif (!(SCRAMJETCLIENT in realwin)) {\n\t\t\t\t\tclient.init.hookSubcontext(realwin, ctx.this);\n\t\t\t\t}\n\n\t\t\t\treturn realwin.document;\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Proxy(\n\t\t[\n\t\t\t\"HTMLIFrameElement.prototype.getSVGDocument\",\n\t\t\t\"HTMLObjectElement.prototype.getSVGDocument\",\n\t\t\t\"HTMLEmbedElement.prototype.getSVGDocument\",\n\t\t],\n\t\t{\n\t\t\tapply(ctx) {\n\t\t\t\tconst doc = ctx.call();\n\t\t\t\tif (doc) {\n\t\t\t\t\t// we trap the contentDocument, this is really the scramjet version\n\t\t\t\t\treturn ctx.return(ctx.this.contentDocument);\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Proxy(\"DOMParser.prototype.parseFromString\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[1] === \"text/html\") {\n\t\t\t\ttry {\n\t\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\t\tctx.args[0],\n\t\t\t\t\t\tclient.context,\n\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t},\n\t});\n}\n","import { rewriteCss } from \"@rewriters/css\";\nimport { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"FontFace\", {\n\t\tconstruct(ctx) {\n\t\t\tctx.args[1] = rewriteCss(ctx.args[1], client.context, client.meta);\n\t\t},\n\t});\n}\n","import { rewriteHtml } from \"@rewriters/html\";\nimport { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"Range.prototype.createContextualFragment\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = rewriteHtml(ctx.args[0], client.context, client.meta);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { UrlChangeEvent } from \"@client/events\";\nimport { SCRAMJETCLIENT } from \"@/symbols\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\n\t\t[\"History.prototype.pushState\", \"History.prototype.replaceState\"],\n\t\t{\n\t\t\tapply(ctx) {\n\t\t\t\tif (ctx.args[2] || ctx.args[2] === \"\")\n\t\t\t\t\tctx.args[2] = client.rewriteUrl(ctx.args[2]);\n\t\t\t\tctx.call();\n\t\t\t\tconst {\n\t\t\t\t\tconstructor: { constructor: Function },\n\t\t\t\t} = ctx.this;\n\t\t\t\tconst callerGlobalThisProxied: Self = Function(\"return globalThis\")();\n\t\t\t\tconst callerClient = callerGlobalThisProxied[SCRAMJETCLIENT];\n\n\t\t\t\tif (callerGlobalThisProxied.name === client.meta.topFrameName) {\n\t\t\t\t\tconst ev = new UrlChangeEvent(callerClient.url.href);\n\t\t\t\t\tclient.frame?.dispatchEvent(ev);\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { SCRAMJETCLIENT } from \"@/symbols\";\nimport { rewriteUrl } from \"@rewriters/url\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"window.open\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.context, client.meta);\n\n\t\t\tif (ctx.args[1] === \"_top\" || ctx.args[1] === \"_unfencedTop\")\n\t\t\t\tctx.args[1] = client.meta.topFrameName;\n\t\t\tif (ctx.args[1] === \"_parent\") ctx.args[1] = client.meta.parentFrameName;\n\n\t\t\tconst realwin = ctx.call();\n\n\t\t\tif (!realwin) return ctx.return(realwin);\n\n\t\t\tif (!(SCRAMJETCLIENT in realwin)) {\n\t\t\t\t// i don't believe it's possible for a just-opened window to already have scramjet loaded but just in case\n\t\t\t\tclient.init.hookSubcontext(realwin);\n\t\t\t}\n\n\t\t\treturn realwin;\n\t\t},\n\t});\n\n\tclient.Trap(\"window.frameElement\", {\n\t\tget(ctx) {\n\t\t\tconst f = ctx.get() as HTMLIFrameElement | null;\n\t\t\tif (!f) return f;\n\n\t\t\tconst win = f.ownerDocument.defaultView;\n\t\t\tif (win[SCRAMJETCLIENT]) {\n\t\t\t\t// then this is a subframe in a scramjet context, and it's safe to pass back the real iframe\n\t\t\t\treturn f;\n\t\t\t} else {\n\t\t\t\t// no, the top frame is outside the sandbox\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Trap(\"origin\", {\n\t\tget() {\n\t\t\t// this isn't right!!\n\t\t\treturn client.url.origin;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.URL\", {\n\t\tget() {\n\t\t\treturn client.url.href;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.documentURI\", {\n\t\tget() {\n\t\t\treturn client.url.href;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.domain\", {\n\t\tget() {\n\t\t\treturn client.url.hostname;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Trap(\"PerformanceEntry.prototype.name\", {\n\t\tget(ctx) {\n\t\t\t// name is going to be a url typically\n\t\t\tconst name = ctx.get() as string;\n\n\t\t\tif (name && name.startsWith(client.context.prefix.href)) {\n\t\t\t\treturn client.unrewriteUrl(name);\n\t\t\t}\n\n\t\t\treturn name;\n\t\t},\n\t});\n\n\tconst filterEntries = (entries: PerformanceEntry[]) => {\n\t\treturn entries.filter((entry) => {\n\t\t\tfor (const file of client.config.maskedfiles) {\n\t\t\t\tif (entry.name.endsWith(file)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\t};\n\n\tclient.Proxy(\n\t\t[\n\t\t\t\"Performance.prototype.getEntries\",\n\t\t\t\"Performance.prototype.getEntriesByType\",\n\t\t\t\"Performance.prototype.getEntriesByName\",\n\t\t\t\"PerformanceObserverEntryList.prototype.getEntries\",\n\t\t\t\"PerformanceObserverEntryList.prototype.getEntriesByType\",\n\t\t\t\"PerformanceObserverEntryList.prototype.getEntriesByName\",\n\t\t],\n\t\t{\n\t\t\tapply(ctx) {\n\t\t\t\tconst entries = ctx.call() as PerformanceEntry[];\n\n\t\t\t\treturn ctx.return(filterEntries(entries));\n\t\t\t},\n\t\t}\n\t);\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tclient.Proxy(\"Navigator.prototype.registerProtocolHandler\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[1] = client.rewriteUrl(ctx.args[1]);\n\t\t},\n\t});\n\tclient.Proxy(\"Navigator.prototype.unregisterProtocolHandler\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[1] = client.rewriteUrl(ctx.args[1]);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, self: typeof window) {\n\tconst handler: ProxyHandler<Storage> = {\n\t\tget(target, prop) {\n\t\t\tswitch (prop) {\n\t\t\t\tcase \"getItem\":\n\t\t\t\t\treturn (key: string) => {\n\t\t\t\t\t\treturn target.getItem(client.url.host + \"@\" + key);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"setItem\":\n\t\t\t\t\treturn (key: string, value: string) => {\n\t\t\t\t\t\treturn target.setItem(client.url.host + \"@\" + key, value);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"removeItem\":\n\t\t\t\t\treturn (key: string) => {\n\t\t\t\t\t\treturn target.removeItem(client.url.host + \"@\" + key);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"clear\":\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tfor (const key in Object.keys(target)) {\n\t\t\t\t\t\t\tif (key.startsWith(client.url.host)) {\n\t\t\t\t\t\t\t\ttarget.removeItem(key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\tcase \"key\":\n\t\t\t\t\treturn (index: number) => {\n\t\t\t\t\t\tconst keys = Object.keys(target).filter((key) =>\n\t\t\t\t\t\t\tkey.startsWith(client.url.host)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn target.getItem(keys[index]);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"length\":\n\t\t\t\t\treturn Object.keys(target).filter((key) =>\n\t\t\t\t\t\tkey.startsWith(client.url.host)\n\t\t\t\t\t).length;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif (prop in Object.prototype || typeof prop === \"symbol\") {\n\t\t\t\t\t\treturn Reflect.get(target, prop);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn target.getItem(client.url.host + \"@\" + (prop as string));\n\t\t\t}\n\t\t},\n\n\t\tset(target, prop, value) {\n\t\t\ttarget.setItem(client.url.host + \"@\" + (prop as string), value);\n\n\t\t\treturn true;\n\t\t},\n\n\t\thas(target, prop) {\n\t\t\treturn target.getItem(client.url.host + \"@\" + (prop as string)) !== null;\n\t\t},\n\n\t\townKeys(target) {\n\t\t\treturn Reflect.ownKeys(target)\n\t\t\t\t.filter((f) => typeof f === \"string\" && f.startsWith(client.url.host))\n\t\t\t\t.map((f) =>\n\t\t\t\t\ttypeof f === \"string\" ? f.substring(client.url.host.length + 1) : f\n\t\t\t\t);\n\t\t},\n\n\t\tgetOwnPropertyDescriptor(target, property) {\n\t\t\t// TODO: probably not right\n\t\t\tif (\n\t\t\t\ttarget.getItem(client.url.host + \"@\" + (property as string)) === null\n\t\t\t) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tvalue: target.getItem(client.url.host + \"@\" + (property as string)),\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t};\n\t\t},\n\n\t\tdefineProperty(target, property, attributes) {\n\t\t\ttarget.setItem(\n\t\t\t\tclient.url.host + \"@\" + (property as string),\n\t\t\t\tattributes.value\n\t\t\t);\n\n\t\t\treturn true;\n\t\t},\n\t};\n\n\tconst realLocalStorage = self.localStorage;\n\n\tconst localStorageProxy = new Proxy(self.localStorage, handler);\n\tconst sessionStorageProxy = new Proxy(self.sessionStorage, handler);\n\n\tdelete self.localStorage;\n\tdelete self.sessionStorage;\n\n\tself.localStorage = localStorageProxy;\n\tself.sessionStorage = sessionStorageProxy;\n}\n","// entrypoint for scramjet.client.js\n\nimport { ScramjetContext, ScramjetInterface } from \"@/shared/index\";\nimport { SCRAMJETCLIENT } from \"@/symbols\";\nimport { ScramjetClient } from \"@client/index\";\nimport { ScramjetContextEvent, UrlChangeEvent } from \"@client/events\";\nimport { ScramjetConfig } from \"@/types\";\n\nexport const iswindow = \"window\" in globalThis && window instanceof Window;\nexport const isworker = \"WorkerGlobalScope\" in globalThis;\nexport const issw = \"ServiceWorkerGlobalScope\" in globalThis;\nexport const isdedicated = \"DedicatedWorkerGlobalScope\" in globalThis;\nexport const isshared = \"SharedWorkerGlobalScope\" in globalThis;\n","import { ScramjetClient } from \"@client/index\";\n\n/**\n * Union type for all Scramjet proxified navigation events.\n */\nexport type ScramjetEvent =\n\t| NavigateEvent\n\t| UrlChangeEvent\n\t| ScramjetContextEvent;\n\n/**\n * Type map for all Scramjet navigation events with their corresponding event types.\n */\nexport type ScramjetEvents = {\n\tnavigate: NavigateEvent;\n\turlchange: UrlChangeEvent;\n\tcontextInit: ScramjetContextEvent;\n};\n\n/**\n * Navigation event class fired when Scramjet frame navigates to a new proxified URL.\n */\nexport class NavigateEvent extends Event {\n\ttype = \"navigate\";\n\tconstructor(public url: string) {\n\t\tsuper(\"navigate\");\n\t}\n}\n\n/**\n * URL change event class fired when the proxified URL changes in a Scramjet frame.\n */\nexport class UrlChangeEvent extends Event {\n\ttype = \"urlchange\";\n\tconstructor(public url: string) {\n\t\tsuper(\"urlchange\");\n\t}\n}\n\n/**\n * Event class fired when Scramjet initializes in a frame.\n */\nexport class ScramjetContextEvent extends Event {\n\ttype = \"contextInit\";\n\tconstructor(\n\t\tpublic window: Self,\n\t\tpublic client: ScramjetClient\n\t) {\n\t\tsuper(\"contextInit\");\n\t}\n}\n","export function getOwnPropertyDescriptorHandler(target, prop) {\n\tconst realDescriptor = Reflect.getOwnPropertyDescriptor(target, prop);\n\n\treturn realDescriptor;\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { UrlChangeEvent } from \"@client/events\";\nimport { iswindow } from \"@client/entry\";\n\nexport function createLocationProxy(\n\tclient: ScramjetClient,\n\tself: typeof globalThis\n) {\n\tconst Location = iswindow ? self.Location : self.WorkerLocation;\n\t// location cannot be Proxy()d\n\tconst fakeLocation: any = {};\n\tObject.setPrototypeOf(fakeLocation, Location.prototype);\n\tfakeLocation.constructor = Location;\n\n\t// for some reason it's on the object for Location and on the prototype for WorkerLocation??\n\tconst descriptorSource = iswindow ? self.location : Location.prototype;\n\tconst urlprops = [\n\t\t\"protocol\",\n\t\t\"hash\",\n\t\t\"host\",\n\t\t\"hostname\",\n\t\t\"href\",\n\t\t\"origin\",\n\t\t\"pathname\",\n\t\t\"port\",\n\t\t\"search\",\n\t];\n\tfor (const prop of urlprops) {\n\t\tconst native = client.natives.call(\n\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\tnull,\n\t\t\tdescriptorSource,\n\t\t\tprop\n\t\t);\n\t\tif (!native) continue;\n\n\t\tconst desc: Partial<PropertyDescriptor> = {\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t};\n\t\tif (native.get) {\n\t\t\tdesc.get = new Proxy(native.get, {\n\t\t\t\tapply() {\n\t\t\t\t\treturn client.url[prop];\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tif (native.set) {\n\t\t\tdesc.set = new Proxy(native.set, {\n\t\t\t\tapply(target, that, args) {\n\t\t\t\t\tif (prop === \"href\") {\n\t\t\t\t\t\t// special case\n\t\t\t\t\t\tclient.url = args[0];\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (prop === \"hash\") {\n\t\t\t\t\t\tself.location.hash = args[0];\n\t\t\t\t\t\tconst ev = new UrlChangeEvent(client.url.href);\n\t\t\t\t\t\tif (!client.isSubframe) client.frame?.dispatchEvent(ev);\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst url = new URL(client.url.href);\n\t\t\t\t\turl[prop] = args[0];\n\t\t\t\t\tclient.url = url;\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tObject.defineProperty(fakeLocation, prop, desc);\n\t}\n\n\t// functions\n\tfakeLocation.toString = new Proxy(self.location.toString, {\n\t\tapply() {\n\t\t\treturn client.url.href;\n\t\t},\n\t});\n\n\tif (self.location.valueOf)\n\t\tfakeLocation.valueOf = new Proxy(self.location.valueOf, {\n\t\t\tapply() {\n\t\t\t\treturn client.url.href;\n\t\t\t},\n\t\t});\n\tif (self.location.assign)\n\t\tfakeLocation.assign = new Proxy(self.location.assign, {\n\t\t\tapply(target, that, args) {\n\t\t\t\targs[0] = client.rewriteUrl(args[0]);\n\t\t\t\tReflect.apply(target, self.location, args);\n\n\t\t\t\tconst urlchangeev = new UrlChangeEvent(client.url.href);\n\t\t\t\tif (!client.isSubframe) client.frame?.dispatchEvent(urlchangeev);\n\t\t\t},\n\t\t});\n\tif (self.location.reload)\n\t\tfakeLocation.reload = new Proxy(self.location.reload, {\n\t\t\tapply(target, that, args) {\n\t\t\t\tReflect.apply(target, self.location, args);\n\t\t\t},\n\t\t});\n\tif (self.location.replace)\n\t\tfakeLocation.replace = new Proxy(self.location.replace, {\n\t\t\tapply(target, that, args) {\n\t\t\t\targs[0] = client.rewriteUrl(args[0]);\n\t\t\t\tReflect.apply(target, self.location, args);\n\n\t\t\t\tconst urlchangeev = new UrlChangeEvent(client.url.href);\n\t\t\t\tif (!client.isSubframe) client.frame?.dispatchEvent(urlchangeev);\n\t\t\t},\n\t\t});\n\n\treturn fakeLocation;\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"console.clear\", {\n\t\tapply(ctx) {\n\t\t\t// fuck you\n\t\t\tctx.return(undefined);\n\t\t},\n\t});\n\n\tconst log = console.log;\n\tclient.Trap(\"console.log\", {\n\t\tset(_ctx, _v) {\n\t\t\t// is there a legitimate reason to let sites do this?\n\t\t},\n\t\tget(_ctx) {\n\t\t\treturn log;\n\t\t},\n\t});\n}\n","import { rewriteBlob, unrewriteBlob } from \"@rewriters/url\";\nimport { ScramjetClient } from \"@client/index\";\nexport default function (client: ScramjetClient) {\n\t// hide the origin from object urls from the page\n\tclient.Proxy(\"URL.createObjectURL\", {\n\t\tapply(ctx) {\n\t\t\tconst url: string = ctx.call();\n\t\t\tif (url.startsWith(\"blob:\")) {\n\t\t\t\tctx.return(rewriteBlob(url, client.context, client.meta));\n\t\t\t} else {\n\t\t\t\tctx.return(url);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"URL.revokeObjectURL\", {\n\t\tapply(ctx) {\n\t\t\tsetTimeout(() => {\n\t\t\t\t// scramjet rewrites blob urls to pass through the service worker first\n\t\t\t\t// this is neccesary if rewrites need to be applied to the blob\n\t\t\t\t// the issue is that if you call revokeObjectURL immediately after using the blob\n\t\t\t\t// the service worker will not have had time to download the blob\n\t\t\t\t// for some reason this is not an issue natively\n\t\t\t\t// simple delay is enough\n\t\t\t\t// TODO: find a way to make this not necessary\n\t\t\t\tctx.args[0] = unrewriteBlob(ctx.args[0], client.context, client.meta);\n\t\t\t\tctx.call();\n\t\t\t}, 1000);\n\t\t\tctx.return(undefined);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"CacheStorage.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Proxy(\"CacheStorage.prototype.has\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Proxy(\"CacheStorage.prototype.match\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"CacheStorage.prototype.delete\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.add\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.addAll\", {\n\t\tapply(ctx) {\n\t\t\tfor (let i = 0; i < ctx.args[0].length; i++) {\n\t\t\t\tif (\n\t\t\t\t\ttypeof ctx.args[0][i] === \"string\" ||\n\t\t\t\t\tctx.args[0][i] instanceof URL\n\t\t\t\t) {\n\t\t\t\t\tctx.args[0][i] = client.rewriteUrl(ctx.args[0][i]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.put\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.match\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.matchAll\", {\n\t\tapply(ctx) {\n\t\t\tif (\n\t\t\t\t(ctx.args[0] && typeof ctx.args[0] === \"string\") ||\n\t\t\t\t(ctx.args[0] && ctx.args[0] instanceof URL)\n\t\t\t) {\n\t\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.keys\", {\n\t\tapply(ctx) {\n\t\t\tif (\n\t\t\t\t(ctx.args[0] && typeof ctx.args[0] === \"string\") ||\n\t\t\t\t(ctx.args[0] && ctx.args[0] instanceof URL)\n\t\t\t) {\n\t\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.delete\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t\t}\n\t\t},\n\t});\n}\n","// delete all chrome specific apis, or apis that are not supported by any browser other than chrome\n// these are not worth emulating and typically cause issues\n\nimport { iswindow } from \"@client/entry\";\nimport { ScramjetClient } from \"@client/index\";\n\n// type self as any here, most of these are not defined in the types\nexport default function (client: ScramjetClient, self: any) {\n\tconst del = (name: string) => {\n\t\tconst split = name.split(\".\");\n\t\tconst prop = split.pop();\n\t\tconst target = split.reduce((a, b) => a?.[b], self);\n\t\tif (!target) return;\n\t\tif (prop && prop in target) {\n\t\t\tdelete target[prop];\n\t\t} else {\n\t\t}\n\t};\n\n\t// obviously\n\t// del(\"chrome\");\n\n\t// ShapeDetector https://developer.chrome.com/docs/capabilities/shape-detection\n\tdel(\"BarcodeDetector\");\n\tdel(\"FaceDetector\");\n\tdel(\"TextDetector\");\n\n\t// background synchronization api\n\tif (iswindow) {\n\t\tdel(\"ServiceWorkerRegistration.prototype.sync\");\n\t}\n\n\t// trustedtypes\n\tdel(\"TrustedHTML\");\n\tdel(\"TrustedScript\");\n\tdel(\"TrustedScriptURL\");\n\tdel(\"TrustedTypePolicy\");\n\tdel(\"TrustedTypePolicyFactory\");\n\tself.__defineGetter__(\"trustedTypes\", () => undefined);\n\n\t// whatever this is\n\tdel(\"Navigator.prototype.joinAdInterestGroup\");\n\n\tif (!iswindow) return;\n\t// DOM specific ones below here\n\n\tReflect.deleteProperty(Navigator.prototype, \"serviceWorker\");\n\tdel(\"MediaDevices.prototype.setCaptureHandleConfig\");\n\n\t// web bluetooth api\n\tdel(\"Navigator.prototype.bluetooth\");\n\tdel(\"Bluetooth\");\n\tdel(\"BluetoothDevice\");\n\tdel(\"BluetoothRemoteGATTServer\");\n\tdel(\"BluetoothRemoteGATTCharacteristic\");\n\tdel(\"BluetoothRemoteGATTDescriptor\");\n\tdel(\"BluetoothUUID\");\n\n\t// contact picker api\n\tdel(\"Navigator.prototype.contacts\");\n\tdel(\"ContactAddress\");\n\tdel(\"ContactManager\");\n\n\t// Idle Detection API\n\tdel(\"IdleDetector\");\n\n\t// Presentation API\n\tdel(\"Navigator.prototype.presentation\");\n\tdel(\"Presentation\");\n\tdel(\"PresentationConnection\");\n\tdel(\"PresentationReceiver\");\n\tdel(\"PresentationRequest\");\n\tdel(\"PresentationAvailability\");\n\tdel(\"PresentationConnectionAvailableEvent\");\n\tdel(\"PresentationConnectionCloseEvent\");\n\tdel(\"PresentationConnectionList\");\n\n\t// Window Controls Overlay API\n\tdel(\"WindowControlsOverlay\");\n\tdel(\"WindowControlsOverlayGeometryChangeEvent\");\n\tdel(\"Navigator.prototype.windowControlsOverlay\");\n\n\t// WebHID API\n\tdel(\"Navigator.prototype.hid\");\n\tdel(\"HID\");\n\tdel(\"HIDDevice\");\n\tdel(\"HIDConnectionEvent\");\n\tdel(\"HIDInputReportEvent\");\n\n\t// Navigation API (not chrome only but it's really annoying to implement)\n\tdel(\"navigation\");\n\tdel(\"NavigateEvent\");\n\tdel(\"NavigationActivation\");\n\tdel(\"NavigationCurrentEntryChangeEvent\");\n\tdel(\"NavigationDestination\");\n\tdel(\"NavigationHistoryEntry\");\n\tdel(\"NavigationTransition\");\n}\n","import { flagEnabled } from \"@/shared\";\nimport { ScramjetClient } from \"@client/index\";\n\nexport const enabled = (client: ScramjetClient) =>\n\tclient.flagEnabled(\"captureErrors\");\nexport function argdbg(arg, recurse = []) {\n\tswitch (typeof arg) {\n\t\tcase \"string\":\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif (\n\t\t\t\targ &&\n\t\t\t\targ[Symbol.iterator] &&\n\t\t\t\ttypeof arg[Symbol.iterator] === \"function\"\n\t\t\t)\n\t\t\t\tfor (const prop in arg) {\n\t\t\t\t\t// make sure it's not a getter\n\t\t\t\t\tconst desc = Object.getOwnPropertyDescriptor(arg, prop);\n\t\t\t\t\tif (desc && desc.get) continue;\n\n\t\t\t\t\tconst ar = arg[prop];\n\t\t\t\t\tif (recurse.includes(ar)) continue;\n\t\t\t\t\trecurse.push(ar);\n\t\t\t\t\targdbg(ar, recurse);\n\t\t\t\t}\n\t\t\tbreak;\n\t}\n}\n\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\tconst warn = console.warn;\n\tself.$scramerr = function scramerr(e) {\n\t\twarn(\"CAUGHT ERROR\", e);\n\t};\n\n\tself.$scramdbg = function scramdbg(args, t) {\n\t\tif (args && typeof args === \"object\" && args.length > 0) argdbg(args);\n\t\targdbg(t);\n\n\t\treturn t;\n\t};\n\n\tclient.Proxy(\"Promise.prototype.catch\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\n\t\t\t\tctx.args[0] = new Proxy(ctx.args[0], {\n\t\t\t\t\tapply(target, that, args) {\n\t\t\t\t\t\t// console.warn(\"CAUGHT PROMISE REJECTION\", args);\n\t\t\t\t\t\tReflect.apply(target, that, args);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t},\n\t});\n}\n","import { unrewriteUrl } from \"@rewriters/url\";\nimport { ScramjetClient } from \"@client/index\";\n\nexport const enabled = (client: ScramjetClient) =>\n\tclient.flagEnabled(\"cleanErrors\");\n\nexport default function (client: ScramjetClient, _self: Self) {\n\t// v8 only. all we need to do is clean the scramjet urls from stack traces\n\tconst closure = (error, stack) => {\n\t\tlet newstack = error.stack;\n\n\t\tfor (let i = 0; i < stack.length; i++) {\n\t\t\tconst url = stack[i].getFileName();\n\n\t\t\ttry {\n\t\t\t\tif (client.config.maskedfiles.some((f) => url.endsWith(f))) {\n\t\t\t\t\t// strip stack frames including scramjet handlers from the trace\n\t\t\t\t\tconst lines = newstack.split(\"\\n\");\n\t\t\t\t\tconst line = lines.find((l) => l.includes(url));\n\t\t\t\t\tlines.splice(line, 1);\n\t\t\t\t\tnewstack = lines.join(\"\\n\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t} catch {}\n\n\t\t\ttry {\n\t\t\t\tnewstack = newstack.replaceAll(url, unrewriteUrl(url, client.context));\n\t\t\t} catch {}\n\t\t}\n\n\t\treturn newstack;\n\t};\n\tclient.Trap(\"Error.prepareStackTrace\", {\n\t\tget(_ctx) {\n\t\t\t// this is a funny js quirk. the getter is ran every time you type something in console\n\t\t\treturn closure;\n\t\t},\n\t\tset(_value) {\n\t\t\t// just ignore it if a site tries setting their own. not much we can really do\n\t\t},\n\t});\n}\n","import { rewriteJs } from \"@rewriters/js\";\nimport { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\t// used for proxying *direct eval*\n\t// eval(\"...\") -> eval($scramjet$rewrite(\"...\"))\n\tObject.defineProperty(self, client.config.globals.rewritefn, {\n\t\tvalue: function (js: any) {\n\t\t\tif (typeof js !== \"string\") return js;\n\n\t\t\tconst rewritten = rewriteJs(\n\t\t\t\tjs,\n\t\t\t\t\"(direct eval proxy)\",\n\t\t\t\tclient.context,\n\t\t\t\tclient.meta\n\t\t\t);\n\n\t\t\treturn rewritten;\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n}\n\nexport function indirectEval(this: ScramjetClient, strict: boolean, js: any) {\n\t// > If the argument of eval() is not a string, eval() returns the argument unchanged\n\tif (typeof js !== \"string\") return js;\n\n\tlet indirection: typeof eval;\n\tif (this.url.hostname === \"accounts.google.com\") {\n\t\tconsole.log(\"USING STRICT EVAL - BOTGUARD\");\n\t\tindirection = new Function(`\n\t\t\t\"use strict\";\n\t\t\treturn eval;\n\t\t`) as typeof eval;\n\t} else {\n\t\tindirection = this.global.eval;\n\t}\n\n\treturn indirection(\n\t\trewriteJs(js, \"(indirect eval proxy)\", this.context, this.meta) as string\n\t);\n}\n","import { iswindow } from \"@client/entry\";\nimport { unrewriteUrl } from \"@rewriters/url\";\nimport { SCRAMJETCLIENT } from \"@/symbols\";\nimport { ScramjetClient } from \"@client/index\";\nimport { getOwnPropertyDescriptorHandler } from \"@client/helpers\";\n\nconst realOnEvent = Symbol.for(\"scramjet original onevent function\");\n\nexport default function (client: ScramjetClient, self: Self) {\n\tconst handlers = {\n\t\tmessage: {\n\t\t\t_init() {\n\t\t\t\tif (client.init.shouldBlockMessageEvent?.(this)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tports() {\n\t\t\t\t// don't know why i have to do this?\n\t\t\t\treturn this.ports;\n\t\t\t},\n\t\t\tsource() {\n\t\t\t\tif (this.source === null) return null;\n\n\t\t\t\t// const scram: ScramjetClient = this.source[SCRAMJETCLIENT];\n\n\t\t\t\t// if (scram) return scram.globalProxy;\n\n\t\t\t\treturn this.source;\n\t\t\t},\n\t\t\torigin() {\n\t\t\t\tif (typeof this.data === \"object\" && \"$scramjet$origin\" in this.data)\n\t\t\t\t\treturn this.data.$scramjet$origin;\n\n\t\t\t\treturn client.url.origin;\n\t\t\t},\n\t\t\tdata() {\n\t\t\t\tif (typeof this.data === \"object\" && \"$scramjet$data\" in this.data)\n\t\t\t\t\treturn this.data.$scramjet$data;\n\n\t\t\t\treturn this.data;\n\t\t\t},\n\t\t},\n\t\thashchange: {\n\t\t\toldURL() {\n\t\t\t\treturn client.unrewriteUrl(this.oldURL);\n\t\t\t},\n\t\t\tnewURL() {\n\t\t\t\treturn client.unrewriteUrl(this.newURL);\n\t\t\t},\n\t\t},\n\t\tstorage: {\n\t\t\t_init() {\n\t\t\t\treturn this.key.startsWith(client.url.host + \"@\");\n\t\t\t},\n\t\t\tkey() {\n\t\t\t\treturn this.key.substring(this.key.indexOf(\"@\") + 1);\n\t\t\t},\n\t\t\turl() {\n\t\t\t\treturn client.unrewriteUrl(this.url);\n\t\t\t},\n\t\t},\n\t};\n\n\tfunction wraplistener(listener: (...args: any) => any) {\n\t\treturn new Proxy(listener, {\n\t\t\tapply(target, that, args) {\n\t\t\t\tconst realEvent: Event = args[0];\n\n\t\t\t\t// we only need to handle events dispatched from the browser\n\t\t\t\tif (realEvent.isTrusted) {\n\t\t\t\t\tconst type = realEvent.type;\n\n\t\t\t\t\tif (type in handlers) {\n\t\t\t\t\t\tconst handler = handlers[type];\n\n\t\t\t\t\t\tif (handler._init) {\n\t\t\t\t\t\t\t// if _init returns false, we skip the event, and it never dispatches to listeners\n\t\t\t\t\t\t\tif (handler._init.call(realEvent) === false) return;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\targs[0] = new Proxy(realEvent, {\n\t\t\t\t\t\t\tget(target, prop, reciever) {\n\t\t\t\t\t\t\t\tconst value = Reflect.get(target, prop);\n\t\t\t\t\t\t\t\tif (prop in handler) {\n\t\t\t\t\t\t\t\t\treturn handler[prop].call(target);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (typeof value === \"function\") {\n\t\t\t\t\t\t\t\t\treturn new Proxy(value, {\n\t\t\t\t\t\t\t\t\t\tapply(target, that, args) {\n\t\t\t\t\t\t\t\t\t\t\tif (that === reciever) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn Reflect.apply(target, realEvent, args);\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\treturn Reflect.apply(target, that, args);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!self.event) {\n\t\t\t\t\tObject.defineProperty(self, \"event\", {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn args[0];\n\t\t\t\t\t\t},\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst rv = Reflect.apply(target, that, args);\n\n\t\t\t\treturn rv;\n\t\t\t},\n\t\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t\t});\n\t}\n\n\tclient.Proxy(\"EventTarget.prototype.addEventListener\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[1] !== \"function\") return;\n\n\t\t\tconst origlistener = ctx.args[1];\n\t\t\tconst proxylistener = wraplistener(origlistener);\n\n\t\t\tctx.args[1] = proxylistener;\n\n\t\t\tlet arr = client.eventcallbacks.get(ctx.this);\n\t\t\tarr ||= [] as any;\n\t\t\tarr.push({\n\t\t\t\tevent: ctx.args[0] as string,\n\t\t\t\toriginalCallback: origlistener,\n\t\t\t\tproxiedCallback: proxylistener,\n\t\t\t});\n\t\t\tclient.eventcallbacks.set(ctx.this, arr);\n\t\t},\n\t});\n\n\tclient.Proxy(\"EventTarget.prototype.removeEventListener\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[1] !== \"function\") return;\n\n\t\t\tconst arr = client.eventcallbacks.get(ctx.this);\n\t\t\tif (!arr) return;\n\n\t\t\tconst i = arr.findIndex(\n\t\t\t\t(e) => e.event === ctx.args[0] && e.originalCallback === ctx.args[1]\n\t\t\t);\n\t\t\tif (i === -1) return;\n\n\t\t\tconst r = arr.splice(i, 1);\n\t\t\tclient.eventcallbacks.set(ctx.this, arr);\n\n\t\t\tctx.args[1] = r[0].proxiedCallback;\n\t\t},\n\t});\n\n\tconst targets = [self.self, self.MessagePort.prototype] as Array<any>;\n\tif (iswindow) targets.push(self.HTMLElement.prototype);\n\tif (self.Worker) targets.push(self.Worker.prototype);\n\n\tfor (const target of targets) {\n\t\tconst keys = Reflect.ownKeys(target);\n\n\t\tfor (const key of keys) {\n\t\t\tif (\n\t\t\t\ttypeof key === \"string\" &&\n\t\t\t\tkey.startsWith(\"on\") &&\n\t\t\t\thandlers[key.slice(2)]\n\t\t\t) {\n\t\t\t\tconst descriptor = client.natives.call(\n\t\t\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\t\t\tnull,\n\t\t\t\t\ttarget,\n\t\t\t\t\tkey\n\t\t\t\t);\n\t\t\t\tif (!descriptor.get || !descriptor.set || !descriptor.configurable)\n\t\t\t\t\tcontinue;\n\n\t\t\t\t// these are the `onmessage`, `onclick`, etc. properties\n\t\t\t\tclient.RawTrap(target, key, {\n\t\t\t\t\tget(ctx) {\n\t\t\t\t\t\tif (this[realOnEvent]) return this[realOnEvent];\n\n\t\t\t\t\t\treturn ctx.get();\n\t\t\t\t\t},\n\t\t\t\t\tset(ctx, value: any) {\n\t\t\t\t\t\tthis[realOnEvent] = value;\n\n\t\t\t\t\t\tif (typeof value !== \"function\") return ctx.set(value);\n\n\t\t\t\t\t\tctx.set(wraplistener(value));\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n","import { rewriteJs } from \"@rewriters/js\";\nimport { ScramjetClient, ProxyCtx, Proxy } from \"@client/index\";\n\nfunction rewriteFunction(ctx: ProxyCtx, client: ScramjetClient) {\n\tconst stringifiedFunction = ctx.call().toString();\n\n\tconst content = rewriteJs(\n\t\t`return ${stringifiedFunction}`,\n\t\t\"(function proxy)\",\n\t\tclient.context,\n\t\tclient.meta\n\t);\n\tctx.return(ctx.fn(content)());\n}\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tconst handler: Proxy = {\n\t\tapply(ctx: ProxyCtx) {\n\t\t\trewriteFunction(ctx, client);\n\t\t},\n\t\tconstruct(ctx) {\n\t\t\trewriteFunction(ctx, client);\n\t\t},\n\t};\n\n\tclient.Proxy(\"Function\", handler);\n\n\tconst RawFunction = client.natives.call(\n\t\t\"eval\",\n\t\tnull,\n\t\t\"(function () {})\"\n\t).constructor;\n\tconst RawAsyncFunction = client.natives.call(\n\t\t\"eval\",\n\t\tnull,\n\t\t\"(async function () {})\"\n\t).constructor;\n\tconst RawGeneratorFunction = client.natives.call(\n\t\t\"eval\",\n\t\tnull,\n\t\t\"(function* () {})\"\n\t).constructor;\n\tconst RawAsyncGeneratorFunction = client.natives.call(\n\t\t\"eval\",\n\t\tnull,\n\t\t\"(async function* () {})\"\n\t).constructor;\n\n\tclient.RawProxy(RawFunction.prototype, \"constructor\", handler);\n\tclient.RawProxy(RawAsyncFunction.prototype, \"constructor\", handler);\n\tclient.RawProxy(RawGeneratorFunction.prototype, \"constructor\", handler);\n\tclient.RawProxy(RawAsyncGeneratorFunction.prototype, \"constructor\", handler);\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tconst boundimport = client.natives.call(\n\t\t\"Function\",\n\t\tnull,\n\t\t\"url\",\n\t\t\"return import(url)\"\n\t);\n\n\tObject.defineProperty(self, client.config.globals.importfn, {\n\t\tvalue: function (base: string, url: string) {\n\t\t\tconst resolved = new URL(url, base).href;\n\n\t\t\tif (\n\t\t\t\turl.includes(\":\") ||\n\t\t\t\turl.startsWith(\"/\") ||\n\t\t\t\turl.startsWith(\".\") ||\n\t\t\t\turl.startsWith(\"..\")\n\t\t\t) {\n\t\t\t\t// this is a url\n\t\t\t\treturn boundimport(`${client.rewriteUrl(resolved)}?type=module`);\n\t\t\t} else {\n\t\t\t\t// this is a specifier handled by importmaps\n\t\t\t\treturn boundimport(url);\n\t\t\t}\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t});\n\tObject.defineProperty(self, client.config.globals.metafn, {\n\t\tvalue: function (metaobj: any, base: string) {\n\t\t\tmetaobj.url = base;\n\t\t\tmetaobj.resolve = function (url: string) {\n\t\t\t\treturn new URL(url, base).href;\n\t\t\t};\n\n\t\t\treturn metaobj;\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"IDBFactory.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Trap(\"IDBDatabase.prototype.name\", {\n\t\tget(ctx) {\n\t\t\tconst name = ctx.get() as string;\n\n\t\t\treturn name.substring(name.indexOf(\"@\") + 1);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"StorageManager.prototype.getDirectory\", {\n\t\tapply(ctx) {\n\t\t\tconst rootPromise = ctx.call() as Promise<FileSystemDirectoryHandle>;\n\t\t\tctx.return(\n\t\t\t\t(async () => {\n\t\t\t\t\tconst root = await rootPromise;\n\t\t\t\t\tconst directory = await root.getDirectoryHandle(\n\t\t\t\t\t\t`${client.url.origin.replace(/\\/|\\s|\\./g, \"-\")}`,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcreate: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\tObject.defineProperty(directory, \"name\", {\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\twritable: false,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn directory;\n\t\t\t\t})()\n\t\t\t);\n\t\t},\n\t});\n}\n","import { iswindow } from \"@client/entry\";\nimport { SCRAMJETCLIENT } from \"@/symbols\";\nimport { ScramjetClient } from \"@client/index\";\nimport { POLLUTANT } from \"./realm\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tif (iswindow)\n\t\tclient.Proxy(\"window.postMessage\", {\n\t\t\tapply(ctx) {\n\t\t\t\t// so we need to send the real origin here, since the recieving window can't possibly know.\n\t\t\t\t// except, remember that this code is being ran in a different realm than the invoker, so if we ask our `client` it may give us the wrong origin\n\t\t\t\t// if we were given any object that came from the real realm we can use that to get the real origin\n\t\t\t\t// and this works in every case EXCEPT for the fact that all three arguments can be strings which are copied instead of cloned\n\t\t\t\t// so we have to use `$setrealm` which will pollute this with an object from the real realm\n\n\t\t\t\tlet pollutant;\n\n\t\t\t\tif (typeof ctx.args[0] === \"object\" && ctx.args[0] !== null) {\n\t\t\t\t\tpollutant = ctx.args[0]; // try to use the first object we can find because it's more reliable\n\t\t\t\t} else if (typeof ctx.args[2] === \"object\" && ctx.args[2] !== null) {\n\t\t\t\t\tpollutant = ctx.args[2]; // next try to use transfer\n\t\t\t\t} else if (\n\t\t\t\t\tctx.this &&\n\t\t\t\t\tPOLLUTANT in ctx.this &&\n\t\t\t\t\ttypeof ctx.this[POLLUTANT] === \"object\" &&\n\t\t\t\t\tctx.this[POLLUTANT] !== null\n\t\t\t\t) {\n\t\t\t\t\tpollutant = ctx.this[POLLUTANT]; // lastly try to use the object from $setrealm\n\t\t\t\t} else {\n\t\t\t\t\tpollutant = {}; // give up\n\t\t\t\t}\n\n\t\t\t\t// and now we can steal Function from the caller's realm\n\t\t\t\tconst {\n\t\t\t\t\tconstructor: { constructor: Function },\n\t\t\t\t} = pollutant;\n\n\t\t\t\t// invoking stolen function will give us the caller's globalThis, remember scramjet has already proxied it!!!\n\t\t\t\tconst callerGlobalThisProxied: Self = Function(\"return globalThis\")();\n\t\t\t\tconst callerClient = callerGlobalThisProxied[SCRAMJETCLIENT];\n\n\t\t\t\t// this WOULD be enough but the source argument of MessageEvent has to return the caller's window\n\t\t\t\t// and if we just call it normally it would be coming from here, which WILL NOT BE THE CALLER'S because the accessor is from the parent\n\t\t\t\t// so with the stolen function we wrap postmessage so the source will truly be the caller's window (remember that function is scramjet's!!!)\n\t\t\t\tconst wrappedPostMessage = Function(\"...args\", \"this(...args)\");\n\n\t\t\t\t// console.log(\n\t\t\t\t// \tcallerClient,\n\t\t\t\t// \tclient,\n\t\t\t\t// \tcallerGlobalThisProxied.document,\n\t\t\t\t// \tself.document,\n\t\t\t\t// \tcallerClient === client\n\t\t\t\t// );\n\t\t\t\tctx.args[0] = {\n\t\t\t\t\t$scramjet$messagetype: \"window\",\n\t\t\t\t\t$scramjet$origin: callerClient.url.origin,\n\t\t\t\t\t$scramjet$data: ctx.args[0],\n\t\t\t\t};\n\t\t\t\t// console.error(\"?\", ctx.args);\n\t\t\t\t// eval(\"debugger\");\n\n\t\t\t\t// * origin because obviously\n\t\t\t\tif (typeof ctx.args[1] === \"string\") ctx.args[1] = \"*\";\n\t\t\t\tif (typeof ctx.args[1] === \"object\") ctx.args[1].targetOrigin = \"*\";\n\n\t\t\t\tctx.return(wrappedPostMessage.call(ctx.fn, ...ctx.args));\n\t\t\t},\n\t\t});\n\n\tconst toproxy = [\"MessagePort.prototype.postMessage\"];\n\n\tif (self.Worker) toproxy.push(\"Worker.prototype.postMessage\");\n\tif (!iswindow) toproxy.push(\"self.postMessage\"); // only do the generic version if we're in a worker\n\n\tclient.Proxy(toproxy, {\n\t\tapply(ctx) {\n\t\t\t// origin/source doesn't need to be preserved - it's null in the message event\n\n\t\t\tctx.args[0] = {\n\t\t\t\t$scramjet$messagetype: \"worker\",\n\t\t\t\t$scramjet$data: ctx.args[0],\n\t\t\t};\n\t\t},\n\t});\n\tObject.defineProperty(self, client.config.globals.wrappostmessagefn, {\n\t\tvalue: function (obj: any) {\n\t\t\treturn obj.postMessage.bind(obj);\n\t\t},\n\t\tconfigurable: false,\n\t\twritable: false,\n\t\tenumerable: false,\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport const POLLUTANT = Symbol.for(\"scramjet realm pollutant\");\n\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\t// object.$setrealm({}).postMessage(...)\n\t// the empty object is the \"pollutant\" which can reconstruct the real realm\n\t// i explain more in postmessage.ts\n\tObject.defineProperty(self.Object.prototype, \"$scramjet$setrealmfn\", {\n\t\tvalue(pollution: object) {\n\t\t\t// this is bad!! sites could detect this\n\t\t\tObject.defineProperty(this, POLLUTANT, {\n\t\t\t\tvalue: pollution,\n\t\t\t\twritable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t});\n\n\t\t\treturn this;\n\t\t},\n\t\twritable: true,\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"EventSource\", {\n\t\tconstruct(ctx) {\n\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t},\n\t});\n\n\tclient.Trap(\"EventSource.prototype.url\", {\n\t\tget(ctx) {\n\t\t\tclient.unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n}\n","import { rewriteUrl, unrewriteUrl } from \"@rewriters/url\";\nimport { ScramjetClient } from \"@client/index\";\nimport { unrewriteLinkHeader } from \"./xmlhttprequest\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"fetch\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Request\", {\n\t\tconstruct(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Trap(\"Response.prototype.url\", {\n\t\tget(ctx) {\n\t\t\treturn client.unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n\n\tclient.Trap(\"Request.prototype.url\", {\n\t\tget(ctx) {\n\t\t\treturn client.unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n\n\t// TODO: this needs to be only for response objects created from a fetch\n\tclient.Trap(\"Response.prototype.headers\", {\n\t\tget(ctx) {\n\t\t\tconst headers = ctx.get() as Headers;\n\t\t\tconst newHeaders = new Headers();\n\n\t\t\tfor (const [key, value] of headers.entries()) {\n\t\t\t\tif (key.toLowerCase() === \"link\") {\n\t\t\t\t\tnewHeaders.append(key, unrewriteLinkHeader(value, client.context));\n\t\t\t\t} else {\n\t\t\t\t\tnewHeaders.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn newHeaders;\n\t\t},\n\t});\n}\n","import { type BareWebSocket } from \"@mercuryworkshop/proxy-transports\";\nimport { ScramjetClient } from \"@client/index\";\n\ntype FakeWebSocketState = {\n\textensions: string;\n\tprotocol: string;\n\turl: string;\n\tbinaryType: string;\n\tbarews: BareWebSocket;\n\n\tonclose?: (ev: CloseEvent) => any;\n\tonerror?: (ev: Event) => any;\n\tonmessage?: (ev: MessageEvent) => any;\n\tonopen?: (ev: Event) => any;\n};\ntype FakeWebSocketStreamState = {\n\textensions: string;\n\tprotocol: string;\n\turl: string;\n\tbarews: BareWebSocket;\n\n\topened: any;\n\tclosed: any;\n\treadable: ReadableStream;\n\twritable: WritableStream;\n};\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\tconst socketmap: WeakMap<WebSocket, FakeWebSocketState> = new WeakMap();\n\tconst socketstreammap: WeakMap<object, FakeWebSocketStreamState> =\n\t\tnew WeakMap();\n\tclient.Proxy(\"WebSocket\", {\n\t\tconstruct(ctx) {\n\t\t\tif (client.init.shouldPassthroughWebsocket?.(ctx.args[0])) {\n\t\t\t\treturn ctx.return(client.natives.construct(\"WebSocket\", ...ctx.args));\n\t\t\t}\n\t\t\tconst fakeWebSocket = new EventTarget() as WebSocket;\n\t\t\tObject.setPrototypeOf(fakeWebSocket, ctx.fn.prototype);\n\t\t\tfakeWebSocket.constructor = ctx.fn;\n\n\t\t\tconst trustEvent = (ev: Event) =>\n\t\t\t\tnew Proxy(ev, {\n\t\t\t\t\tget(target, prop) {\n\t\t\t\t\t\tif (prop === \"isTrusted\") return true;\n\n\t\t\t\t\t\treturn Reflect.get(target, prop);\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\tconst barews = client.bare.createWebSocket(ctx.args[0], ctx.args[1], [\n\t\t\t\t[\"User-Agent\", self.navigator.userAgent],\n\t\t\t\t[\"Origin\", client.url.origin],\n\t\t\t]);\n\n\t\t\tconst state: FakeWebSocketState = {\n\t\t\t\textensions: \"\",\n\t\t\t\tprotocol: \"\",\n\t\t\t\turl: ctx.args[0],\n\t\t\t\tbinaryType: \"blob\",\n\t\t\t\tbarews,\n\n\t\t\t\tonclose: null,\n\t\t\t\tonerror: null,\n\t\t\t\tonmessage: null,\n\t\t\t\tonopen: null,\n\t\t\t};\n\n\t\t\tfunction fakeEventSend(fakeev: Event) {\n\t\t\t\tstate[\"on\" + fakeev.type]?.(trustEvent(fakeev));\n\t\t\t\tfakeWebSocket.dispatchEvent(fakeev);\n\t\t\t}\n\n\t\t\tbarews.addEventListener(\"open\", () => {\n\t\t\t\tfakeEventSend(new Event(\"open\"));\n\t\t\t});\n\t\t\tbarews.addEventListener(\"close\", (ev) => {\n\t\t\t\tfakeEventSend(new CloseEvent(\"close\", ev));\n\t\t\t});\n\t\t\tbarews.addEventListener(\"message\", async (ev) => {\n\t\t\t\tlet payload = ev.data;\n\t\t\t\tif (typeof payload === \"string\") {\n\t\t\t\t\t// DO NOTHING\n\t\t\t\t} else if (\"byteLength\" in payload) {\n\t\t\t\t\t// arraybuffer, convert to blob if needed or set the proper prototype\n\t\t\t\t\tif (state.binaryType === \"blob\") {\n\t\t\t\t\t\tpayload = new Blob([payload]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tObject.setPrototypeOf(payload, ArrayBuffer.prototype);\n\t\t\t\t\t}\n\t\t\t\t} else if (\"arrayBuffer\" in payload) {\n\t\t\t\t\t// blob, convert to arraybuffer if neccesary.\n\t\t\t\t\tif (state.binaryType === \"arraybuffer\") {\n\t\t\t\t\t\tpayload = await payload.arrayBuffer();\n\t\t\t\t\t\tObject.setPrototypeOf(payload, ArrayBuffer.prototype);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst fakeev = new MessageEvent(\"message\", {\n\t\t\t\t\tdata: payload,\n\t\t\t\t\torigin: ev.origin,\n\t\t\t\t\tlastEventId: ev.lastEventId,\n\t\t\t\t\tsource: ev.source,\n\t\t\t\t\tports: ev.ports,\n\t\t\t\t});\n\n\t\t\t\tfakeEventSend(fakeev);\n\t\t\t});\n\t\t\tbarews.addEventListener(\"error\", () => {\n\t\t\t\tfakeEventSend(new Event(\"error\"));\n\t\t\t});\n\n\t\t\tsocketmap.set(fakeWebSocket, state);\n\t\t\tctx.return(fakeWebSocket);\n\t\t},\n\t});\n\tclient.Trap(\"WebSocket.prototype.binaryType\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.binaryType;\n\t\t},\n\t\tset(ctx, v: string) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.set(v);\n\t\t\tif (v === \"blob\" || v === \"arraybuffer\") ws.binaryType = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.bufferedAmount\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn 0;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.extensions\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.extensions;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onclose\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.onclose;\n\t\t},\n\t\tset(ctx, v: (ev: CloseEvent) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.set(v);\n\n\t\t\tws.onclose = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onerror\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.onerror;\n\t\t},\n\t\tset(ctx, v: (ev: Event) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.set(v);\n\n\t\t\tws.onerror = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onmessage\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.onmessage;\n\t\t},\n\t\tset(ctx, v: (ev: MessageEvent) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.set(v);\n\n\t\t\tws.onmessage = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onopen\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.onopen;\n\t\t},\n\t\tset(ctx, v: (ev: Event) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.set(v);\n\n\t\t\tws.onopen = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.url\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.url;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.protocol\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.protocol;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.readyState\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.barews.readyState;\n\t\t},\n\t});\n\n\tclient.Proxy(\"WebSocket.prototype.send\", {\n\t\tapply(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return;\n\n\t\t\tctx.return(ws.barews.send(ctx.args[0]));\n\t\t},\n\t});\n\n\tclient.Proxy(\"WebSocket.prototype.close\", {\n\t\tapply(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return;\n\n\t\t\tif (ctx.args[0] === undefined) ctx.args[0] = 1000;\n\t\t\tif (ctx.args[1] === undefined) ctx.args[1] = \"\";\n\t\t\tctx.return(ws.barews.close(ctx.args[0], ctx.args[1]));\n\t\t},\n\t});\n\n\tclient.Proxy(\"WebSocketStream\", {\n\t\tconstruct(ctx) {\n\t\t\tconst fakeWebSocket = {};\n\t\t\tObject.setPrototypeOf(fakeWebSocket, ctx.fn.prototype);\n\t\t\tfakeWebSocket.constructor = ctx.fn;\n\n\t\t\tconst barews = client.bare.createWebSocket(\n\t\t\t\tctx.args[0],\n\t\t\t\tctx.args[1],\n\t\t\t\tnull,\n\t\t\t\t{\n\t\t\t\t\t\"User-Agent\": self.navigator.userAgent,\n\t\t\t\t\tOrigin: client.url.origin,\n\t\t\t\t}\n\t\t\t);\n\t\t\tctx.args[1]?.signal.addEventListener(\"abort\", () => {\n\t\t\t\tbarews.close(1000, \"\");\n\t\t\t});\n\t\t\tlet openResolver, closeResolver;\n\t\t\tlet openRejector;\n\t\t\tconst state: FakeWebSocketStreamState = {\n\t\t\t\textensions: \"\",\n\t\t\t\tprotocol: \"\",\n\t\t\t\turl: ctx.args[0],\n\t\t\t\tbarews,\n\n\t\t\t\topened: new Promise((resolve, reject) => {\n\t\t\t\t\topenResolver = resolve;\n\t\t\t\t\topenRejector = reject;\n\t\t\t\t}),\n\t\t\t\tclosed: new Promise((resolve) => {\n\t\t\t\t\tcloseResolver = resolve;\n\t\t\t\t}),\n\t\t\t\treadable: new ReadableStream({\n\t\t\t\t\tstart(controller) {\n\t\t\t\t\t\tbarews.addEventListener(\"message\", async (ev: MessageEvent) => {\n\t\t\t\t\t\t\tlet payload = ev.data;\n\t\t\t\t\t\t\tif (typeof payload === \"string\") {\n\t\t\t\t\t\t\t\t// DO NOTHING\n\t\t\t\t\t\t\t} else if (\"byteLength\" in payload) {\n\t\t\t\t\t\t\t\t// arraybuffer, set the realms prototype so its recognized\n\t\t\t\t\t\t\t\tObject.setPrototypeOf(payload, ArrayBuffer.prototype);\n\t\t\t\t\t\t\t} else if (\"arrayBuffer\" in payload) {\n\t\t\t\t\t\t\t\t// blob, convert to arraybuffer\n\t\t\t\t\t\t\t\tpayload = await payload.arrayBuffer();\n\t\t\t\t\t\t\t\tObject.setPrototypeOf(payload, ArrayBuffer.prototype);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcontroller.enqueue(payload);\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\twritable: new WritableStream({\n\t\t\t\t\twrite(chunk) {\n\t\t\t\t\t\tbarews.send(chunk);\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t};\n\t\t\tbarews.addEventListener(\"open\", () => {\n\t\t\t\topenResolver({\n\t\t\t\t\treadable: state.readable,\n\t\t\t\t\twritable: state.writable,\n\t\t\t\t\textensions: state.extensions,\n\t\t\t\t\tprotocol: state.protocol,\n\t\t\t\t});\n\t\t\t});\n\t\t\tbarews.addEventListener(\"close\", (ev: CloseEvent) => {\n\t\t\t\tcloseResolver({ code: ev.code, reason: ev.reason });\n\t\t\t});\n\n\t\t\tbarews.addEventListener(\"error\", (ev: Event) => {\n\t\t\t\topenRejector(ev);\n\t\t\t});\n\n\t\t\tsocketstreammap.set(fakeWebSocket, state);\n\t\t\tctx.return(fakeWebSocket);\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocketStream.prototype.closed\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketstreammap.get(ctx.this);\n\n\t\t\treturn ws.closed;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocketStream.prototype.opened\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketstreammap.get(ctx.this);\n\n\t\t\treturn ws.opened;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocketStream.prototype.url\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketstreammap.get(ctx.this);\n\n\t\t\treturn ws.url;\n\t\t},\n\t});\n\n\tclient.Proxy(\"WebSocketStream.prototype.close\", {\n\t\tapply(ctx) {\n\t\t\tconst ws = socketstreammap.get(ctx.this);\n\t\t\tif (ctx.args[0]) {\n\t\t\t\tif (ctx.args[0].closeCode === undefined) ctx.args[0].closeCode = 1000;\n\t\t\t\tif (ctx.args[0].reason === undefined) ctx.args[0].reason = \"\";\n\n\t\t\t\treturn ctx.return(\n\t\t\t\t\tws.barews.close(ctx.args[0].closeCode, ctx.args[0].reason)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn ctx.return(ws.barews.close(1000, \"\"));\n\t\t},\n\t});\n}\n","import { flagEnabled, ScramjetContext } from \"@/shared\";\nimport { rewriteUrl, unrewriteUrl, URLMeta } from \"@rewriters/url\";\nimport { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tlet worker;\n\t// if (self.Worker && flagEnabled(\"syncxhr\", client.url)) {\n\t// \tworker = client.natives.construct(\"Worker\", config.files.sync);\n\t// }\n\tconst ARGS = Symbol(\"xhr original args\");\n\tconst HEADERS = Symbol(\"xhr headers\");\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[1]) ctx.args[1] = client.rewriteUrl(ctx.args[1]);\n\t\t\tif (ctx.args[2] === undefined) ctx.args[2] = true;\n\t\t\tctx.this[ARGS] = ctx.args;\n\t\t},\n\t});\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.setRequestHeader\", {\n\t\tapply(ctx) {\n\t\t\tconst headers = ctx.this[HEADERS] || (ctx.this[HEADERS] = {});\n\t\t\theaders[ctx.args[0]] = ctx.args[1];\n\t\t},\n\t});\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.send\", {\n\t\tapply(ctx) {\n\t\t\tconst args = ctx.this[ARGS];\n\t\t\tif (!args || args[2]) return;\n\n\t\t\tif (!client.flagEnabled(\"syncxhr\")) {\n\t\t\t\tconsole.warn(\"ignoring request - sync xhr disabled in flags\");\n\n\t\t\t\treturn ctx.return(undefined);\n\t\t\t}\n\n\t\t\t// it's a sync request\n\t\t\t// sync xhr to service worker is not supported\n\t\t\t// there's a nice way of polyfilling this though, we can spin on an atomic using sharedarraybuffer. this will maintain the sync behavior\n\n\t\t\t//@ts-ignore\n\t\t\tconst sab = new SharedArrayBuffer(1024, { maxByteLength: 2147483647 });\n\t\t\tconst view = new DataView(sab);\n\n\t\t\tclient.natives.call(\"Worker.prototype.postMessage\", worker, {\n\t\t\t\tsab,\n\t\t\t\targs,\n\t\t\t\theaders: ctx.this[HEADERS],\n\t\t\t\tbody: ctx.args[0],\n\t\t\t});\n\n\t\t\tconst now = performance.now();\n\t\t\twhile (view.getUint8(0) === 0) {\n\t\t\t\tif (performance.now() - now > 1000) {\n\t\t\t\t\tthrow new Error(\"xhr timeout\");\n\t\t\t\t}\n\t\t\t\t/* spin */\n\t\t\t}\n\n\t\t\tconst status = view.getUint16(1);\n\t\t\tconst headersLength = view.getUint32(3);\n\n\t\t\tconst headersab = new Uint8Array(headersLength);\n\t\t\theadersab.set(new Uint8Array(sab.slice(7, 7 + headersLength)));\n\t\t\tconst headers = new TextDecoder().decode(headersab);\n\n\t\t\tconst bodyLength = view.getUint32(7 + headersLength);\n\t\t\tconst bodyab = new Uint8Array(bodyLength);\n\t\t\tbodyab.set(\n\t\t\t\tnew Uint8Array(\n\t\t\t\t\tsab.slice(11 + headersLength, 11 + headersLength + bodyLength)\n\t\t\t\t)\n\t\t\t);\n\t\t\tconst body = new TextDecoder().decode(bodyab);\n\n\t\t\t// these should be using proxies to not leak scram strings but who cares\n\t\t\tclient.RawTrap(ctx.this, \"status\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn status;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"responseText\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn body;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"response\", {\n\t\t\t\tget() {\n\t\t\t\t\tif (ctx.this.responseType === \"arraybuffer\") return bodyab.buffer;\n\n\t\t\t\t\treturn body;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"responseXML\", {\n\t\t\t\tget() {\n\t\t\t\t\tconst parser = new DOMParser();\n\n\t\t\t\t\treturn parser.parseFromString(body, \"text/xml\");\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"getAllResponseHeaders\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn () => headers;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"getResponseHeader\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn (header: string) => {\n\t\t\t\t\t\tconst re = new RegExp(`^${header}: (.*)$`, \"m\");\n\t\t\t\t\t\tconst match = re.exec(headers);\n\n\t\t\t\t\t\treturn match ? match[1] : null;\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tctx.return(undefined);\n\t\t},\n\t});\n\n\tclient.Trap(\"XMLHttpRequest.prototype.responseURL\", {\n\t\tget(ctx) {\n\t\t\treturn client.unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.getAllResponseHeaders\", {\n\t\tapply(ctx) {\n\t\t\tconst headerstring = ctx.fn.call(ctx.this) as string;\n\t\t\tif (!headerstring) return headerstring;\n\t\t\tconst headers = headerstring.split(\"\\r\\n\");\n\n\t\t\tfor (const [i, header] of headers.entries()) {\n\t\t\t\tif (header.toLowerCase().startsWith(\"link:\")) {\n\t\t\t\t\theaders[i] = `Link: ${unrewriteLinkHeader(\n\t\t\t\t\t\theader.slice(5).trim(),\n\t\t\t\t\t\tclient.context\n\t\t\t\t\t)}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tctx.return(headers.join(\"\\r\\n\"));\n\t\t},\n\t});\n\tclient.Proxy(\"XMLHttpRequest.prototype.getResponseHeader\", {\n\t\tapply(ctx) {\n\t\t\tconst header = ctx.fn.call(ctx.this, ctx.args[0]) as string | null;\n\t\t\tif (!header) return header;\n\t\t\tif (ctx.args[0].toLowerCase() === \"link\") {\n\t\t\t\tctx.return(unrewriteLinkHeader(header, client.context));\n\t\t\t}\n\t\t},\n\t});\n}\n\nexport function unrewriteLinkHeader(header: string, context: ScramjetContext) {\n\treturn header.replace(\n\t\t/<([^>]+)>/gi,\n\t\t(match) => `${unrewriteUrl(match, context)}`\n\t);\n}\n","import { rewriteJs } from \"@rewriters/js\";\nimport { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tclient.Proxy([\"setTimeout\", \"setInterval\"], {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args.length > 0 && typeof ctx.args[0] === \"string\") {\n\t\t\t\tctx.args[0] = rewriteJs(\n\t\t\t\t\tctx.args[0],\n\t\t\t\t\t\"(setTimeout string eval)\",\n\t\t\t\t\tclient.context,\n\t\t\t\t\tclient.meta\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t});\n}\n","import { SCRAMJETCLIENT, SCRAMJETCLIENTNAME } from \"@/symbols\";\nimport { ProxyCtx, ScramjetClient } from \"@client/index\";\n\nenum RewriteType {\n\tInsert = 0,\n\tReplace = 1,\n}\n\ntype Rewrite = {\n\tstart: number;\n} & (\n\t| {\n\t\t\ttype: RewriteType.Insert;\n\t\t\tsize: number;\n\t }\n\t| {\n\t\t\ttype: RewriteType.Replace;\n\t\t\tend: number;\n\t\t\tstr: string;\n\t }\n);\n\nexport type SourceMaps = Record<string, Rewrite[]>;\n\nfunction getEnd(rewrite: Rewrite): number {\n\tif (rewrite.type === RewriteType.Insert) {\n\t\treturn rewrite.start + rewrite.size;\n\t} else if (rewrite.type === RewriteType.Replace) {\n\t\treturn rewrite.end;\n\t}\n\tthrow \"unreachable\";\n}\n\nfunction registerRewrites(\n\tclient: ScramjetClient,\n\tbuf: Array<number>,\n\ttag: string\n) {\n\tconst sourcemap = Uint8Array.from(buf);\n\tconst view = new DataView(sourcemap.buffer);\n\tconst decoder = new TextDecoder(\"utf-8\");\n\n\tconst rewrites: Rewrite[] = [];\n\n\tconst rewritelen = view.getUint32(0, true);\n\tlet cursor = 4;\n\tfor (let i = 0; i < rewritelen; i++) {\n\t\tconst start = view.getUint32(cursor, true);\n\t\tcursor += 4;\n\t\tconst size = view.getUint32(cursor, true);\n\t\tcursor += 4;\n\n\t\tconst type = view.getUint8(cursor) as RewriteType;\n\t\tcursor += 1;\n\n\t\tif (type == RewriteType.Insert) {\n\t\t\trewrites.push({ type, start, size });\n\t\t} else if (type == RewriteType.Replace) {\n\t\t\tconst end = start + size;\n\n\t\t\tconst oldLen = view.getUint32(cursor, true);\n\t\t\tcursor += 4;\n\n\t\t\tconst oldStr = decoder.decode(\n\t\t\t\tsourcemap.subarray(cursor, cursor + oldLen)\n\t\t\t);\n\n\t\t\trewrites.push({ type, start, end, str: oldStr });\n\t\t}\n\t}\n\n\tclient.box.sourcemaps[tag] = rewrites;\n}\n\nconst SCRAMTAG = \"/*scramtag \";\n\nfunction extractTag(fn: string): [string, number, number] | null {\n\t// every function rewritten will have a scramtag comment\n\t// it will look like this:\n\t// function name()[possible whitespace]/*scramtag [index] [tag]*/[possible whitespace]{ ... }\n\n\tlet start = fn.indexOf(SCRAMTAG);\n\t// no scramtag, probably native function or stolen from scramjet\n\tif (start === -1) return null;\n\n\tconst end = fn.indexOf(\"*/\", start);\n\tif (end === -1) {\n\t\tconsole.log(fn, start, end);\n\t\tthrow new Error(\"unreachable\");\n\t}\n\n\tlet tag = fn.substring(start + 2, end).split(\" \");\n\n\tif (\n\t\ttag.length !== 3 ||\n\t\ttag[0] !== \"scramtag\" ||\n\t\t!Number.isSafeInteger(+tag[1])\n\t) {\n\t\tconsole.log(fn, start, end, tag);\n\t\tthrow new Error(\"invalid tag\");\n\t}\n\n\treturn [tag[2], start, +tag[1]];\n}\n\nfunction doUnrewrite(client: ScramjetClient, ctx: ProxyCtx) {\n\tconst stringified: string = ctx.fn.call(ctx.this);\n\n\tconst extracted = extractTag(stringified);\n\tif (!extracted) return ctx.return(stringified);\n\tconst [tag, tagOffset, tagStart] = extracted;\n\n\tconst fnStart = tagStart - tagOffset;\n\tconst fnEnd = fnStart + stringified.length;\n\tconst rewrites = client.box.sourcemaps[tag];\n\n\tif (!rewrites) {\n\t\tconsole.warn(\"failed to get rewrites for tag\", tag);\n\n\t\treturn ctx.return(stringified);\n\t}\n\n\tlet i = 0;\n\t// skip all rewrites in the file before the fn\n\twhile (i < rewrites.length) {\n\t\tif (rewrites[i].start < fnStart) i++;\n\t\telse break;\n\t}\n\n\tlet end = i;\n\twhile (end < rewrites.length) {\n\t\tif (getEnd(rewrites[end]) < fnEnd) end++;\n\t\telse break;\n\t}\n\tconst fnrewrites = rewrites.slice(i, end);\n\n\tlet newString = \"\";\n\tlet lastpos = 0;\n\n\tfor (const rewrite of fnrewrites) {\n\t\tnewString += stringified.slice(lastpos, rewrite.start - fnStart);\n\n\t\tif (rewrite.type === RewriteType.Insert) {\n\t\t\tlastpos = rewrite.start + rewrite.size - fnStart;\n\t\t} else if (rewrite.type === RewriteType.Replace) {\n\t\t\tnewString += rewrite.str;\n\t\t\tlastpos = rewrite.end - fnStart;\n\t\t} else {\n\t\t\tthrow \"unreachable\";\n\t\t}\n\t}\n\n\tnewString += stringified.slice(lastpos);\n\tnewString = newString.replace(`${SCRAMTAG}${tagStart} ${tag}*/`, \"\");\n\n\treturn ctx.return(newString);\n}\n\nexport const enabled = (client: ScramjetClient) =>\n\tclient.flagEnabled(\"sourcemaps\");\n\nexport default function (client: ScramjetClient, self: Self) {\n\t// every script will push a sourcemap\n\tObject.defineProperty(self, client.config.globals.pushsourcemapfn, {\n\t\tvalue: (buf: Array<number>, tag: string) => {\n\t\t\tconst before = performance.now();\n\t\t\tregisterRewrites(client, buf, tag);\n\t\t\tdbg.time(client.meta, before, `scramtag parse for ${tag}`);\n\t\t},\n\t\tenumerable: false,\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n\n\t// when we rewrite javascript it will make function.toString leak internals\n\t// this can lead to double rewrites which is bad\n\tclient.Proxy(\"Function.prototype.toString\", {\n\t\tapply(ctx) {\n\t\t\tconst before = performance.now();\n\t\t\tdoUnrewrite(client, ctx);\n\t\t\t// dbg.time(client.meta, before, `scramtag unrewrite for ${ctx.fn.name}`);\n\t\t},\n\t});\n}\n","import { rewriteUrl } from \"@rewriters/url\";\nimport { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, _self: typeof globalThis) {\n\tclient.Proxy(\"Worker\", {\n\t\tconstruct(ctx) {\n\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]) + \"?dest=worker\";\n\n\t\t\tif (ctx.args[1] && ctx.args[1].type === \"module\") {\n\t\t\t\tctx.args[0] += \"&type=module\";\n\t\t\t}\n\n\t\t\tconst worker = ctx.call();\n\t\t\t// const conn = new BareMuxConnection();\n\n\t\t\t// (async () => {\n\t\t\t// \tconst port = await conn.getInnerPort();\n\t\t\t// \tclient.natives.call(\n\t\t\t// \t\t\"Worker.prototype.postMessage\",\n\t\t\t// \t\tworker,\n\t\t\t// \t\t{\n\t\t\t// \t\t\t$scramjet$type: \"baremuxinit\",\n\t\t\t// \t\t\tport,\n\t\t\t// \t\t},\n\t\t\t// \t\t[port]\n\t\t\t// \t);\n\t\t\t// })();\n\t\t},\n\t});\n\n\t// sharedworkers can only be constructed from window\n\tclient.Proxy(\"SharedWorker\", {\n\t\tconstruct(ctx) {\n\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]) + \"?dest=sharedworker\";\n\n\t\t\tif (ctx.args[1] && typeof ctx.args[1] === \"string\")\n\t\t\t\tctx.args[1] = `${client.url.origin}@${ctx.args[1]}`;\n\n\t\t\tif (ctx.args[1] && typeof ctx.args[1] === \"object\") {\n\t\t\t\tif (ctx.args[1].type === \"module\") {\n\t\t\t\t\tctx.args[0] += \"&type=module\";\n\t\t\t\t}\n\n\t\t\t\tif (ctx.args[1].name) {\n\t\t\t\t\tctx.args[1].name = `${client.url.origin}@${ctx.args[1].name}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst worker = ctx.call();\n\t\t\t// const conn = new BareMuxConnection();\n\n\t\t\t// (async () => {\n\t\t\t// \tconst port = await conn.getInnerPort();\n\t\t\t// \tclient.natives.call(\n\t\t\t// \t\t\"MessagePort.prototype.postMessage\",\n\t\t\t// \t\tworker.port,\n\t\t\t// \t\t{\n\t\t\t// \t\t\t$scramjet$type: \"baremuxinit\",\n\t\t\t// \t\t\tport,\n\t\t\t// \t\t},\n\t\t\t// \t\t[port]\n\t\t\t// \t);\n\t\t\t// })();\n\t\t},\n\t});\n\n\tclient.Proxy(\"Worklet.prototype.addModule\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\n\t\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]) + \"?dest=worklet\";\n\t\t},\n\t});\n}\n","import { iswindow } from \"@client/entry\";\nimport { SCRAMJETCLIENT } from \"@/symbols\";\nimport { ScramjetClient } from \"@client/index\";\n// import { argdbg } from \"@client/shared/err\";\nimport { indirectEval } from \"@client/shared/eval\";\n\nexport function createWrapFn(client: ScramjetClient, self: typeof globalThis) {\n\treturn function (identifier: any, strict: boolean) {\n\t\tif (identifier === self.location) return client.locationProxy;\n\t\tif (identifier === self.eval) return indirectEval.bind(client, strict);\n\n\t\t// TODO only do this once on init. a page can't suddenly gain a parent i don't think\n\t\tif (iswindow) {\n\t\t\tif (identifier === self.parent) {\n\t\t\t\ttry {\n\t\t\t\t\tif (SCRAMJETCLIENT in self.parent) {\n\t\t\t\t\t\t// ... then we're in a subframe, and the parent frame is also in a proxy context, so we should return its proxy\n\t\t\t\t\t\treturn self.parent;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// ... then we should pretend we aren't nested and return the current window\n\t\t\t\t\t\treturn self;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// accessing self.parent can throw if it's cross-origin, in which case we should also pretend we aren't nested\n\t\t\t\t\treturn self;\n\t\t\t\t}\n\t\t\t} else if (identifier === self.top) {\n\t\t\t\t// instead of returning top, we need to return the uppermost parent that's inside a scramjet context\n\t\t\t\tlet current = self;\n\n\t\t\t\tfor (;;) {\n\t\t\t\t\tconst test = current.parent.self;\n\t\t\t\t\tif (test === current) break; // there is no parent, actual or emulated.\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// ... then `test` represents a window outside of the proxy context, and therefore `current` is the topmost window in the proxy context\n\t\t\t\t\t\tif (!(SCRAMJETCLIENT in test)) break;\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// accessing test can throw if it's cross-origin, in which case we should also break\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t// test is also insde a proxy, so we should continue up the chain\n\t\t\t\t\tcurrent = test;\n\t\t\t\t}\n\n\t\t\t\treturn current;\n\t\t\t}\n\t\t}\n\n\t\treturn identifier;\n\t};\n}\n\nexport const order = 4;\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\tObject.defineProperty(self, client.config.globals.wrapfn, {\n\t\tvalue: client.wrapfn,\n\t\twritable: false,\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t});\n\tObject.defineProperty(self, client.config.globals.wrappropertyfn, {\n\t\tvalue: function (str) {\n\t\t\tif (\n\t\t\t\tstr === \"location\" ||\n\t\t\t\tstr === \"parent\" ||\n\t\t\t\tstr === \"top\" ||\n\t\t\t\tstr === \"eval\"\n\t\t\t)\n\t\t\t\treturn client.config.globals.wrappropertybase + str;\n\n\t\t\treturn str;\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t});\n\tObject.defineProperty(self, client.config.globals.cleanrestfn, {\n\t\tvalue: function (obj) {\n\t\t\t// TODO\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t});\n\n\tObject.defineProperty(\n\t\tself.Object.prototype,\n\t\tclient.config.globals.wrappropertybase + \"location\",\n\t\t{\n\t\t\tget: function () {\n\t\t\t\t// if (this.location.constructor.toString().includes(\"Location\")) {\n\n\t\t\t\tif (this === self || this === self.document) {\n\t\t\t\t\treturn client.locationProxy;\n\t\t\t\t}\n\n\t\t\t\treturn this.location;\n\t\t\t},\n\t\t\tset(value: any) {\n\t\t\t\tif (this === self || this === self.document) {\n\t\t\t\t\tclient.url = value;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.location = value;\n\t\t\t},\n\t\t\tconfigurable: false,\n\t\t\tenumerable: false,\n\t\t}\n\t);\n\tObject.defineProperty(\n\t\tself.Object.prototype,\n\t\tclient.config.globals.wrappropertybase + \"parent\",\n\t\t{\n\t\t\tget: function () {\n\t\t\t\treturn client.wrapfn(this.parent, false);\n\t\t\t},\n\t\t\tset(value: any) {\n\t\t\t\t// i guess??\n\t\t\t\tthis.parent = value;\n\t\t\t},\n\t\t\tconfigurable: false,\n\t\t\tenumerable: false,\n\t\t}\n\t);\n\tObject.defineProperty(\n\t\tself.Object.prototype,\n\t\tclient.config.globals.wrappropertybase + \"top\",\n\t\t{\n\t\t\tget: function () {\n\t\t\t\treturn client.wrapfn(this.top, false);\n\t\t\t},\n\t\t\tset(value: any) {\n\t\t\t\tthis.top = value;\n\t\t\t},\n\t\t\tconfigurable: false,\n\t\t\tenumerable: false,\n\t\t}\n\t);\n\tObject.defineProperty(\n\t\tself.Object.prototype,\n\t\tclient.config.globals.wrappropertybase + \"eval\",\n\t\t{\n\t\t\tget: function () {\n\t\t\t\treturn client.wrapfn(this.eval, true);\n\t\t\t},\n\t\t\tset(value: any) {\n\t\t\t\tthis.eval = value;\n\t\t\t},\n\t\t\tconfigurable: false,\n\t\t\tenumerable: false,\n\t\t}\n\t);\n\n\tself.$scramitize = function (v) {\n\t\tif (v === location) debugger;\n\t\tif (iswindow) {\n\t\t\t// if (v === self.parent) debugger;\n\t\t\tif (v === self.top) debugger;\n\t\t}\n\n\t\tif (typeof v === \"string\" && v.includes(\"scramjet\")) debugger;\n\t\tif (typeof v === \"string\" && v.includes(location.origin)) debugger;\n\n\t\treturn v;\n\t};\n\n\t// location = \"...\" can't be rewritten as wrapfn(location) = ..., so instead it will actually be rewritten as\n\t// ((t)=>$scramjet$tryset(location,\"+=\",t)||location+=t)(...);\n\t// it has to be a discrete function because there's always the possibility that \"location\" is a local variable\n\t// we have to use an IIFE to avoid duplicating side-effects in the getter\n\tObject.defineProperty(self, client.config.globals.trysetfn, {\n\t\tvalue: function (lhs: any, op: string, rhs: any) {\n\t\t\t// TODO: not cross frame safe\n\t\t\tif (lhs instanceof self.Location) {\n\t\t\t\t// @ts-ignore\n\t\t\t\tclient.locationProxy.href = rhs;\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n}\n","import { ScramjetClient } from \"./client\";\nimport { SourceMaps } from \"./shared/sourcemaps\";\n\nexport class SingletonBox {\n\tclients: ScramjetClient[] = [];\n\tglobals: Map<Self, ScramjetClient> = new Map();\n\tdocuments: Map<Document, ScramjetClient> = new Map();\n\tlocations: Map<Location, ScramjetClient> = new Map();\n\n\tctors: Record<string, Function[]> = {};\n\n\tsourcemaps: SourceMaps = {};\n\n\tconstructor(public ownerclient: ScramjetClient) {}\n\n\tregisterClient(client: ScramjetClient, global: Self) {\n\t\tthis.clients.push(client);\n\t\tthis.globals.set(global, client);\n\t\tthis.documents.set(global.document, client);\n\t\tthis.locations.set(global.location, client);\n\n\t\tObject.getOwnPropertyNames(global).forEach((prop) => {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(global, prop);\n\t\t\tif (desc && typeof desc.value === \"function\") {\n\t\t\t\tif (!this.ctors[prop]) this.ctors[prop] = [];\n\t\t\t\tthis.ctors[prop].push(desc.value);\n\t\t\t}\n\t\t});\n\t}\n\n\tinstanceof(obj: any, name: string) {\n\t\tconst ctors = this.ctors[name];\n\t\tif (!ctors) throw new Error(`No constructors for ${name} found`);\n\t\tfor (const ctor of ctors) {\n\t\t\tif (obj instanceof ctor) return true;\n\t\t}\n\t\treturn false;\n\t}\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"importScripts\", {\n\t\tapply(ctx) {\n\t\t\tfor (const i in ctx.args) {\n\t\t\t\tctx.args[i] = client.rewriteUrl(ctx.args[i]);\n\t\t\t}\n\t\t},\n\t});\n}\n","import {\n\tBareCompatibleClient,\n\tBareResponse,\n\tProxyTransport,\n\tRawHeaders,\n\tTransferrableResponse,\n\tBareRequestInit,\n} from \"@mercuryworkshop/proxy-transports\";\n\nimport {\n\trewriteUrl,\n\tunrewriteBlob,\n\tunrewriteUrl,\n\ttype URLMeta,\n} from \"@rewriters/url\";\nimport { rewriteJs } from \"@rewriters/js\";\nimport { ScramjetHeaders } from \"@/shared/headers\";\nimport { flagEnabled, ScramjetContext } from \"@/shared\";\nimport { rewriteHtml } from \"@rewriters/html\";\nimport { rewriteCss } from \"@rewriters/css\";\nimport { rewriteWorkers } from \"@rewriters/worker\";\nimport { ScramjetConfig } from \"@/types\";\nimport DomHandler from \"domhandler\";\n\nexport interface ScramjetFetchRequest {\n\trawUrl: URL;\n\tdestination: RequestDestination;\n\tmode: RequestMode;\n\treferrer: string;\n\tmethod: string;\n\tbody: BodyType | null;\n\tcache: RequestCache;\n\n\tinitialHeaders: ScramjetHeaders;\n\n\trawClientUrl?: URL;\n}\n\nexport interface ScramjetFetchParsed {\n\turl: URL;\n\tclientUrl?: URL;\n\n\tmeta: URLMeta;\n\tscriptType: \"module\" | \"regular\";\n}\n\nexport interface ScramjetFetchResponse {\n\tbody: BodyType;\n\theaders: ScramjetHeaders;\n\tstatus: number;\n\tstatusText: string;\n}\n\nexport type FetchHandlerInit = {\n\ttransport: ProxyTransport;\n\tcontext: ScramjetContext;\n\tcrossOriginIsolated?: boolean;\n\n\tsendSetCookie: (url: URL, cookie: string) => Promise<void>;\n\tfetchDataUrl(dataUrl: string): Promise<BareResponse>;\n\tfetchBlobUrl(blobUrl: string): Promise<BareResponse>;\n};\n\nexport class ScramjetFetchHandler extends EventTarget {\n\tpublic client: BareCompatibleClient;\n\tpublic crossOriginIsolated: boolean = false;\n\tpublic context: ScramjetContext;\n\n\tpublic fetchDataUrl: (dataUrl: string) => Promise<Response>;\n\tpublic fetchBlobUrl: (blobUrl: string) => Promise<Response>;\n\tpublic sendSetCookie: (url: URL, cookie: string) => Promise<void>;\n\n\tconstructor(init: FetchHandlerInit) {\n\t\tsuper();\n\t\tthis.client = new BareCompatibleClient(init.transport);\n\t\tthis.context = init.context;\n\t\tthis.crossOriginIsolated = init.crossOriginIsolated || false;\n\t\tthis.sendSetCookie = init.sendSetCookie;\n\t\tthis.fetchDataUrl = init.fetchDataUrl;\n\t\tthis.fetchBlobUrl = init.fetchBlobUrl;\n\t}\n\n\tasync handleFetch(\n\t\trequest: ScramjetFetchRequest\n\t): Promise<ScramjetFetchResponse> {\n\t\treturn doHandleFetch(this, request);\n\t}\n}\n\nasync function doHandleFetch(\n\thandler: ScramjetFetchHandler,\n\trequest: ScramjetFetchRequest\n): Promise<ScramjetFetchResponse> {\n\tconst parsed = parseRequest(request, handler);\n\n\tif (\n\t\trequest.rawUrl.pathname.startsWith(\n\t\t\t`${handler.context.prefix.pathname}blob:`\n\t\t) ||\n\t\trequest.rawUrl.pathname.startsWith(\n\t\t\t`${handler.context.prefix.pathname}data:`\n\t\t)\n\t) {\n\t\treturn handleBlobOrDataUrlFetch(handler, request, parsed);\n\t}\n\n\tconst newheaders = rewriteRequestHeaders(request, handler, parsed);\n\n\tconst init = {\n\t\tbody: request.body,\n\t\theaders: newheaders.toRawHeaders(),\n\t\tmethod: request.method,\n\t\tredirect: \"manual\",\n\t} as BareRequestInit;\n\n\tconst req = new ScramjetRequestEvent(\n\t\trequest,\n\t\tparsed.url,\n\t\tparsed,\n\t\tinit,\n\t\thandler.client\n\t);\n\thandler.dispatchEvent(req);\n\n\tlet response: BareResponse;\n\n\tif (req._response) {\n\t\tlet resp = req._response;\n\t\tif (\"then\" in resp) {\n\t\t\tresp = await resp;\n\t\t}\n\t\tif (\"rawHeaders\" in resp) {\n\t\t\t// it's a bare response\n\t\t\tresponse = resp;\n\t\t} else {\n\t\t\t// it's a native response, convert it\n\t\t\tresponse = BareResponse.fromNativeResponse(resp);\n\t\t}\n\t} else {\n\t\tresponse = await handler.client.fetch(req.url, req.init);\n\t}\n\n\tlet responseBody: BodyType;\n\n\t// set-cookie needs to take the raw headers. after this, we can flatten the headers into a ScramjetHeaders object\n\tawait handleCookies(handler, request, parsed, response.rawHeaders);\n\n\tconst responseHeaders = await rewriteHeaders(\n\t\thandler,\n\t\trequest,\n\t\tparsed,\n\t\tresponse.rawHeaders\n\t);\n\n\tif (isRedirect(response)) {\n\t\tconst redirectUrl = new URL(\n\t\t\tunrewriteUrl(responseHeaders.get(\"location\"), handler.context)\n\t\t);\n\n\t\t// await updateTracker(\n\t\t// \turl.toString(),\n\t\t// \tredirectUrl.toString(),\n\t\t// \tresponseHeaders[\"referrer-policy\"]\n\t\t// );\n\n\t\t// const redirectMeta = {\n\t\t// \torigin: redirectUrl,\n\t\t// \tbase: redirectUrl,\n\t\t// };\n\t\t// const newSiteDirective = await getSiteDirective(\n\t\t// \tredirectMeta,\n\t\t// \tparsed.url,\n\t\t// \tbareClient\n\t\t// );\n\t\t// await getMostRestrictiveSite(redirectUrl.toString(), newSiteDirective);\n\n\t\t// ensure that ?type=module is not lost in a redirect\n\t\tif (parsed.scriptType) {\n\t\t\tconst url = new URL(responseHeaders.get(\"location\"));\n\t\t\turl.searchParams.set(\"type\", parsed.scriptType);\n\t\t\tresponseHeaders.set(\"location\", url.href);\n\t\t}\n\t}\n\n\tif (response.body && !isRedirect(response)) {\n\t\tresponseBody = await rewriteBody(handler, request, parsed, response);\n\t}\n\n\t// Clean up tracker if not a redirect\n\t// if (!isRedirect(response)) {\n\t// await cleanTracker(parsed.url.toString());\n\t// }\n\n\tconst resp = new ScramjetResponseEvent(request, parsed, {\n\t\tbody: responseBody,\n\t\theaders: responseHeaders,\n\t\tstatus: response.status,\n\t\tstatusText: response.statusText,\n\t});\n\thandler.dispatchEvent(resp);\n\n\tlet r = resp.response;\n\tif (resp._response) r = await resp._response;\n\n\treturn r;\n}\n\nfunction isRedirect(response: BareResponse) {\n\treturn response.status >= 300 && response.status < 400;\n}\n\nexport function parseRequest(\n\trequest: ScramjetFetchRequest,\n\thandler: ScramjetFetchHandler\n): ScramjetFetchParsed {\n\tconst strippedUrl = new URL(request.rawUrl.href);\n\tconst extraParams: Record<string, string> = {};\n\n\tlet scriptType: \"module\" | \"regular\" = \"regular\";\n\tlet topFrameName: string | undefined;\n\tlet parentFrameName: string | undefined;\n\tfor (const [param, value] of [...request.rawUrl.searchParams.entries()]) {\n\t\tswitch (param) {\n\t\t\tcase \"type\":\n\t\t\t\tif (value === \"module\") scriptType = value;\n\t\t\t\tbreak;\n\t\t\tcase \"dest\":\n\t\t\t\tbreak;\n\t\t\tcase \"topFrame\":\n\t\t\t\ttopFrameName = value;\n\t\t\t\tbreak;\n\t\t\tcase \"parentFrame\":\n\t\t\t\tparentFrameName = value;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tdbg.warn(\n\t\t\t\t\t`${request.rawUrl.href} extraneous query parameter ${param}. Assuming <form> element`\n\t\t\t\t);\n\t\t\t\textraParams[param] = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tstrippedUrl.searchParams.delete(param);\n\t}\n\n\tif (!URL.canParse(unrewriteUrl(strippedUrl, handler.context))) {\n\t\tthrow new Error(`unable to parse rewritten url: ${strippedUrl.href}`);\n\t}\n\tconst url = new URL(unrewriteUrl(strippedUrl, handler.context));\n\n\tif (url.origin === new URL(request.rawUrl).origin) {\n\t\t// uh oh!\n\t\tthrow new Error(\n\t\t\t\"attempted to fetch from same origin - this means the site has obtained a reference to the real origin, aborting\"\n\t\t);\n\t}\n\n\t// now that we're past unrewriting it's safe to add back the params\n\tfor (const [param, value] of Object.entries(extraParams)) {\n\t\turl.searchParams.set(param, value);\n\t}\n\n\t// TODO: figure out what origin and base actually mean\n\tconst meta: URLMeta = {\n\t\torigin: url,\n\t\tbase: url,\n\t\ttopFrameName,\n\t\tparentFrameName,\n\t};\n\n\tconst parsed: ScramjetFetchParsed = {\n\t\tmeta,\n\t\turl,\n\t\tscriptType,\n\t};\n\n\tif (request.rawClientUrl) {\n\t\t// TODO: probably need to make a meta for it\n\t\tparsed.clientUrl = new URL(\n\t\t\tunrewriteUrl(request.rawClientUrl, handler.context)\n\t\t);\n\t}\n\n\treturn parsed;\n}\n\nfunction rewriteRequestHeaders(\n\trequest: ScramjetFetchRequest,\n\thandler: ScramjetFetchHandler,\n\tparsed: ScramjetFetchParsed\n): ScramjetHeaders {\n\tconst headers = request.initialHeaders.clone();\n\n\tif (\n\t\trequest.rawClientUrl &&\n\t\trequest.rawClientUrl.pathname.startsWith(handler.context.prefix.pathname)\n\t) {\n\t\t// TODO: i was against cors emulation but we might actually break stuff if we send full origin/referrer always\n\t\tconst clientURL = new URL(\n\t\t\tunrewriteUrl(request.rawClientUrl, handler.context)\n\t\t);\n\t\tif (clientURL.toString().includes(\"youtube.com\")) {\n\t\t\t// console.log(headers);\n\t\t} else {\n\t\t\t// Force referrer to unsafe-url for all requests\n\t\t\theaders.set(\"Referer\", clientURL.href);\n\t\t\theaders.set(\"Origin\", clientURL.origin);\n\t\t}\n\t}\n\n\tconst cookies = handler.context.cookieJar.getCookies(parsed.url, false);\n\n\tif (cookies.length) {\n\t\theaders.set(\"Cookie\", cookies);\n\t}\n\n\t// // Check if we should emulate a top-level navigation\n\t// let isTopLevelProxyNavigation = false;\n\t// if (\n\t// \tcontext.destination === \"iframe\" &&\n\t// \tcontext.mode === \"navigate\" &&\n\t// \tcontext.referrer &&\n\t// \tcontext.referrer !== \"no-referrer\"\n\t// ) {\n\t// \t// Trace back through the referrer chain, checking if each was an iframe navigation using the clients, until we find a non-iframe parent on a non-proxy page\n\t// \tlet currentReferrer = context.referrer;\n\t// \tconst allClients = await self.clients.matchAll({ type: \"window\" });\n\n\t// \t// Trace backwards\n\t// \twhile (currentReferrer) {\n\t// \t\tif (!currentReferrer.includes(config.prefix)) {\n\t// \t\t\tisTopLevelProxyNavigation = true;\n\t// \t\t\tbreak;\n\t// \t\t}\n\n\t// \t\t// Find the parent for this iteration\n\t// \t\tconst parentChainClient = allClients.find(\n\t// \t\t\t(c) => c.url === currentReferrer\n\t// \t\t);\n\n\t// \t\t// Get the next referrer policy that applies to this parent\n\t// \t\t// eslint-disable-next-line no-await-in-loop\n\t// \t\tconst parentPolicyData = await getReferrerPolicy(currentReferrer);\n\n\t// \t\tif (!parentPolicyData || !parentPolicyData.referrer) {\n\t// \t\t\t// Check if this ends at the proxy origin\n\t// \t\t\tif (parentChainClient && currentReferrer.startsWith(location.origin)) {\n\t// \t\t\t\tisTopLevelProxyNavigation = true;\n\t// \t\t\t}\n\t// \t\t\t// Results are inclusive\n\t// \t\t\tbreak;\n\t// \t\t}\n\n\t// \t\t// Check if this was an iframe navigation by looking at the client\n\t// \t\tif (parentChainClient && parentChainClient.frameType === \"nested\") {\n\t// \t\t\t// Continue checking the chain\n\t// \t\t\tcurrentReferrer = parentPolicyData.referrer;\n\t// \t\t} else {\n\t// \t\t\t// Results are inclusive\n\t// \t\t\tbreak;\n\t// \t\t}\n\t// \t}\n\t// }\n\n\t// if (isTopLevelProxyNavigation) {\n\t// \theaders.set(\"Sec-Fetch-Dest\", \"document\");\n\t// \theaders.set(\"Sec-Fetch-Mode\", \"navigate\");\n\t// } else {\n\t// \t// Convert empty destination to \"empty\" string per spec\n\t// \theaders.set(\"Sec-Fetch-Dest\", request.destination || \"empty\");\n\t// \theaders.set(\"Sec-Fetch-Mode\", request.mode);\n\t// }\n\n\t// let siteDirective = \"none\";\n\t// if (\n\t// \trequest.referrer &&\n\t// \trequest.referrer !== \"\" &&\n\t// \trequest.referrer !== \"no-referrer\"\n\t// ) {\n\t// \tif (request.referrer.includes(config.prefix)) {\n\t// \t\tconst unrewrittenReferrer = unrewriteUrl(request.referrer);\n\t// \t\tif (unrewrittenReferrer) {\n\t// \t\t\tconst referrerUrl = new URL(unrewrittenReferrer);\n\t// \t\t\tsiteDirective = await getSiteDirective(meta, referrerUrl, this.client);\n\t// \t\t}\n\t// \t}\n\t// }\n\n\t// await initializeTracker(\n\t// \turl.toString(),\n\t// \trequest.referrer ? unrewriteUrl(request.referrer) : null,\n\t// \tsiteDirective\n\t// );\n\n\t// headers.set(\n\t// \t\"Sec-Fetch-Site\",\n\t// \tawait getMostRestrictiveSite(url.toString(), siteDirective)\n\t// );\n\treturn headers;\n}\n\nasync function handleBlobOrDataUrlFetch(\n\thandler: ScramjetFetchHandler,\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed\n): Promise<ScramjetFetchResponse> {\n\tlet dataUrl = request.rawUrl.pathname.substring(\n\t\thandler.context.prefix.pathname.length\n\t);\n\tlet response: BareResponse;\n\n\tif (dataUrl.startsWith(\"blob:\")) {\n\t\tdataUrl = unrewriteBlob(dataUrl, handler.context, parsed.meta);\n\t\tresponse = BareResponse.fromNativeResponse(\n\t\t\tawait handler.fetchBlobUrl(dataUrl)\n\t\t);\n\t} else {\n\t\tresponse = BareResponse.fromNativeResponse(\n\t\t\tawait handler.fetchDataUrl(dataUrl)\n\t\t);\n\t}\n\n\tlet body: BodyType;\n\tif (response.body) {\n\t\tbody = await rewriteBody(\n\t\t\thandler,\n\t\t\trequest,\n\t\t\tparsed,\n\t\t\tresponse as BareResponse\n\t\t);\n\t}\n\tconst headers = ScramjetHeaders.fromRawHeaders(response.rawHeaders);\n\tif (handler.crossOriginIsolated) {\n\t\theaders.set(\"Cross-Origin-Opener-Policy\", \"same-origin\");\n\t\theaders.set(\"Cross-Origin-Embedder-Policy\", \"require-corp\");\n\t}\n\n\treturn {\n\t\tbody,\n\t\tstatus: response.status,\n\t\tstatusText: response.statusText,\n\t\theaders: headers,\n\t};\n}\n\nasync function handleCookies(\n\thandler: ScramjetFetchHandler,\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed,\n\trawHeaders: RawHeaders\n) {\n\tfor (const [key, value] of rawHeaders) {\n\t\tif (key.toLowerCase() !== \"set-cookie\") continue;\n\n\t\thandler.context.cookieJar.setCookies([value], parsed.url);\n\t\tconst promise = handler.sendSetCookie(parsed.url, value);\n\n\t\t// we want the client to have the cookies before fetch returns\n\t\t// for navigations though, there's no race since we send the entire cookie dump in the same request\n\t\tif (\n\t\t\trequest.destination !== \"document\" &&\n\t\t\trequest.destination !== \"iframe\"\n\t\t) {\n\t\t\tawait promise;\n\t\t}\n\t}\n}\n\n/**\n * Headers for security policy features that haven't been emulated yet\n */\nconst SEC_HEADERS = new Set([\n\t\"cross-origin-embedder-policy\",\n\t\"cross-origin-opener-policy\",\n\t\"cross-origin-resource-policy\",\n\t\"content-security-policy\",\n\t\"content-security-policy-report-only\",\n\t\"expect-ct\",\n\t\"feature-policy\",\n\t\"origin-isolation\",\n\t\"strict-transport-security\",\n\t\"upgrade-insecure-requests\",\n\t\"x-content-type-options\",\n\t\"x-download-options\",\n\t\"x-frame-options\",\n\t\"x-permitted-cross-domain-policies\",\n\t\"x-powered-by\",\n\t\"x-xss-protection\",\n\t// This needs to be emulated, but for right now it isn't that important of a feature to be worried about\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Clear-Site-Data\n\t\"clear-site-data\",\n]);\n\n/**\n * Headers that are actually URLs that need to be rewritten\n */\nconst URL_HEADERS = new Set([\"location\", \"content-location\", \"referer\"]);\n\nfunction rewriteLinkHeader(\n\tlink: string,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n) {\n\treturn link.replace(\n\t\t/<([^>]+)>/gi,\n\t\t(match) => `<${rewriteUrl(match, context, meta)}>`\n\t);\n}\n\nexport async function rewriteHeaders(\n\thandler: ScramjetFetchHandler,\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed,\n\trawHeaders: RawHeaders\n): Promise<ScramjetHeaders> {\n\tconst headers = ScramjetHeaders.fromRawHeaders(rawHeaders);\n\n\tfor (const cspHeader of SEC_HEADERS) {\n\t\theaders.delete(cspHeader);\n\t}\n\n\tfor (const urlHeader of URL_HEADERS) {\n\t\tif (headers.has(urlHeader)) {\n\t\t\tlet url = headers.get(urlHeader)!;\n\t\t\tlet rewrittenUrl = rewriteUrl(url, handler.context, parsed.meta);\n\t\t\theaders.set(urlHeader, rewrittenUrl);\n\t\t}\n\t}\n\n\tif (headers.has(\"link\")) {\n\t\tlet link = headers.get(\"link\")!;\n\t\tlet rewritten = rewriteLinkHeader(link, handler.context, parsed.meta);\n\t\theaders.set(\"link\", rewritten);\n\t}\n\n\t// Emulate the referrer policy to set it back to what it should've been without Force Referrer in place\n\tif (typeof headers[\"referer\"] === \"string\") {\n\t\tconst referrerUrl = new URL(headers[\"referer\"]);\n\t\t// const storedPolicyData = await getReferrerPolicy(referrerUrl.href);\n\t\t// if (storedPolicyData) {\n\t\t// \tconst storedReferrerPolicy = storedPolicyData.policy\n\t\t// \t\t.toLowerCase()\n\t\t// \t\t.split(\",\")\n\t\t// \t\t.map((rawDir) => rawDir.trim());\n\t\t// \tif (\n\t\t// \t\tstoredReferrerPolicy.includes(\"no-referrer\") ||\n\t\t// \t\t(storedReferrerPolicy.includes(\"no-referrer-when-downgrade\") &&\n\t\t// \t\t\tparsed.meta.origin.protocol === \"http:\" &&\n\t\t// \t\t\treferrerUrl.protocol === \"https:\")\n\t\t// \t) {\n\t\t// \t\tdelete headers[\"referer\"];\n\t\t// \t} else if (storedReferrerPolicy.includes(\"origin\")) {\n\t\t// \t\theaders[\"referer\"] = referrerUrl.origin;\n\t\t// \t} else if (storedReferrerPolicy.includes(\"origin-when-cross-origin\")) {\n\t\t// \t\tif (referrerUrl.origin !== parsed.meta.origin.origin) {\n\t\t// \t\t\theaders[\"referer\"] = referrerUrl.origin;\n\t\t// \t\t} else {\n\t\t// \t\t\theaders[\"referer\"] = referrerUrl.href;\n\t\t// \t\t}\n\t\t// \t} else if (storedReferrerPolicy.includes(\"same-origin\")) {\n\t\t// \t\tif (referrerUrl.origin === parsed.meta.origin.origin) {\n\t\t// \t\t\theaders[\"referer\"] = referrerUrl.href;\n\t\t// \t\t} else {\n\t\t// \t\t\tdelete headers[\"referer\"];\n\t\t// \t\t}\n\t\t// \t} else if (storedReferrerPolicy.includes(\"strict-origin\")) {\n\t\t// \t\tif (\n\t\t// \t\t\tparsed.meta.origin.protocol === \"http:\" &&\n\t\t// \t\t\treferrerUrl.protocol === \"https:\"\n\t\t// \t\t) {\n\t\t// \t\t\tdelete headers[\"referer\"];\n\t\t// \t\t} else {\n\t\t// \t\t\theaders[\"referer\"] = referrerUrl.origin;\n\t\t// \t\t}\n\t\t// \t}\n\t\t// \t// `strict-origin-when-cross-origin` is the default behavior anyway\n\t\t// \telse {\n\t\tif (referrerUrl.origin === parsed.meta.origin.origin) {\n\t\t\theaders[\"referer\"] = referrerUrl.href;\n\t\t} else if (\n\t\t\tparsed.meta.origin.protocol === \"http:\" &&\n\t\t\treferrerUrl.protocol === \"https:\"\n\t\t) {\n\t\t\tdelete headers[\"referer\"];\n\t\t} else {\n\t\t\theaders[\"referer\"] = referrerUrl.origin;\n\t\t}\n\t\t// }\n\t\t// }\n\t}\n\tif (headers.has(\"sec-fetch-dest\") && headers.get(\"sec-fetch-dest\") === \"\") {\n\t\theaders[\"sec-fetch-dest\"] = \"empty\";\n\t}\n\n\tif (\n\t\theaders.has(\"sec-fetch-site\") &&\n\t\theaders.get(\"sec-fetch-site\") !== \"none\"\n\t) {\n\t\tif (headers.has(\"referer\")) {\n\t\t\t// headers[\"sec-fetch-site\"] = await getSiteDirective(\n\t\t\t// \tmeta,\n\t\t\t// \tnew URL(headers[\"referer\"]),\n\t\t\t// \tclient\n\t\t\t// );\n\t\t} else {\n\t\t\tconsole.warn(\n\t\t\t\t\"Missing referrer header; can't rewrite sec-fetch-site properly. Falling back to unsafe deletion.\"\n\t\t\t);\n\t\t\theaders.delete(\"sec-fetch-site\");\n\t\t}\n\t}\n\n\t// const isNavigationRequest =\n\t// \tcontext.mode === \"navigate\" &&\n\t// \t[\"document\", \"iframe\"].includes(context.destination);\n\n\t// Store referrer policy from navigation responses for Force Referrer\n\t// if (isNavigationRequest && headers[\"referrer-policy\"] && context.referrer) {\n\t// \tawait storeReferrerPolicy(\n\t// \t\tparsed.url.href,\n\t// \t\theaders[\"referrer-policy\"],\n\t// \t\tcontext.referrer\n\t// \t);\n\t// }\n\n\tif (headers.get(\"accept\") === \"text/event-stream\") {\n\t\theaders.set(\"content-type\", \"text/event-stream\");\n\t}\n\n\t// scramjet runtime can use features that permissions-policy blocks\n\theaders.delete(\"permissions-policy\");\n\n\tif (\n\t\thandler.crossOriginIsolated &&\n\t\t[\n\t\t\t\"document\",\n\t\t\t\"iframe\",\n\t\t\t\"worker\",\n\t\t\t\"sharedworker\",\n\t\t\t\"style\",\n\t\t\t\"script\",\n\t\t].includes(request.destination)\n\t) {\n\t\theaders.set(\"Cross-Origin-Embedder-Policy\", \"require-corp\");\n\t\theaders.set(\"Cross-Origin-Opener-Policy\", \"same-origin\");\n\t}\n\n\treturn headers;\n}\n\nasync function rewriteBody(\n\thandler: ScramjetFetchHandler,\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed,\n\tresponse: BareResponse\n): Promise<BodyType> {\n\tswitch (request.destination) {\n\t\tcase \"iframe\":\n\t\tcase \"document\":\n\t\t\tif (response.headers.get(\"content-type\")?.startsWith(\"text/html\")) {\n\t\t\t\t// note from percs: i think this has the potential to be slow asf, but for right now its fine (we should probably look for a better solution)\n\t\t\t\t// another note from percs: regex seems to be broken, gonna comment this out\n\t\t\t\t/*\n const buf = await response.arrayBuffer();\n const decode = new TextDecoder(\"utf-8\").decode(buf);\n const charsetHeader = response.headers.get(\"content-type\");\n const charset =\n charsetHeader?.split(\"charset=\")[1] ||\n decode.match(/charset=([^\"]+)/)?.[1] ||\n \"utf-8\";\n const htmlContent = charset\n ? new TextDecoder(charset).decode(buf)\n : decode;\n */\n\t\t\t\treturn rewriteHtml(\n\t\t\t\t\tawait response.text(),\n\t\t\t\t\thandler.context,\n\t\t\t\t\tparsed.meta,\n\t\t\t\t\ttrue,\n\t\t\t\t\t(domhandler) => {\n\t\t\t\t\t\tconst evt = new ScramjetHTMLPreRewriteEvent(\n\t\t\t\t\t\t\tdomhandler,\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t\tparsed\n\t\t\t\t\t\t);\n\t\t\t\t\t\thandler.dispatchEvent(evt);\n\t\t\t\t\t},\n\t\t\t\t\t(domhandler) => {\n\t\t\t\t\t\tconst evt = new ScramjetHTMLPostRewriteEvent(\n\t\t\t\t\t\t\tdomhandler,\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t\tparsed\n\t\t\t\t\t\t);\n\t\t\t\t\t\thandler.dispatchEvent(evt);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn response.body;\n\t\t\t}\n\t\tcase \"script\": {\n\t\t\treturn rewriteJs(\n\t\t\t\tnew Uint8Array(await response.arrayBuffer()),\n\t\t\t\tresponse.url,\n\t\t\t\thandler.context,\n\t\t\t\tparsed.meta,\n\t\t\t\tparsed.scriptType === \"module\"\n\t\t\t) as unknown as ArrayBuffer;\n\t\t}\n\t\tcase \"style\":\n\t\t\treturn rewriteCss(await response.text(), handler.context, parsed.meta);\n\t\tcase \"sharedworker\":\n\t\tcase \"worker\":\n\t\t\treturn rewriteWorkers(\n\t\t\t\thandler.context,\n\t\t\t\tnew Uint8Array(await response.arrayBuffer()),\n\t\t\t\t// TODO: this takes a scriptType and rewritejs takes a bool..\n\t\t\t\tparsed.scriptType,\n\t\t\t\tresponse.url,\n\t\t\t\tparsed.meta\n\t\t\t);\n\t\tdefault:\n\t\t\treturn response.body;\n\t}\n}\n\ntype BodyType = string | ArrayBuffer | Blob | ReadableStream<any>;\n\nexport class ScramjetHTMLPreRewriteEvent extends Event {\n\tconstructor(\n\t\tpublic handler: DomHandler,\n\t\tpublic context: ScramjetFetchRequest,\n\t\tpublic parsed: ScramjetFetchParsed\n\t) {\n\t\tsuper(\"htmlPreRewrite\");\n\t}\n}\n\nexport class ScramjetHTMLPostRewriteEvent extends Event {\n\tconstructor(\n\t\tpublic handler: DomHandler,\n\t\tpublic context: ScramjetFetchRequest,\n\t\tpublic parsed: ScramjetFetchParsed\n\t) {\n\t\tsuper(\"htmlPostRewrite\");\n\t}\n}\n\nexport class ScramjetResponseEvent extends Event {\n\t_response?: ScramjetFetchResponse | Promise<ScramjetFetchResponse>;\n\tconstructor(\n\t\tpublic context: ScramjetFetchRequest,\n\t\tpublic parsed: ScramjetFetchParsed,\n\t\tpublic response: ScramjetFetchResponse\n\t) {\n\t\tsuper(\"handleResponse\");\n\t}\n\trespondWith(\n\t\tresponse: ScramjetFetchResponse | Promise<ScramjetFetchResponse>\n\t) {\n\t\tthis._response = response;\n\t}\n}\n\nexport class ScramjetRequestEvent extends Event {\n\t_response?:\n\t\t| BareResponse\n\t\t| Promise<BareResponse>\n\t\t| Response\n\t\t| Promise<Response>;\n\tconstructor(\n\t\tpublic context: ScramjetFetchRequest,\n\t\tpublic url: URL,\n\t\tpublic parsed: ScramjetFetchParsed,\n\t\tpublic init: BareRequestInit,\n\t\tpublic client: BareCompatibleClient\n\t) {\n\t\tsuper(\"request\");\n\t}\n\trespondWith(response: BareResponse | Promise<BareResponse>) {\n\t\tthis._response = response;\n\t}\n}\n","// import { flagEnabled } from \"@/shared\";\nimport type { URLMeta } from \"@rewriters/url\";\n\nconst logfuncs = {\n\tlog: console.log,\n\twarn: console.warn,\n\terror: console.error,\n\tdebug: console.debug,\n\tinfo: console.info,\n};\n\nexport default {\n\tfmt: function (severity: string, message: string, ...args: any[]) {\n\t\tconst old = Error.prepareStackTrace;\n\n\t\tError.prepareStackTrace = (_, stack) => {\n\t\t\tstack.shift(); // stack();\n\t\t\tstack.shift(); // fmt();\n\t\t\tstack.shift();\n\n\t\t\tlet fmt = \"\";\n\t\t\tfor (let i = 1; i < Math.min(2, stack.length); i++) {\n\t\t\t\tif (stack[i].getFunctionName()) {\n\t\t\t\t\t// const f = stack[i].getThis()?.constructor?.name;\n\t\t\t\t\t// if (f) fmt += `${f}.`\n\t\t\t\t\tfmt += `${stack[i].getFunctionName()} -> ` + fmt;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfmt += stack[0].getFunctionName() || \"Anonymous\";\n\n\t\t\treturn fmt;\n\t\t};\n\n\t\tconst fmt = (function stack() {\n\t\t\ttry {\n\t\t\t\tthrow new Error();\n\t\t\t} catch (e) {\n\t\t\t\treturn e.stack;\n\t\t\t}\n\t\t})();\n\n\t\tError.prepareStackTrace = old;\n\n\t\tthis.print(severity, fmt, message, ...args);\n\t},\n\tprint(severity: string, tag: string, message: string, ...args: any[]) {\n\t\tconst fn = logfuncs[severity] || logfuncs.log;\n\t\tconst bg = {\n\t\t\tlog: \"#000\",\n\t\t\twarn: \"#f80\",\n\t\t\terror: \"#f00\",\n\t\t\tdebug: \"transparent\",\n\t\t}[severity];\n\t\tconst fg = {\n\t\t\tlog: \"#fff\",\n\t\t\twarn: \"#fff\",\n\t\t\terror: \"#fff\",\n\t\t\tdebug: \"gray\",\n\t\t}[severity];\n\t\tconst padding = {\n\t\t\tlog: 2,\n\t\t\twarn: 4,\n\t\t\terror: 4,\n\t\t\tdebug: 0,\n\t\t}[severity];\n\n\t\tfn(\n\t\t\t`%c${tag}%c ${message}`,\n\t\t\t`\n \tbackground-color: ${bg};\n \tcolor: ${fg};\n \tpadding: ${padding}px;\n \tfont-weight: bold;\n \tfont-family: monospace;\n \tfont-size: 0.9em;\n `,\n\t\t\t`${severity === \"debug\" ? \"color: gray\" : \"\"}`,\n\t\t\t...args\n\t\t);\n\t},\n\tlog: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"log\", message, ...args);\n\t},\n\twarn: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"warn\", message, ...args);\n\t},\n\terror: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"error\", message, ...args);\n\t},\n\tdebug: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"debug\", message, ...args);\n\t},\n\ttime(meta: URLMeta, before: number, type: string) {\n\t\tif (1) return;\n\t\tconst after = performance.now();\n\t\tconst duration = after - before;\n\n\t\tlet timespan: string;\n\t\tif (duration < 1) {\n\t\t\ttimespan = \"BLAZINGLY FAST\";\n\t\t} else if (duration < 500) {\n\t\t\ttimespan = \"decent speed\";\n\t\t} else {\n\t\t\ttimespan = \"really slow\";\n\t\t}\n\t\tthis.print(\n\t\t\t\"debug\",\n\t\t\t\"[time]\",\n\t\t\t`${type} was ${timespan} (${duration.toFixed(2)}ms)`\n\t\t);\n\t},\n};\n","// thnank you node unblocker guy\nimport parse from \"set-cookie-parser\";\n\nexport type Cookie = {\n\tname: string;\n\tvalue: string;\n\tpath?: string;\n\texpires?: string;\n\tmaxAge?: number;\n\tdomain?: string;\n\tsecure?: boolean;\n\thttpOnly?: boolean;\n\tsameSite?: \"strict\" | \"lax\" | \"none\";\n};\n\nexport class CookieJar {\n\tprivate cookies: Record<string, Cookie> = {};\n\n\tsetCookies(cookies: string[], url: URL) {\n\t\tfor (const str of cookies) {\n\t\t\tconst parsed = parse(str, {\n\t\t\t\t// this will fuck stuff up if you set it to true\n\t\t\t\tdecodeValues: false,\n\t\t\t});\n\t\t\tconst domain = parsed.domain;\n\t\t\tconst sameSite = parsed.sameSite;\n\t\t\tconst cookie: Cookie = {\n\t\t\t\tdomain,\n\t\t\t\tsameSite,\n\t\t\t\t...parsed[0],\n\t\t\t};\n\n\t\t\tif (!cookie.domain) cookie.domain = \".\" + url.hostname;\n\t\t\tif (!cookie.domain.startsWith(\".\")) cookie.domain = \".\" + cookie.domain;\n\t\t\tif (!cookie.path) cookie.path = \"/\";\n\t\t\tif (!cookie.sameSite) cookie.sameSite = \"lax\";\n\t\t\tif (cookie.expires) cookie.expires = cookie.expires.toString();\n\n\t\t\tconst id = `${cookie.domain}@${cookie.path}@${cookie.name}`;\n\t\t\tthis.cookies[id] = cookie;\n\t\t}\n\t}\n\n\tgetCookies(url: URL, fromJs: boolean): string {\n\t\tconst now = new Date();\n\t\tconst cookies = Object.values(this.cookies);\n\n\t\tconst validCookies: Cookie[] = [];\n\n\t\tfor (const cookie of cookies) {\n\t\t\tif (cookie.expires && new Date(cookie.expires) < now) {\n\t\t\t\tdelete this.cookies[`${cookie.domain}@${cookie.path}@${cookie.name}`];\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (cookie.secure && url.protocol !== \"https:\") continue;\n\t\t\tif (cookie.httpOnly && fromJs) continue;\n\t\t\tif (!url.pathname.startsWith(cookie.path)) continue;\n\n\t\t\tif (cookie.domain.startsWith(\".\")) {\n\t\t\t\tif (!url.hostname.endsWith(cookie.domain.slice(1))) continue;\n\t\t\t}\n\n\t\t\tvalidCookies.push(cookie);\n\t\t}\n\n\t\treturn validCookies\n\t\t\t.map((cookie) => `${cookie.name}=${cookie.value}`)\n\t\t\t.join(\"; \");\n\t}\n\n\tload(cookies: string) {\n\t\tif (typeof cookies === \"object\") return cookies;\n\t\tthis.cookies = JSON.parse(cookies);\n\t}\n\n\tdump(): string {\n\t\treturn JSON.stringify(this.cookies);\n\t}\n}\n","import { RawHeaders } from \"@mercuryworkshop/proxy-transports\";\n\nexport class ScramjetHeaders {\n\theaders = {};\n\n\tset(key: string, v: string) {\n\t\tthis.headers[key.toLowerCase()] = v;\n\t}\n\n\tget(key: string): string | null {\n\t\tconst lk = key.toLowerCase();\n\t\tif (lk in this.headers) {\n\t\t\treturn this.headers[lk];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tdelete(key: string) {\n\t\tdelete this.headers[key.toLowerCase()];\n\t}\n\n\thas(key: string): boolean {\n\t\treturn key.toLowerCase() in this.headers;\n\t}\n\n\ttoRawHeaders(): RawHeaders {\n\t\tconst raw: RawHeaders = [];\n\t\tfor (const k in this.headers) {\n\t\t\traw.push([k, this.headers[k]]);\n\t\t}\n\n\t\treturn raw;\n\t}\n\n\ttoNativeHeaders(): Headers {\n\t\tconst native = new Headers();\n\t\tfor (const k in this.headers) {\n\t\t\tnative.set(k, this.headers[k]);\n\t\t}\n\n\t\treturn native;\n\t}\n\n\tstatic fromRawHeaders(raw: RawHeaders): ScramjetHeaders {\n\t\tconst h = new ScramjetHeaders();\n\t\tfor (const [k, v] of raw) {\n\t\t\tif (h.has(k)) {\n\t\t\t\t// console.debug(\n\t\t\t\t// \t`Duplicate header \"${k}\" found in raw headers, overwriting previous value.`\n\t\t\t\t// );\n\t\t\t}\n\t\t\th.set(k, v);\n\t\t}\n\n\t\treturn h;\n\t}\n\n\tstatic fromNativeHeaders(native: Headers): ScramjetHeaders {\n\t\tconst h = new ScramjetHeaders();\n\t\tfor (const [k, v] of native.entries()) {\n\t\t\th.set(k, v);\n\t\t}\n\n\t\treturn h;\n\t}\n\n\tclone(): ScramjetHeaders {\n\t\tconst newh = new ScramjetHeaders();\n\t\tfor (const k in this.headers) {\n\t\t\tnewh.set(k, this.headers[k]);\n\t\t}\n\n\t\treturn newh;\n\t}\n}\n","import { CookieJar } from \"@/shared/cookie\";\nimport { rewriteCss } from \"@rewriters/css\";\nimport { rewriteHtml, rewriteSrcset } from \"@rewriters/html\";\nimport { rewriteUrl, unrewriteBlob, URLMeta } from \"@rewriters/url\";\nimport { ScramjetContext } from \"@/shared\";\n\nexport const htmlRules: {\n\t[key: string]: \"*\" | string[] | ((...any: any[]) => string | null);\n\tfn: (value: string, context: ScramjetContext, meta: URLMeta) => string | null;\n}[] = [\n\t{\n\t\tfn: (value, context, meta) => {\n\t\t\treturn rewriteUrl(value, context, meta);\n\t\t},\n\n\t\t// url rewrites\n\t\tsrc: [\"embed\", \"script\", \"img\", \"frame\", \"source\", \"input\", \"track\"],\n\t\thref: [\"a\", \"link\", \"area\", \"use\", \"image\"],\n\t\tdata: [\"object\"],\n\t\taction: [\"form\"],\n\t\tformaction: [\"button\", \"input\", \"textarea\", \"submit\"],\n\t\tposter: [\"video\"],\n\t\t\"xlink:href\": [\"image\"],\n\t},\n\t{\n\t\tfn: (value, context, meta) => {\n\t\t\tlet url = rewriteUrl(value, context, meta);\n\t\t\t// if (meta.topFrameName)\n\t\t\t// \turl += `?topFrame=${meta.topFrameName}&parentFrame=${meta.parentFrameName}`;\n\n\t\t\treturn url;\n\t\t},\n\t\tsrc: [\"iframe\"],\n\t},\n\t{\n\t\t// is this a good idea?\n\t\tfn: (value, context, meta) => {\n\t\t\treturn null;\n\t\t},\n\t\tsandbox: [\"iframe\"],\n\t},\n\t{\n\t\tfn: (value, context, meta) => {\n\t\t\tif (value.startsWith(\"blob:\")) {\n\t\t\t\t// for media elements specifically they must take the original blob\n\t\t\t\t// because they can't be fetch'd\n\t\t\t\treturn unrewriteBlob(value, context, meta);\n\t\t\t}\n\n\t\t\treturn rewriteUrl(value, context, meta);\n\t\t},\n\t\tsrc: [\"video\", \"audio\"],\n\t},\n\t{\n\t\tfn: () => \"\",\n\n\t\tintegrity: [\"script\", \"link\"],\n\t},\n\t{\n\t\tfn: () => null,\n\n\t\t// csp stuff that must be deleted\n\t\tnonce: \"*\",\n\t\tcsp: [\"iframe\"],\n\t\tcredentialless: [\"iframe\"],\n\t},\n\t{\n\t\tfn: (value, context, meta) => rewriteSrcset(value, context, meta),\n\n\t\t// srcset\n\t\tsrcset: [\"img\", \"source\"],\n\t\timagesrcset: [\"link\"],\n\t},\n\t{\n\t\tfn: (value, context, meta) =>\n\t\t\trewriteHtml(\n\t\t\t\tvalue,\n\t\t\t\tcontext,\n\t\t\t\t{\n\t\t\t\t\t// for srcdoc origin is the origin of the page that the iframe is on. base and path get dropped\n\t\t\t\t\torigin: new URL(meta.origin.origin),\n\t\t\t\t\tbase: new URL(meta.origin.origin),\n\t\t\t\t},\n\t\t\t\ttrue\n\t\t\t),\n\n\t\t// srcdoc\n\t\tsrcdoc: [\"iframe\"],\n\t},\n\t{\n\t\tfn: (value, context, meta) => rewriteCss(value, context, meta),\n\t\tstyle: \"*\",\n\t},\n\t{\n\t\tfn: (value, context, meta) => {\n\t\t\tif (value === \"_top\" || value === \"_unfencedTop\")\n\t\t\t\treturn meta.topFrameName;\n\t\t\telse if (value === \"_parent\") return meta.parentFrameName;\n\t\t\telse return value;\n\t\t},\n\t\ttarget: [\"a\", \"base\"],\n\t},\n];\n","import { ScramjetConfig, ScramjetFlags, ScramjetVersionInfo } from \"@/types\";\nimport DomHandler, { Element } from \"domhandler\";\nimport { URLMeta } from \"@rewriters/url\";\nimport { CookieJar } from \"./cookie\";\n\nexport * from \"./cookie\";\nexport * from \"./headers\";\nexport * from \"./htmlRules\";\nexport * from \"./rewriters\";\nexport * from \"./security\";\n\nexport function flagEnabled(\n\tflag: keyof ScramjetFlags,\n\tcontext: ScramjetContext,\n\turl: URL\n): boolean {\n\tconst value = context.config.flags[flag];\n\tfor (const regex in context.config.siteFlags) {\n\t\tconst partialflags = context.config.siteFlags[regex];\n\t\tif (new RegExp(regex).test(url.href) && flag in partialflags) {\n\t\t\treturn partialflags[flag];\n\t\t}\n\t}\n\n\treturn value;\n}\nexport type ScramjetInterface = {\n\tcodecEncode: (input: string) => string;\n\tcodecDecode: (input: string) => string;\n\n\tgetInjectScripts(\n\t\tmeta: URLMeta,\n\t\thandler: DomHandler,\n\t\tscript: (src: string) => Element\n\t): Element[];\n\tgetWorkerInjectScripts?(\n\t\tmeta: URLMeta,\n\t\ttype: \"module\" | \"regular\",\n\t\tscript: (src: string) => string\n\t): string;\n};\n\nexport type ScramjetContext = {\n\tconfig: ScramjetConfig;\n\tprefix: URL;\n\tinterface: ScramjetInterface;\n\tcookieJar: CookieJar;\n};\n\nexport const versionInfo: ScramjetVersionInfo = {\n\tversion: VERSION,\n\tbuild: COMMITHASH,\n\tdate: BUILDDATE,\n};\n","import { URLMeta, rewriteUrl, unrewriteUrl } from \"@rewriters/url\";\nimport { ScramjetContext } from \"@/shared\";\n\nexport function rewriteCss(\n\tcss: string,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n) {\n\treturn handleCss(\"rewrite\", css, context, meta);\n}\n\nexport function unrewriteCss(css: string) {\n\treturn handleCss(\"unrewrite\", css);\n}\n\nfunction handleCss(\n\ttype: \"rewrite\" | \"unrewrite\",\n\tcss: string,\n\tcontext?: ScramjetContext,\n\tmeta?: URLMeta\n) {\n\t// regex from vk6 (https://github.com/ading2210)\n\tconst urlRegex = /url\\(['\"]?(.+?)['\"]?\\)/gm;\n\tconst Atruleregex =\n\t\t/@import\\s+(url\\s*?\\(.{0,9999}?\\)|['\"].{0,9999}?['\"]|.{0,9999}?)($|\\s|;)/gm;\n\tcss = new String(css).toString();\n\tcss = css.replace(urlRegex, (match, url) => {\n\t\tconst encodedUrl =\n\t\t\ttype === \"rewrite\"\n\t\t\t\t? rewriteUrl(url.trim(), context, meta)\n\t\t\t\t: unrewriteUrl(url.trim(), context);\n\n\t\treturn match.replace(url, encodedUrl);\n\t});\n\tcss = css.replace(Atruleregex, (match, importStatement) => {\n\t\treturn match.replace(\n\t\t\timportStatement,\n\t\t\timportStatement.replace(\n\t\t\t\t/^(url\\(['\"]?|['\"]|)(.+?)(['\"]|['\"]?\\)|)$/gm,\n\t\t\t\t(match, firstQuote, url, endQuote) => {\n\t\t\t\t\tif (firstQuote.startsWith(\"url\")) {\n\t\t\t\t\t\treturn match;\n\t\t\t\t\t}\n\t\t\t\t\tconst encodedUrl =\n\t\t\t\t\t\ttype === \"rewrite\"\n\t\t\t\t\t\t\t? rewriteUrl(url.trim(), context, meta)\n\t\t\t\t\t\t\t: unrewriteUrl(url.trim(), context);\n\n\t\t\t\t\treturn `${firstQuote}${encodedUrl}${endQuote}`;\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t});\n\n\treturn css;\n}\n","import { ElementType, Handler, Parser } from \"htmlparser2\";\nimport { ChildNode, DomHandler, Element, Comment } from \"domhandler\";\nimport render from \"dom-serializer\";\nimport { URLMeta, rewriteUrl } from \"@rewriters/url\";\nimport { rewriteCss } from \"@rewriters/css\";\nimport { rewriteJs } from \"@rewriters/js\";\nimport { CookieJar } from \"@/shared/cookie\";\nimport { ScramjetContext } from \"@/shared\";\nimport { htmlRules } from \"@/shared/htmlRules\";\n\nconst encoder = new TextEncoder();\nfunction rewriteHtmlInner(\n\thtml: string,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta,\n\tfromTop: boolean = false,\n\tpreRewrite?: (handler: DomHandler) => void,\n\tpostRewrite?: (handler: DomHandler) => void\n) {\n\tconst handler = new DomHandler((err, dom) => dom);\n\tconst parser = new Parser(handler);\n\n\tparser.write(html);\n\tparser.end();\n\tif (preRewrite) preRewrite(handler);\n\ttraverseParsedHtml(handler.root, context, meta);\n\n\tlet htmlRoot: Element | undefined;\n\tlet headElement: Element | undefined;\n\tlet bodyElement: Element | undefined;\n\n\tfunction detectQuirks() {\n\t\tfor (const child of handler.root.childNodes) {\n\t\t\tif (\n\t\t\t\tchild.type === ElementType.Directive ||\n\t\t\t\tchild.type === ElementType.Comment ||\n\t\t\t\tchild.type === ElementType.Text\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (child.type === ElementType.Tag && child.name === \"html\") {\n\t\t\t\thtmlRoot = child as Element;\n\t\t\t} else {\n\t\t\t\t// there's a child of the root that isn't an html element or a doctype/comment/text\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tif (!htmlRoot) return true; // no html tag or it's somewhere else other than first child\n\n\t\tfor (const child of htmlRoot.childNodes) {\n\t\t\tif (\n\t\t\t\tchild.type === ElementType.Directive ||\n\t\t\t\tchild.type === ElementType.Comment ||\n\t\t\t\tchild.type === ElementType.Text\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (child.type === ElementType.Tag && child.name === \"head\") {\n\t\t\t\tif (bodyElement) {\n\t\t\t\t\t// head comes after body\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\theadElement = child as Element;\n\t\t\t} else if (child.type === ElementType.Tag && child.name === \"body\") {\n\t\t\t\tbodyElement = child as Element;\n\t\t\t} else {\n\t\t\t\t// there's a child of html that isn't head or body\n\t\t\t\t// fine if head already exists, bad if it doesn't\n\t\t\t\tif (!headElement) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tlet isQuirky = detectQuirks();\n\n\tif (fromTop) {\n\t\tconst script = (src: string) => new Element(\"script\", { src });\n\t\tconst injectScripts = context.interface.getInjectScripts(\n\t\t\tmeta,\n\t\t\thandler,\n\t\t\tscript\n\t\t);\n\n\t\tif (isQuirky) {\n\t\t\tdbg.warn(\n\t\t\t\t`detected quirky document structure parsing @ ${meta.origin.href}!`\n\t\t\t);\n\t\t\t// there's weird stuff going on with the document that could result in page scripts being loaded before our inject scripts\n\t\t\t// so inject them at position 0\n\t\t\thandler.root.children.unshift(...injectScripts);\n\t\t} else {\n\t\t\tif (!headElement) {\n\t\t\t\theadElement = new Element(\"head\", {}, []);\n\t\t\t\thtmlRoot.children.unshift(headElement);\n\t\t\t}\n\n\t\t\theadElement.children.unshift(...injectScripts);\n\t\t}\n\t}\n\n\tif (postRewrite) postRewrite(handler);\n\n\treturn render(handler.root, {\n\t\tencodeEntities: \"utf8\",\n\t\tdecodeEntities: false,\n\t});\n}\n\nexport function rewriteHtml(\n\thtml: string,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta,\n\tfromTop: boolean = false,\n\tpreRewrite?: (handler: DomHandler) => void,\n\tpostRewrite?: (handler: DomHandler) => void\n) {\n\tconst before = performance.now();\n\tconst ret = rewriteHtmlInner(\n\t\thtml,\n\t\tcontext,\n\t\tmeta,\n\t\tfromTop,\n\t\tpreRewrite,\n\t\tpostRewrite\n\t);\n\tdbg.time(meta, before, \"html rewrite\");\n\n\treturn ret;\n}\n\n// type ParseState = {\n// \tbase: string;\n// \torigin?: URL;\n// };\n\nexport function unrewriteHtml(html: string) {\n\tconst handler = new DomHandler((err, dom) => dom);\n\tconst parser = new Parser(handler);\n\n\tparser.write(html);\n\tparser.end();\n\n\tfunction traverse(node: ChildNode) {\n\t\tif (\"attribs\" in node) {\n\t\t\tfor (const key in node.attribs) {\n\t\t\t\tif (key == \"scramjet-attr-script-source-src\") {\n\t\t\t\t\tif (node.children[0] && \"data\" in node.children[0])\n\t\t\t\t\t\tnode.children[0].data = atob(node.attribs[key]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (key.startsWith(\"scramjet-attr-\")) {\n\t\t\t\t\tnode.attribs[key.slice(\"scramjet-attr-\".length)] = node.attribs[key];\n\t\t\t\t\tdelete node.attribs[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (\"childNodes\" in node) {\n\t\t\tfor (const child of node.childNodes) {\n\t\t\t\ttraverse(child);\n\t\t\t}\n\t\t}\n\t}\n\n\ttraverse(handler.root);\n\n\treturn render(handler.root, {\n\t\tdecodeEntities: false,\n\t});\n}\n\n// i need to add the attributes in during rewriting\n\nfunction traverseParsedHtml(\n\tnode: any,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n) {\n\tif (node.name === \"base\" && node.attribs.href !== undefined) {\n\t\tmeta.base = new URL(node.attribs.href, meta.origin);\n\t}\n\n\tif (node.attribs) {\n\t\tfor (const rule of htmlRules) {\n\t\t\tfor (const attr in rule) {\n\t\t\t\tconst sel = rule[attr.toLowerCase()];\n\t\t\t\tif (typeof sel === \"function\") continue;\n\n\t\t\t\tif (sel === \"*\" || sel.includes(node.name)) {\n\t\t\t\t\tif (node.attribs[attr] !== undefined) {\n\t\t\t\t\t\tconst value = node.attribs[attr];\n\t\t\t\t\t\tconst v = rule.fn(value, context, meta);\n\n\t\t\t\t\t\tif (v === null) delete node.attribs[attr];\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tnode.attribs[attr] = v;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode.attribs[`scramjet-attr-${attr}`] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (const [attr, value] of Object.entries(node.attribs)) {\n\t\t\tif (eventAttributes.includes(attr)) {\n\t\t\t\tnode.attribs[`scramjet-attr-${attr}`] = value;\n\t\t\t\tnode.attribs[attr] = rewriteJs(\n\t\t\t\t\tvalue as string,\n\t\t\t\t\t`(inline ${attr} on element)`,\n\t\t\t\t\tcontext,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (node.name === \"style\" && node.children[0] !== undefined)\n\t\tnode.children[0].data = rewriteCss(node.children[0].data, context, meta);\n\n\tif (\n\t\tnode.name === \"script\" &&\n\t\tnode.attribs.type === \"module\" &&\n\t\tnode.attribs.src\n\t)\n\t\tnode.attribs.src = node.attribs.src + \"?type=module\";\n\n\tif (\n\t\tnode.name === \"script\" &&\n\t\tnode.attribs.type === \"importmap\" &&\n\t\tnode.children[0] !== undefined\n\t) {\n\t\tlet json = node.children[0].data;\n\t\ttry {\n\t\t\tconst map = JSON.parse(json);\n\t\t\tif (map.imports) {\n\t\t\t\tfor (const key in map.imports) {\n\t\t\t\t\tlet url = map.imports[key];\n\t\t\t\t\tif (typeof url === \"string\") {\n\t\t\t\t\t\turl = rewriteUrl(url, context, meta);\n\t\t\t\t\t\tmap.imports[key] = url;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnode.children[0].data = JSON.stringify(map);\n\t\t} catch (e) {\n\t\t\tconsole.error(\"Failed to parse importmap JSON:\", e);\n\t\t}\n\t}\n\tif (\n\t\tnode.name === \"script\" &&\n\t\t/(application|text)\\/javascript|module|undefined/.test(node.attribs.type) &&\n\t\tnode.children[0] !== undefined\n\t) {\n\t\tlet js = node.children[0].data;\n\t\tconst module = node.attribs.type === \"module\" ? true : false;\n\t\tnode.attribs[\"scramjet-attr-script-source-src\"] = bytesToBase64(\n\t\t\tencoder.encode(js)\n\t\t);\n\t\tconst htmlcomment = /<!--[\\s\\S]*?-->/g;\n\t\tjs = js.replace(htmlcomment, \"\");\n\t\tnode.children[0].data = rewriteJs(\n\t\t\tjs,\n\t\t\t\"(inline script element)\",\n\t\t\tcontext,\n\t\t\tmeta,\n\t\t\tmodule\n\t\t);\n\t}\n\n\tif (node.name === \"meta\" && node.attribs[\"http-equiv\"] !== undefined) {\n\t\tif (\n\t\t\tnode.attribs[\"http-equiv\"].toLowerCase() === \"content-security-policy\"\n\t\t) {\n\t\t\t// just delete it. this needs to be emulated eventually but like\n\t\t\tnode = new Comment(node.attribs.content);\n\t\t} else if (\n\t\t\tnode.attribs[\"http-equiv\"] === \"refresh\" &&\n\t\t\tnode.attribs.content.includes(\"url\")\n\t\t) {\n\t\t\tconst contentArray = node.attribs.content.split(\"url=\");\n\t\t\tif (contentArray[1])\n\t\t\t\tcontentArray[1] = rewriteUrl(contentArray[1].trim(), context, meta);\n\t\t\tnode.attribs.content = contentArray.join(\"url=\");\n\t\t}\n\t}\n\n\tif (node.childNodes) {\n\t\tfor (const childNode in node.childNodes) {\n\t\t\tnode.childNodes[childNode] = traverseParsedHtml(\n\t\t\t\tnode.childNodes[childNode],\n\t\t\t\tcontext,\n\t\t\t\tmeta\n\t\t\t);\n\t\t}\n\t}\n\n\treturn node;\n}\n\nexport function rewriteSrcset(\n\tsrcset: string,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n) {\n\tconst sources = srcset.split(/ .*,/).map((src) => src.trim());\n\tconst rewrittenSources = sources.map((source) => {\n\t\t// Split into URLs and descriptors (if any)\n\t\t// e.g. url0, url1 1.5x, url2 2x\n\t\tconst [url, ...descriptors] = source.split(/\\s+/);\n\n\t\t// Rewrite the URLs and keep the descriptors (if any)\n\t\tconst rewrittenUrl = rewriteUrl(url.trim(), context, meta);\n\n\t\treturn descriptors.length > 0\n\t\t\t? `${rewrittenUrl} ${descriptors.join(\" \")}`\n\t\t\t: rewrittenUrl;\n\t});\n\n\treturn rewrittenSources.join(\", \");\n}\n\n// function base64ToBytes(base64) {\n// \tconst binString = atob(base64);\n\n// \treturn Uint8Array.from(binString, (m) => m.codePointAt(0));\n// }\n\nfunction bytesToBase64(bytes: Uint8Array) {\n\tconst binString = Array.from(bytes, (byte) =>\n\t\tString.fromCodePoint(byte)\n\t).join(\"\");\n\n\treturn btoa(binString);\n}\nconst eventAttributes = [\n\t\"onbeforexrselect\",\n\t\"onabort\",\n\t\"onbeforeinput\",\n\t\"onbeforematch\",\n\t\"onbeforetoggle\",\n\t\"onblur\",\n\t\"oncancel\",\n\t\"oncanplay\",\n\t\"oncanplaythrough\",\n\t\"onchange\",\n\t\"onclick\",\n\t\"onclose\",\n\t\"oncontentvisibilityautostatechange\",\n\t\"oncontextlost\",\n\t\"oncontextmenu\",\n\t\"oncontextrestored\",\n\t\"oncuechange\",\n\t\"ondblclick\",\n\t\"ondrag\",\n\t\"ondragend\",\n\t\"ondragenter\",\n\t\"ondragleave\",\n\t\"ondragover\",\n\t\"ondragstart\",\n\t\"ondrop\",\n\t\"ondurationchange\",\n\t\"onemptied\",\n\t\"onended\",\n\t\"onerror\",\n\t\"onfocus\",\n\t\"onformdata\",\n\t\"oninput\",\n\t\"oninvalid\",\n\t\"onkeydown\",\n\t\"onkeypress\",\n\t\"onkeyup\",\n\t\"onload\",\n\t\"onloadeddata\",\n\t\"onloadedmetadata\",\n\t\"onloadstart\",\n\t\"onmousedown\",\n\t\"onmouseenter\",\n\t\"onmouseleave\",\n\t\"onmousemove\",\n\t\"onmouseout\",\n\t\"onmouseover\",\n\t\"onmouseup\",\n\t\"onmousewheel\",\n\t\"onpause\",\n\t\"onplay\",\n\t\"onplaying\",\n\t\"onprogress\",\n\t\"onratechange\",\n\t\"onreset\",\n\t\"onresize\",\n\t\"onscroll\",\n\t\"onsecuritypolicyviolation\",\n\t\"onseeked\",\n\t\"onseeking\",\n\t\"onselect\",\n\t\"onslotchange\",\n\t\"onstalled\",\n\t\"onsubmit\",\n\t\"onsuspend\",\n\t\"ontimeupdate\",\n\t\"ontoggle\",\n\t\"onvolumechange\",\n\t\"onwaiting\",\n\t\"onwebkitanimationend\",\n\t\"onwebkitanimationiteration\",\n\t\"onwebkitanimationstart\",\n\t\"onwebkittransitionend\",\n\t\"onwheel\",\n\t\"onauxclick\",\n\t\"ongotpointercapture\",\n\t\"onlostpointercapture\",\n\t\"onpointerdown\",\n\t\"onpointermove\",\n\t\"onpointerrawupdate\",\n\t\"onpointerup\",\n\t\"onpointercancel\",\n\t\"onpointerover\",\n\t\"onpointerout\",\n\t\"onpointerenter\",\n\t\"onpointerleave\",\n\t\"onselectstart\",\n\t\"onselectionchange\",\n\t\"onanimationend\",\n\t\"onanimationiteration\",\n\t\"onanimationstart\",\n\t\"ontransitionrun\",\n\t\"ontransitionstart\",\n\t\"ontransitionend\",\n\t\"ontransitioncancel\",\n\t\"oncopy\",\n\t\"oncut\",\n\t\"onpaste\",\n\t\"onscrollend\",\n\t\"onscrollsnapchange\",\n\t\"onscrollsnapchanging\",\n];\n","import { flagEnabled, ScramjetContext } from \"@/shared\";\nimport { URLMeta } from \"@rewriters/url\";\n\nimport { getRewriter, JsRewriterOutput, textDecoder } from \"@rewriters/wasm\";\n\nError.stackTraceLimit = 50;\n\ntype RewriterResult = {\n\tjs: string | Uint8Array;\n\tmap: Uint8Array | null;\n\ttag: string;\n\terrors: string[];\n};\nfunction rewriteJsWasm(\n\tinput: string | Uint8Array,\n\tsource: string | null,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta,\n\tmodule: boolean\n): RewriterResult {\n\tlet [rewriter, ret] = getRewriter(context, meta);\n\n\tlet flagsobj = {};\n\tfor (const flag of Object.keys(context.config.flags)) {\n\t\tflagsobj[flag] = flagEnabled(flag as any, context, meta.base);\n\t}\n\n\ttry {\n\t\tlet out: JsRewriterOutput;\n\t\tconst before = performance.now();\n\t\t// try {\n\t\tif (typeof input === \"string\") {\n\t\t\tout = rewriter.rewrite_js(\n\t\t\t\t{\n\t\t\t\t\t...context.config.globals,\n\t\t\t\t\tprefix: context.prefix.pathname,\n\t\t\t\t},\n\t\t\t\tflagsobj,\n\t\t\t\tcontext.interface.codecEncode,\n\t\t\t\tinput,\n\t\t\t\tmeta.base.href,\n\t\t\t\tsource || \"(unknown)\",\n\t\t\t\tmodule\n\t\t\t);\n\t\t} else {\n\t\t\tout = rewriter.rewrite_js_bytes(\n\t\t\t\t{\n\t\t\t\t\t...context.config.globals,\n\t\t\t\t\tprefix: context.prefix.pathname,\n\t\t\t\t},\n\t\t\t\tflagsobj,\n\t\t\t\tcontext.interface.codecEncode,\n\t\t\t\tinput,\n\t\t\t\tmeta.base.href,\n\t\t\t\tsource || \"(unknown)\",\n\t\t\t\tmodule\n\t\t\t);\n\t\t}\n\t\t// } catch (err) {\n\t\t// \tconst err1 = err as Error;\n\t\t// \tconsole.warn(\n\t\t// \t\t\"failed rewriting js for\",\n\t\t// \t\tsource,\n\t\t// \t\terr1.message,\n\t\t// \t\tinput instanceof Uint8Array ? textDecoder.decode(input) : input\n\t\t// \t);\n\n\t\t// \treturn { js: input, tag: \"\", map: null };\n\t\t// }\n\t\tdbg.time(meta, before, `oxc rewrite for \"${source || \"(unknown)\"}\"`);\n\n\t\tconst { js, map, scramtag, errors } = out;\n\n\t\treturn {\n\t\t\tjs: typeof input === \"string\" ? textDecoder.decode(js) : js,\n\t\t\ttag: scramtag,\n\t\t\tmap,\n\t\t\terrors,\n\t\t};\n\t} finally {\n\t\tret();\n\t}\n}\n\nexport function rewriteJsInner(\n\tjs: string | Uint8Array,\n\turl: string | null,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta,\n\tmodule = false\n) {\n\treturn rewriteJsWasm(js, url, context, meta, module);\n}\n\nexport function rewriteJs(\n\tjs: string | Uint8Array,\n\turl: string | null,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta,\n\tmodule = false\n): string | Uint8Array {\n\ttry {\n\t\tconst res = rewriteJsInner(js, url, context, meta, module);\n\t\tlet newjs = res.js;\n\n\t\tif (flagEnabled(\"sourcemaps\", context, meta.base)) {\n\t\t\tconst pushmap = globalThis[context.config.globals.pushsourcemapfn];\n\t\t\tif (pushmap) {\n\t\t\t\tpushmap(Array.from(res.map), res.tag);\n\t\t\t} else {\n\t\t\t\tif (newjs instanceof Uint8Array) {\n\t\t\t\t\tnewjs = new TextDecoder().decode(newjs);\n\t\t\t\t}\n\t\t\t\tconst sourcemapfn = `${context.config.globals.pushsourcemapfn}([${res.map.join(\",\")}], \"${res.tag}\");`;\n\n\t\t\t\t// don't put the sourcemap call before \"use strict\"\n\t\t\t\tconst strictMode = /^\\s*(['\"])use strict\\1;?/;\n\t\t\t\tif (strictMode.test(newjs)) {\n\t\t\t\t\tnewjs = newjs.replace(strictMode, `$&\\n${sourcemapfn}`);\n\t\t\t\t} else {\n\t\t\t\t\tnewjs = `${sourcemapfn}\\n${newjs}`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (flagEnabled(\"rewriterLogs\", context, meta.base)) {\n\t\t\tfor (const error of res.errors) {\n\t\t\t\tconsole.error(\"oxc parse error\", error);\n\t\t\t}\n\t\t}\n\n\t\treturn newjs;\n\t} catch (err) {\n\t\tconsole.warn(\n\t\t\t\"failed rewriting js for\",\n\t\t\turl || \"(unknown)\",\n\t\t\terr.message,\n\t\t\tjs instanceof Uint8Array ? textDecoder.decode(js) : js\n\t\t);\n\t\tif (flagEnabled(\"allowInvalidJs\", context, meta.base)) {\n\t\t\treturn js;\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n","import { ScramjetContext } from \"@/shared\";\nimport { rewriteJs } from \"@rewriters/js\";\n\nexport type URLMeta = {\n\torigin: URL;\n\tbase: URL;\n\ttopFrameName?: string;\n\tparentFrameName?: string;\n};\n\nfunction tryCanParseURL(url: string, origin?: string | URL): URL | null {\n\ttry {\n\t\treturn new URL(url, origin);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport function rewriteBlob(\n\turl: string,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n) {\n\tconst blob = new URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + meta.origin.origin + blob.pathname;\n}\n\nexport function unrewriteBlob(\n\turl: string,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n) {\n\tconst blob = new URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + context.prefix.origin + blob.pathname;\n}\n\nexport function rewriteUrl(\n\turl: string | URL,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n) {\n\tif (url instanceof URL) url = url.toString();\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\treturn (\n\t\t\t\"javascript:\" +\n\t\t\trewriteJs(\n\t\t\t\turl.slice(\"javascript:\".length),\n\t\t\t\t\"(javascript: url)\",\n\t\t\t\tcontext,\n\t\t\t\tmeta\n\t\t\t)\n\t\t);\n\t} else if (url.startsWith(\"blob:\")) {\n\t\treturn context.prefix.href + url;\n\t} else if (url.startsWith(\"data:\")) {\n\t\treturn context.prefix.href + url;\n\t} else if (url.startsWith(\"mailto:\") || url.startsWith(\"about:\")) {\n\t\treturn url;\n\t} else {\n\t\tlet base = meta.base.href;\n\n\t\tif (base.startsWith(\"about:\"))\n\t\t\tbase = unrewriteUrl(self.location.href, context); // jank!!!!! weird jank!!!\n\t\tconst realUrl = tryCanParseURL(url, base);\n\t\tif (!realUrl) return url;\n\t\tconst encodedHash = context.interface.codecEncode(realUrl.hash.slice(1));\n\t\tconst realHash = encodedHash ? \"#\" + encodedHash : \"\";\n\t\trealUrl.hash = \"\";\n\n\t\treturn (\n\t\t\tcontext.prefix.href +\n\t\t\tcontext.interface.codecEncode(realUrl.href) +\n\t\t\trealHash\n\t\t);\n\t}\n}\n\nexport function unrewriteUrl(url: string | URL, context: ScramjetContext) {\n\tif (url instanceof URL) url = url.toString();\n\t// remove query string\n\t// if (url.includes(\"?\")) {\n\t// \turl = url.split(\"?\")[0];\n\t// }\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\t//TODO\n\t\treturn url;\n\t} else if (url.startsWith(\"blob:\")) {\n\t\t// realistically this shouldn't happen\n\t\treturn url;\n\t} else if (url.startsWith(context.prefix.href + \"blob:\")) {\n\t\treturn url.substring(context.prefix.href.length);\n\t} else if (url.startsWith(context.prefix.href + \"data:\")) {\n\t\treturn url.substring(context.prefix.href.length);\n\t} else if (url.startsWith(\"mailto:\") || url.startsWith(\"about:\")) {\n\t\treturn url;\n\t} else {\n\t\tconst realUrl = tryCanParseURL(url);\n\t\tif (!realUrl) return url;\n\t\tconst decodedHash = context.interface.codecDecode(realUrl.hash.slice(1));\n\t\tconst realHash = decodedHash ? \"#\" + decodedHash : \"\";\n\t\trealUrl.hash = \"\";\n\n\t\treturn context.interface.codecDecode(\n\t\t\trealUrl.href.slice(context.prefix.href.length) + realHash\n\t\t);\n\t}\n}\n","// i am a cat. i like to be petted. i like to be fed. i like to be\nimport { initSync, Rewriter } from \"../../../rewriter/wasm/out/wasm.js\";\nimport type { JsRewriterOutput } from \"../../../rewriter/wasm/out/wasm.js\";\nimport { flagEnabled, ScramjetContext } from \"@/shared\";\n\nexport type { JsRewriterOutput, Rewriter };\n\nimport { rewriteUrl, URLMeta } from \"@rewriters/url\";\nimport { htmlRules } from \"@/shared/htmlRules\";\nimport { rewriteCss } from \"@rewriters/css\";\nimport { rewriteJs } from \"@rewriters/js\";\nimport { CookieJar } from \"@/shared/cookie\";\n\nlet wasm_u8: Uint8Array;\nexport function setWasm(u8: Uint8Array | ArrayBuffer) {\n\twasm_u8 = u8 instanceof Uint8Array ? u8 : new Uint8Array(u8);\n}\n\nexport const textDecoder = new TextDecoder();\nlet MAGIC = \"\\0asm\".split(\"\").map((x) => x.charCodeAt(0));\n\nfunction initWasm() {\n\tif (!(wasm_u8 instanceof Uint8Array))\n\t\tthrow new Error(\"rewriter wasm not found (was setWasm called?)\");\n\n\tif (![...wasm_u8.slice(0, 4)].every((x, i) => x === MAGIC[i]))\n\t\tthrow new Error(\n\t\t\t\"rewriter wasm does not have wasm magic (was it fetched correctly?)\\nrewriter wasm contents: \" +\n\t\t\t\ttextDecoder.decode(wasm_u8)\n\t\t);\n\n\tinitSync({\n\t\tmodule: new WebAssembly.Module(wasm_u8 as unknown as BufferSource),\n\t});\n}\n\nlet rewriters = [];\nexport function getRewriter(\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n): [Rewriter, () => void] {\n\tinitWasm();\n\n\tlet obj: { rewriter: Rewriter; inUse: boolean };\n\tlet index = rewriters.findIndex((x) => !x.inUse);\n\tlet len = rewriters.length;\n\n\tif (index === -1) {\n\t\tif (flagEnabled(\"rewriterLogs\", context, meta.base))\n\t\t\tconsole.log(`creating new rewriter, ${len} rewriters made already`);\n\n\t\tlet rewriter = new Rewriter();\n\t\tobj = { rewriter, inUse: false };\n\t\trewriters.push(obj);\n\t} else {\n\t\tobj = rewriters[index];\n\t}\n\tobj.inUse = true;\n\n\treturn [obj.rewriter, () => (obj.inUse = false)];\n}\n","import { ScramjetContext } from \"@/shared\";\nimport { rewriteJs } from \"@rewriters/js\";\nimport { URLMeta } from \"@rewriters/url\";\n\nexport function rewriteWorkers(\n\tcontext: ScramjetContext,\n\tjs: string | Uint8Array,\n\ttype: \"module\" | \"regular\",\n\turl: string,\n\tmeta: URLMeta\n) {\n\tconst module = type === \"module\";\n\tconst script = (script: string) => {\n\t\tif (module) {\n\t\t\treturn `import \"${script}\"\\n`;\n\t\t}\n\t\treturn `importScripts(\"${script}\");\\n`;\n\t};\n\tlet str = context.interface.getWorkerInjectScripts(meta, type, script);\n\tlet rewritten = rewriteJs(js, url, context, meta, module);\n\tif (rewritten instanceof Uint8Array) {\n\t\trewritten = new TextDecoder().decode(rewritten);\n\t}\n\n\tstr += rewritten;\n\n\treturn str;\n}\n","/**\n * @fileoverview\n * See `types.ts` for context on these symbols.\n */\n\nexport const SCRAMJETCLIENTNAME = \"scramjet client global\";\nexport const SCRAMJETCLIENT = Symbol.for(SCRAMJETCLIENTNAME);\nexport const SCRAMJETFRAME = Symbol.for(\"scramjet frame handle\");\n","const WebSocketFields = {\n CLOSED: WebSocket.CLOSED,\n CONNECTING: WebSocket.CONNECTING,\n OPEN: WebSocket.OPEN,\n};\nclass BareCompatibleWebSocket extends EventTarget {\n transport;\n url;\n readyState = WebSocketFields.CONNECTING;\n extensions = \"\";\n protocol = \"\";\n _data;\n _close;\n constructor(remote, protocols, transport, requestHeaders) {\n super();\n this.transport = transport;\n this.url = remote.toString();\n if (!requestHeaders) {\n requestHeaders = [];\n }\n if (!protocols) {\n protocols = [];\n }\n if (typeof protocols === \"string\") {\n protocols = [protocols];\n }\n const onopen = (protocol, extensions) => {\n this.protocol = protocol;\n this.extensions = extensions;\n this.readyState = WebSocketFields.OPEN;\n const event = new Event(\"open\");\n this.dispatchEvent(event);\n };\n const onmessage = async (payload) => {\n const event = new MessageEvent(\"message\", { data: payload });\n this.dispatchEvent(event);\n };\n const onclose = (code, reason) => {\n this.readyState = WebSocketFields.CLOSED;\n const event = new CloseEvent(\"close\", { code, reason });\n this.dispatchEvent(event);\n };\n const onerror = () => {\n this.readyState = WebSocketFields.CLOSED;\n const event = new Event(\"error\");\n this.dispatchEvent(event);\n };\n (async () => {\n if (!transport.ready) {\n await transport.init();\n }\n const [_data, _close] = transport.connect(new URL(remote), protocols, requestHeaders, onopen, onmessage, onclose, onerror);\n this._data = _data;\n this._close = _close;\n })();\n }\n async send(data) {\n if (!this.transport.ready) {\n await this.transport.init();\n }\n if (this.readyState === WebSocketFields.CONNECTING) {\n throw new DOMException(\"Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.\");\n }\n // we can't check typeof Uint8Array here directly as it may come from another realm\n if (typeof data === \"object\" && \"buffer\" in data && data.buffer) {\n let _data = data;\n // this is neccesary in case the buffer is a slice of a larger array\n // in which case you risk edge cases such as sending an entire wasm memory buffer over the websocket\n data = _data.buffer.slice(_data.byteOffset, _data.byteOffset + _data.byteLength);\n }\n this._data(data);\n }\n close(code, reason) {\n this._close(code, reason);\n }\n}\n\nconst validChars = \"!#$%&'*+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz|~\";\nfunction validProtocol(protocol) {\n for (let i = 0; i < protocol.length; i++) {\n const char = protocol[i];\n if (!validChars.includes(char)) {\n return false;\n }\n }\n return true;\n}\nconst wsProtocols = [\"ws:\", \"wss:\"];\nconst statusEmpty = [101, 204, 205, 304];\nconst statusRedirect = [301, 302, 303, 307, 308];\nconst nativeFetch = fetch;\nfunction headersObjectToEntries(headers) {\n return [...headers];\n}\n/**\n * A Response with additional properties.\n */\nclass BareResponse extends Response {\n url;\n rawHeaders;\n redirected = false;\n static fromTransferrableResponse(resp, url) {\n const response = new BareResponse(statusEmpty.includes(resp.status) ? undefined : resp.body, {\n headers: new Headers(resp.headers),\n status: resp.status,\n statusText: resp.statusText,\n });\n response.url = url;\n response.redirected =\n resp.status >= 300 &&\n resp.status < 400 &&\n resp.headers[\"location\"] !== undefined;\n response.rawHeaders = resp.headers;\n return response;\n }\n static fromNativeResponse(resp) {\n let body = statusEmpty.includes(resp.status) ? undefined : resp.body;\n const response = new BareResponse(body, {\n headers: resp.headers,\n status: resp.status,\n statusText: resp.statusText,\n });\n response.url = resp.url;\n response.rawHeaders = headersObjectToEntries(resp.headers);\n response.redirected = resp.redirected;\n return response;\n }\n}\nconst defaultMaxRedirects = 20;\nclass BareCompatibleClient {\n transport;\n /**\n * Create a BareCompatibleClient using the provided transport. Calls to fetch and connect will wait for an implementation to be ready.\n */\n constructor(transport) {\n this.transport = transport;\n }\n createWebSocket(remote, protocols = [], requestHeaders) {\n try {\n remote = new URL(remote);\n }\n catch (err) {\n throw new DOMException(`Faiiled to construct 'WebSocket': The URL '${remote}' is invalid.`);\n }\n if (!wsProtocols.includes(remote.protocol))\n throw new DOMException(`Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or 'wss'. '${remote.protocol}' is not allowed.`);\n if (!Array.isArray(protocols))\n protocols = [protocols];\n protocols = protocols.map(String);\n for (const proto of protocols)\n if (!validProtocol(proto))\n throw new DOMException(`Failed to construct 'WebSocket': The subprotocol '${proto}' is invalid.`);\n requestHeaders = requestHeaders || [];\n const socket = new BareCompatibleWebSocket(remote, protocols, this.transport, requestHeaders);\n return socket;\n }\n async fetch(url, init) {\n if (!this.transport.ready) {\n await this.transport.init();\n }\n let maxRedirects = init?.maxRedirects || defaultMaxRedirects;\n const body = init?.body;\n const headers = init?.headers || [];\n const method = init?.method || \"GET\";\n const redirect = init?.redirect || \"follow\";\n let urlO = new URL(url);\n if (urlO.protocol.startsWith(\"blob:\")) {\n const response = await nativeFetch(urlO);\n return BareResponse.fromNativeResponse(response);\n }\n for (let i = 0;; i++) {\n const resp = await this.transport.request(urlO, method, body, headers, undefined);\n const bareresponse = BareResponse.fromTransferrableResponse(resp, urlO.toString());\n if (statusRedirect.includes(bareresponse.status)) {\n switch (redirect) {\n case \"follow\": {\n const location = bareresponse.headers.get(\"location\");\n if (maxRedirects > i && location !== null) {\n urlO = new URL(location, urlO);\n continue;\n }\n else\n throw new TypeError(\"Failed to fetch\");\n }\n case \"error\":\n throw new TypeError(\"Failed to fetch\");\n case \"manual\":\n return bareresponse;\n }\n }\n else {\n return bareresponse;\n }\n }\n }\n}\n\nexport { BareCompatibleClient, BareCompatibleWebSocket, BareResponse };\n//# sourceMappingURL=index.mjs.map\n","export const elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n","/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \"&quot;\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML\n : escapeAttribute;\n return Object.keys(attributes)\n .map((key) => {\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return `${key}=\"${encode(value)}\"`;\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n const nodes = \"length\" in node ? node : [node];\n let output = \"\";\n for (let i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nconst foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = { ...opts, xmlMode: false };\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = { ...opts, xmlMode: \"foreign\" };\n }\n let tag = `<${elem.name}`;\n const attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += ` ${attribs}`;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += `</${elem.name}>`;\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML(data)\n : escapeText(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n return `<!--${elem.data}-->`;\n}\n","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","import { hasChildren } from \"domhandler\";\n/**\n * Given an array of nodes, remove any member that is contained by another\n * member.\n *\n * @category Helpers\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't contained by other nodes.\n */\nexport function removeSubsets(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\n/**\n * @category Helpers\n * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}\n */\nexport var DocumentPosition;\n(function (DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})(DocumentPosition || (DocumentPosition = {}));\n/**\n * Compare the position of one node against another node in any other document,\n * returning a bitmask with the values from {@link DocumentPosition}.\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent.\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @category Helpers\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nexport function compareDocumentPosition(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n let current = hasChildren(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = hasChildren(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return DocumentPosition.DISCONNECTED;\n }\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;\n }\n return DocumentPosition.FOLLOWING;\n }\n if (sharedParent === nodeA) {\n return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;\n }\n return DocumentPosition.PRECEDING;\n}\n/**\n * Sort an array of nodes based on their relative position in the document,\n * removing any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @category Helpers\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nexport function uniqueSort(nodes) {\n nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1));\n nodes.sort((a, b) => {\n const relative = compareDocumentPosition(a, b);\n if (relative & DocumentPosition.PRECEDING) {\n return -1;\n }\n else if (relative & DocumentPosition.FOLLOWING) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\n//# sourceMappingURL=helpers.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \"&quot;\"],\n [38, \"&amp;\"],\n [39, \"&apos;\"],\n [60, \"&lt;\"],\n [62, \"&gt;\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `&#xfc;`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \"&quot;\"],\n [38, \"&amp;\"],\n [160, \"&nbsp;\"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&amp;\"],\n [60, \"&lt;\"],\n [62, \"&gt;\"],\n [160, \"&nbsp;\"],\n]));\n//# sourceMappingURL=escape.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n */\nexport function decode(data, options = EntityLevel.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return decodeHTML(data, mode);\n }\n return decodeXML(data);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(data, options = EntityLevel.XML) {\n var _a;\n const opts = typeof options === \"number\" ? { level: options } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = DecodingMode.Strict);\n return decode(data, opts);\n}\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param options Encoding options.\n */\nexport function encode(data, options = EntityLevel.XML) {\n const opts = typeof options === \"number\" ? { level: options } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === EncodingMode.UTF8)\n return escapeUTF8(data);\n if (opts.mode === EncodingMode.Attribute)\n return escapeAttribute(data);\n if (opts.mode === EncodingMode.Text)\n return escapeText(data);\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === EncodingMode.ASCII) {\n return encodeNonAsciiHTML(data);\n }\n return encodeHTML(data);\n }\n // ASCII and Extensive are equivalent\n return encodeXML(data);\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 65535) {\n codePoint -= 65536;\n output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n codePoint = 56320 | (codePoint & 1023);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 55296 && codePoint <= 57343) ||\n codePoint > 1114111) {\n return 65533;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(input, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (input.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(input, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(input, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(input, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(input, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(input, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(input, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(input, offset) {\n if (offset >= input.length) {\n return -1;\n }\n if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(input, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(input, offset);\n }\n addToNumericResult(input, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n Number.parseInt(input.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(input, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < input.length; offset++, this.excess++) {\n const char = input.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let returnValue = \"\";\n const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n return function decodeWithTrie(input, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n returnValue += input.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const length = decoder.write(input, \n // Skip the \"&\"\n offset + 1);\n if (length < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + length;\n // If `length` is 0, skip the current `&` and continue.\n offset = length === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = returnValue + input.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n returnValue = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIndex + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIndex;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midValue = decodeTree[mid];\n if (midValue < char) {\n lo = mid + 1;\n }\n else if (midValue > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","// Generated using scripts/write-decode-map.ts\nexport const htmlDecodeTree = /* #__PURE__ */ new Uint16Array(\n// prettier-ignore\n/* #__PURE__ */ \"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport const xmlDecodeTree = /* #__PURE__ */ new Uint16Array(\n// prettier-ignore\n/* #__PURE__ */ \"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","import Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/decode\";\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\nconst reNameEnd = /\\s|\\//;\nexport class Parser {\n constructor(cbs, options = {}) {\n var _a, _b, _c, _d, _e, _f;\n this.options = options;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.htmlMode = !this.options.xmlMode;\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : this.htmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;\n this.recognizeSelfClosing =\n (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;\n this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this);\n this.foreignContext = [!this.htmlMode];\n (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);\n }\n // Tokenizer event handlers\n /** @internal */\n ontext(start, endIndex) {\n var _a, _b;\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n this.startIndex = endIndex;\n }\n /** @internal */\n ontextentity(cp, endIndex) {\n var _a, _b;\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n this.startIndex = endIndex;\n }\n /**\n * Checks if the current tag is a void element. Override this if you want\n * to specify your own additional void elements.\n */\n isVoidElement(name) {\n return this.htmlMode && voidElements.has(name);\n }\n /** @internal */\n onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.emitOpenTag(name);\n }\n emitOpenTag(name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n const impliesClose = this.htmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {\n const element = this.stack.shift();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.unshift(name);\n if (this.htmlMode) {\n if (foreignContextElements.has(name)) {\n this.foreignContext.unshift(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.unshift(false);\n }\n }\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n }\n endOpenTag(isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n }\n /** @internal */\n onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onclosetag(start, endIndex) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (this.htmlMode &&\n (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name))) {\n this.foreignContext.shift();\n }\n if (!this.isVoidElement(name)) {\n const pos = this.stack.indexOf(name);\n if (pos !== -1) {\n for (let index = 0; index <= pos; index++) {\n const element = this.stack.shift();\n // We know the stack has sufficient elements.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, index !== pos);\n }\n }\n else if (this.htmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (this.htmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\");\n (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", {}, true);\n (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.recognizeSelfClosing || this.foreignContext[0]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n closeCurrentTag(isOpenImplied) {\n var _a, _b;\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[0] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n this.stack.shift();\n }\n }\n /** @internal */\n onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n /** @internal */\n onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /** @internal */\n onattribentity(cp) {\n this.attribvalue += fromCodePoint(cp);\n }\n /** @internal */\n onattribend(quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const index = value.search(reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n }\n /** @internal */\n ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncomment(start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncdata(start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (!this.htmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onend() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let index = 0; index < this.stack.length; index++) {\n this.cbs.onclosetag(this.stack[index], true);\n }\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n reset() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this.buffers.length = 0;\n this.foreignContext.length = 0;\n this.foreignContext.unshift(!this.htmlMode);\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n write(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n end(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */\n resume() {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n }\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n parseChunk(chunk) {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n done(chunk) {\n this.end(chunk);\n }\n}\n//# sourceMappingURL=Parser.js.map","import { EntityDecoder, DecodingMode, htmlDecodeTree, xmlDecodeTree, } from \"entities/decode\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n State[State[\"Text\"] = 1] = \"Text\";\n State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n State[State[\"InTagName\"] = 3] = \"InTagName\";\n State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n // Attributes\n State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n // Declarations\n State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n // Processing instructions\n State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n // Comments & CDATA\n State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n State[State[\"InSpecialComment\"] = 20] = \"InSpecialComment\";\n State[State[\"InCommentLike\"] = 21] = \"InCommentLike\";\n // Special tags\n State[State[\"BeforeSpecialS\"] = 22] = \"BeforeSpecialS\";\n State[State[\"BeforeSpecialT\"] = 23] = \"BeforeSpecialT\";\n State[State[\"SpecialStartSequence\"] = 24] = \"SpecialStartSequence\";\n State[State[\"InSpecialTag\"] = 25] = \"InSpecialTag\";\n State[State[\"InEntity\"] = 26] = \"InEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n return (c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isASCIIAlpha(c) {\n return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\nexport var QuoteType;\n(function (QuoteType) {\n QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType || (QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), // CDATA[\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), // ]]>\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]), // `-->`\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // `</script`\n StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]), // `</style`\n TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`\n TextareaEnd: new Uint8Array([\n 0x3c, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61,\n ]), // `</textarea`\n XmpEnd: new Uint8Array([0x3c, 0x2f, 0x78, 0x6d, 0x70]), // `</xmp`\n};\nexport default class Tokenizer {\n constructor({ xmlMode = false, decodeEntities = true, }, cbs) {\n this.cbs = cbs;\n /** The current state the tokenizer is in. */\n this.state = State.Text;\n /** The read buffer. */\n this.buffer = \"\";\n /** The beginning of the section that is currently being read. */\n this.sectionStart = 0;\n /** The index within the buffer that we are currently looking at. */\n this.index = 0;\n /** The start of the last entity. */\n this.entityStart = 0;\n /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n this.baseState = State.Text;\n /** For special parsing behavior inside of script and style tags. */\n this.isSpecial = false;\n /** Indicates whether the tokenizer has been paused. */\n this.running = true;\n /** The offset of the current buffer. */\n this.offset = 0;\n this.currentSequence = undefined;\n this.sequenceIndex = 0;\n this.xmlMode = xmlMode;\n this.decodeEntities = decodeEntities;\n this.entityDecoder = new EntityDecoder(xmlMode ? xmlDecodeTree : htmlDecodeTree, (cp, consumed) => this.emitCodePoint(cp, consumed));\n }\n reset() {\n this.state = State.Text;\n this.buffer = \"\";\n this.sectionStart = 0;\n this.index = 0;\n this.baseState = State.Text;\n this.currentSequence = undefined;\n this.running = true;\n this.offset = 0;\n }\n write(chunk) {\n this.offset += this.buffer.length;\n this.buffer = chunk;\n this.parse();\n }\n end() {\n if (this.running)\n this.finish();\n }\n pause() {\n this.running = false;\n }\n resume() {\n this.running = true;\n if (this.index < this.buffer.length + this.offset) {\n this.parse();\n }\n }\n stateText(c) {\n if (c === CharCodes.Lt ||\n (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {\n if (this.index > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateSpecialStartSequence(c) {\n const isEnd = this.sequenceIndex === this.currentSequence.length;\n const isMatch = isEnd\n ? // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n : // Otherwise, do a case-insensitive comparison\n (c | 0x20) === this.currentSequence[this.sequenceIndex];\n if (!isMatch) {\n this.isSpecial = false;\n }\n else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n }\n /** Look for an end tag. For <title> tags, also decode entities. */\n stateInSpecialTag(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n const endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n this.sequenceIndex = 0;\n }\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd) {\n // We have to parse entities in <title> tags.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of <title> tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n }\n else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (this.xmlMode) {\n this.state = State.InTagName;\n }\n else if (lower === Sequences.ScriptEnd[2]) {\n this.state = State.BeforeSpecialS;\n }\n else if (lower === Sequences.TitleEnd[2] ||\n lower === Sequences.XmpEnd[2]) {\n this.state = State.BeforeSpecialT;\n }\n else {\n this.state = State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = this.index;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index + 1);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. <!-->)\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeSpecialT(c) {\n const lower = c | 0x20;\n switch (lower) {\n case Sequences.TitleEnd[3]: {\n this.startSpecial(Sequences.TitleEnd, 4);\n break;\n }\n case Sequences.TextareaEnd[3]: {\n this.startSpecial(Sequences.TextareaEnd, 4);\n break;\n }\n case Sequences.XmpEnd[3]: {\n this.startSpecial(Sequences.XmpEnd, 4);\n break;\n }\n default: {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n }\n startEntity() {\n this.baseState = this.state;\n this.state = State.InEntity;\n this.entityStart = this.index;\n this.entityDecoder.startEntity(this.xmlMode\n ? DecodingMode.Strict\n : this.baseState === State.Text ||\n this.baseState === State.InSpecialTag\n ? DecodingMode.Legacy\n : DecodingMode.Attribute);\n }\n stateInEntity() {\n const length = this.entityDecoder.write(this.buffer, this.index - this.offset);\n // If `length` is positive, we are done with the entity.\n if (length >= 0) {\n this.state = this.baseState;\n if (length === 0) {\n this.index = this.entityStart;\n }\n }\n else {\n // Mark buffer as consumed.\n this.index = this.offset + this.buffer.length - 1;\n }\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.BeforeSpecialT: {\n this.stateBeforeSpecialT(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InEntity: {\n this.stateInEntity();\n break;\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InEntity) {\n this.entityDecoder.end();\n this.state = this.baseState;\n }\n this.handleTrailingData();\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n // If there is no remaining data, we are done.\n if (this.sectionStart >= endIndex) {\n return;\n }\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitCodePoint(cp, consumed) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n if (this.sectionStart < this.entityStart) {\n this.cbs.onattribdata(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.onattribentity(cp);\n }\n else {\n if (this.sectionStart < this.entityStart) {\n this.cbs.ontext(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.ontextentity(cp, this.sectionStart);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map","\nexport function scramtag() {\n return (\"\"+1e10).replace(/[018]/g,\n c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n );\n}\n","import { scramtag } from './snippets/wasm-4b0f351a8e6eeb46/inline0.js';\n\nlet wasm;\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n }\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nconst RewriterFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_rewriter_free(ptr >>> 0, 1));\n\nexport class Rewriter {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n RewriterFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_rewriter_free(ptr, 0);\n }\n /**\n * @param {object} jsconfig\n * @param {object} jsflags\n * @param {object} encode_url\n * @param {string} js\n * @param {string} base\n * @param {string} url\n * @param {boolean} module\n * @returns {JsRewriterOutput}\n */\n rewrite_js(jsconfig, jsflags, encode_url, js, base, url, module) {\n const ptr0 = passStringToWasm0(js, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(base, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewriter_rewrite_js(this.__wbg_ptr, jsconfig, jsflags, encode_url, ptr0, len0, ptr1, len1, ptr2, len2, module);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {object} jsconfig\n * @param {object} jsflags\n * @param {object} encode_url\n * @param {Uint8Array} js\n * @param {string} base\n * @param {string} url\n * @param {boolean} module\n * @returns {JsRewriterOutput}\n */\n rewrite_js_bytes(jsconfig, jsflags, encode_url, js, base, url, module) {\n const ptr0 = passArray8ToWasm0(js, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(base, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewriter_rewrite_js_bytes(this.__wbg_ptr, jsconfig, jsflags, encode_url, ptr0, len0, ptr1, len1, ptr2, len2, module);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n constructor() {\n const ret = wasm.rewriter_new();\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0] >>> 0;\n RewriterFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n}\nif (Symbol.dispose) Rewriter.prototype[Symbol.dispose] = Rewriter.prototype.free;\n\nconst EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']);\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n const validResponse = module.ok && EXPECTED_RESPONSE_TYPES.has(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_Error_e83987f665cf5504 = function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg___wbindgen_boolean_get_6d5a1ee65bab5f68 = function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n };\n imports.wbg.__wbg___wbindgen_is_function_ee8a6c5833c90377 = function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n };\n imports.wbg.__wbg___wbindgen_string_get_e4f06c90489ad01b = function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg___wbindgen_throw_b855445ff6a94295 = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg_call_525440f72fbfc0ea = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.call(arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_get_efcb449f58ec27c2 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_1acc0b6eea89d040 = function() {\n const ret = new Object();\n return ret;\n };\n imports.wbg.__wbg_new_e17d9f43105b08be = function() {\n const ret = new Array();\n return ret;\n };\n imports.wbg.__wbg_new_from_slice_92f4d78ca282a2d2 = function(arg0, arg1) {\n const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_new_with_base_058e1f248f19b984 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = new URL(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_scramtag_3a255d78b157986d = function(arg0) {\n const ret = scramtag();\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_set_c2abbebe8b9ebee1 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_toString_7da7c8dbec78fcb8 = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbg_toString_8eec07f6f4c057e4 = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbindgen_cast_2241b6af4c4b2941 = function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n\n return imports;\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('wasm_bg.wasm', \"\");\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"names":["defaultConfig","defaultConfigDev","Object","decodeURIComponent","e","console","Date","parseInt","s","Array","Error","ScramjetClient","Map","global","init","SCRAMJETCLIENT","iswindow","b","findBox","seen","i","SingletonBox","BareCompatibleClient","createWrapFn","Proxy","target","prop","split","realProp","realTarget","a","original","Reflect","args","that","client","value","base","url","frag","undefined","URL","currentWin","frame","curclient","parentWin","parentClient","createLocationProxy","sframe","SCRAMJETFRAME","currentwin","currentFrame","currentclient","context","modules","key","module","aorder","ev","NavigateEvent","name","handler","n","debugname","applyFn","constructFn","h","fnName","windowName","location","sourceURL","construct","apply","constructor","newTarget","returnValue","earlyreturn","ctx","r","fn","pst","err","getOwnPropertyDescriptorHandler","descriptor","oldDescriptor","v","desc","rewriteUrl","unrewriteUrl","flag","flagEnabled","_self","map","proxy","_receiver","namespace","NamedNodeMap","isNaN","Number","keys","self","rewriteCss","unrewriteCss","style","CSSStyleDeclaration","tostring","String","rewriteHtml","encoder","TextEncoder","bytesToBase64","bytes","btoa","byte","attrObject","urlinterfaces","originalhrefs","attr","element","href","node","Document","attrib","cleaned","attrNames","ruleList","htmlRules","rule","ret","_ctx","_namespace","val","newval","rewriteJs","scriptSource","atob","unrewriteHtml","realwin","Function","callerGlobalThisProxied","callerClient","UrlChangeEvent","f","win","entries","entry","file","index","property","attributes","localStorageProxy","sessionStorageProxy","globalThis","window","Window","isworker","issw","isdedicated","isshared","Event","ScramjetContextEvent","Location","fakeLocation","descriptorSource","native","urlchangeev","log","_v","rewriteBlob","setTimeout","unrewriteBlob","del","Navigator","enabled","argdbg","arg","recurse","Symbol","ar","warn","t","closure","error","stack","newstack","lines","line","l","_value","js","indirectEval","strict","indirection","realOnEvent","handlers","wraplistener","listener","realEvent","type","reciever","origlistener","proxylistener","arr","targets","rewriteFunction","stringifiedFunction","content","RawFunction","RawAsyncFunction","RawGeneratorFunction","RawAsyncGeneratorFunction","boundimport","resolved","metaobj","rootPromise","root","directory","POLLUTANT","wrappedPostMessage","toproxy","obj","pollution","headers","newHeaders","Headers","unrewriteLinkHeader","socketmap","WeakMap","socketstreammap","fakeWebSocket","EventTarget","barews","state","fakeEventSend","fakeev","CloseEvent","payload","Blob","ArrayBuffer","MessageEvent","ws","openResolver","closeResolver","openRejector","Promise","resolve","reject","ReadableStream","controller","WritableStream","chunk","worker","ARGS","HEADERS","sab","SharedArrayBuffer","view","DataView","now","performance","status","headersLength","headersab","Uint8Array","TextDecoder","bodyLength","bodyab","body","parser","DOMParser","header","match","re","RegExp","headerstring","SCRAMTAG","buf","tag","before","registerRewrites","sourcemap","decoder","rewrites","rewritelen","cursor","start","size","end","oldLen","oldStr","dbg","doUnrewrite","stringified","extracted","extractTag","tagOffset","tagStart","fnStart","fnEnd","getEnd","rewrite","fnrewrites","newString","lastpos","identifier","current","test","order","str","lhs","op","rhs","ownerclient","ctors","ctor","ScramjetFetchHandler","request","doHandleFetch","response","responseBody","parsed","parseRequest","handleBlobOrDataUrlFetch","newheaders","rewriteRequestHeaders","clientURL","cookies","req","ScramjetRequestEvent","resp","BareResponse","handleCookies","responseHeaders","rewriteHeaders","isRedirect","rewriteBody","ScramjetResponseEvent","topFrameName","parentFrameName","strippedUrl","extraParams","scriptType","param","meta","dataUrl","ScramjetHeaders","rawHeaders","promise","SEC_HEADERS","Set","URL_HEADERS","cspHeader","urlHeader","rewrittenUrl","link","rewritten","referrerUrl","domhandler","evt","ScramjetHTMLPreRewriteEvent","ScramjetHTMLPostRewriteEvent","rewriteWorkers","logfuncs","severity","message","old","_","fmt","Math","CookieJar","parse","cookie","domain","sameSite","id","fromJs","validCookies","JSON","lk","raw","k","newh","rewriteSrcset","regex","partialflags","versionInfo","VERSION","COMMITHASH","BUILDDATE","css","handleCss","encodedUrl","importStatement","firstQuote","endQuote","html","fromTop","preRewrite","postRewrite","rewriteHtmlInner","htmlRoot","headElement","bodyElement","DomHandler","dom","Parser","traverseParsedHtml","sel","eventAttributes","json","Comment","contentArray","childNode","isQuirky","detectQuirks","child","ElementType","injectScripts","src","Element","render","traverse","srcset","rewrittenSources","sources","source","descriptors","rewriteJsInner","rewriteJsWasm","input","rewriter","getRewriter","flagsobj","out","scramtag","errors","textDecoder","res","newjs","pushmap","sourcemapfn","strictMode","tryCanParseURL","origin","blob","realUrl","encodedHash","decodedHash","wasm_u8","setWasm","u8","MAGIC","x","rewriters","initSync","WebAssembly","len","Rewriter","script","SCRAMJETCLIENTNAME","WebSocket","o","DOMException","fetch","Response","u","TypeError","arguments","Uint16Array","crypto","FinalizationRegistry","Request"],"mappings":"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,CAAwB,CACxBkS,CAAa,EAgBb,OAAOgF,AAbkBC,AADTF,EAAO,KAAK,CAAC,QAAQ,GAAG,CAAC,AAACJ,GAAQA,EAAI,IAAI,IACzB,GAAG,CAAC,AAACO,IAGrC,GAAM,CAACnY,EAAK,GAAGoY,EAAY,CAAGD,EAAO,KAAK,CAAC,OAGrCxE,EAAe1Q,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWjD,EAAI,IAAI,GAAIe,EAASkS,GAErD,OAAOmF,EAAY,MAAM,CAAG,EACzB,CAAC,EAAEzE,EAAa,CAAC,EAAEyE,EAAY,IAAI,CAAC,KAAK,CAAC,CAC1CzE,CACJ,GAEwB,IAAI,CAAC,KAC9B,CAeA,IAAMuD,EAAkB,CACvB,mBACA,UACA,gBACA,gBACA,iBACA,SACA,WACA,YACA,mBACA,WACA,UACA,UACA,qCACA,gBACA,gBACA,oBACA,cACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,aACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,cACA,eACA,eACA,cACA,aACA,cACA,YACA,eACA,UACA,SACA,YACA,aACA,eACA,UACA,WACA,WACA,4BACA,WACA,YACA,WACA,eACA,YACA,WACA,YACA,eACA,WACA,iBACA,YACA,uBACA,6BACA,yBACA,wBACA,UACA,aACA,sBACA,uBACA,gBACA,gBACA,qBACA,cACA,kBACA,gBACA,eACA,iBACA,iBACA,gBACA,oBACA,iBACA,uBACA,mBACA,kBACA,oBACA,kBACA,qBACA,SACA,QACA,UACA,cACA,qBACA,uBACA,A,+VCvWM,SAASmB,EACf9O,CAAuB,CACvBvJ,CAAkB,CAClBe,CAAwB,CACxBkS,CAAa,CACb/R,EAAS,EAAK,EAEd,OAAOoX,AA9ER,SACCC,CAA0B,CAC1BJ,CAAqB,CACrBpX,CAAwB,CACxBkS,CAAa,CACb/R,CAAe,EAEf,GAAI,CAACsX,EAAU9S,EAAI,CAAG+S,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAY1X,EAASkS,GAEvCyF,EAAW,CAAC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"}