From 214716e28c2a6a59952544bce519ccce86bc83cd Mon Sep 17 00:00:00 2001
From: QuiteAFancyEmerald
<46467239+QuiteAFancyEmerald@users.noreply.github.com>
Date: Wed, 18 Dec 2024 23:22:45 -0800
Subject: [PATCH] feat: added scramjet. it is broken. but it will soon be not
---
run-command.mjs | 1 +
src/routes.mjs | 1 +
src/server.mjs | 17 +++
views/assets/js/common-16451543478.js | 18 ++-
views/assets/js/register-sw.js | 189 +++++++++++++------------
views/pages/proxnav/scramjet.html | 172 ++++++++++++++++++++++
views/pages/proxnav/ultraviolet.html | 2 +-
views/pages/surf.html | 1 +
views/scram/scramjet.client.js | 15 ++
views/scram/scramjet.client.js.map | 1 +
views/scram/scramjet.controller.js | 11 ++
views/scram/scramjet.controller.js.map | 1 +
views/scram/scramjet.shared.js | 30 ++++
views/scram/scramjet.shared.js.map | 1 +
views/scram/scramjet.sw.js | 26 ++++
views/scram/scramjet.sync.js | 2 +
views/scram/scramjet.sync.js.map | 1 +
views/scram/scramjet.wasm.js | 4 +
views/scram/scramjet.worker.js | 179 +++++++++++++++++++++++
views/scram/scramjet.worker.js.map | 1 +
20 files changed, 577 insertions(+), 96 deletions(-)
create mode 100644 views/pages/proxnav/scramjet.html
create mode 100644 views/scram/scramjet.client.js
create mode 100644 views/scram/scramjet.client.js.map
create mode 100644 views/scram/scramjet.controller.js
create mode 100644 views/scram/scramjet.controller.js.map
create mode 100644 views/scram/scramjet.shared.js
create mode 100644 views/scram/scramjet.shared.js.map
create mode 100644 views/scram/scramjet.sw.js
create mode 100644 views/scram/scramjet.sync.js
create mode 100644 views/scram/scramjet.sync.js.map
create mode 100644 views/scram/scramjet.wasm.js
create mode 100644 views/scram/scramjet.worker.js
create mode 100644 views/scram/scramjet.worker.js.map
diff --git a/run-command.mjs b/run-command.mjs
index d0668912..2cc16765 100644
--- a/run-command.mjs
+++ b/run-command.mjs
@@ -122,6 +122,7 @@ commands: for (let i = 2; i < process.argv.length; i++)
await build({
entryPoints: [
'./views/uv/**/*.js',
+ './views/scram/**/*.js',
'./views/assets/js/**/*.js',
'./views/assets/css/**/*.css',
],
diff --git a/src/routes.mjs b/src/routes.mjs
index ea806e9b..5c9e26da 100644
--- a/src/routes.mjs
+++ b/src/routes.mjs
@@ -36,6 +36,7 @@ NOT entire folders check src/routes.mjs and add it manually. */
'retro-games': 'pages/nav/emulibrary.html',
/* Proxies */
ultraviolet: 'pages/proxnav/ultraviolet.html',
+ scramjet: 'pages/proxnav/scramjet.html',
uverror: 'pages/proxnav/ultraviolet-error.html',
rammerhead: 'pages/proxnav/rammerhead.html',
/* Proxy Presets */
diff --git a/src/server.mjs b/src/server.mjs
index fc603d3a..edd090c1 100644
--- a/src/server.mjs
+++ b/src/server.mjs
@@ -203,6 +203,23 @@ app.register(fastifyStatic, {
decorateReply: false,
});
+// This combines scripts from the official scramjet repository with local scramjet scripts into
+// one directory path. Local versions of files override the official versions.
+app.register(fastifyStatic, {
+ root: [
+ fileURLToPath(
+ new URL(
+ // Use the pre-compiled, minified scripts instead, if enabled in config.
+ config.minifyScripts ? '../views/dist/scram' : '../views/scram',
+ import.meta.url
+ )
+ ),
+ uvPath,
+ ],
+ prefix: '/scram/',
+ decorateReply: false,
+});
+
// Register proxy paths to the website.
app.register(fastifyStatic, {
root: epoxyPath,
diff --git a/views/assets/js/common-16451543478.js b/views/assets/js/common-16451543478.js
index ec3ef52d..288105cc 100644
--- a/views/assets/js/common-16451543478.js
+++ b/views/assets/js/common-16451543478.js
@@ -63,7 +63,7 @@ const setAuthCookie = (s, lax) => {
// Search engine is set to Bing. Intended to work just like the usual
// bar at the top of a browser.
-const sx = 'bing.com' + '/search?q=',
+const sx = 'startpage.com/sp' + '/search?query=',
/*
omnibox = url =>
(url.indexOf("http")
@@ -107,6 +107,19 @@ const sx = 'bing.com' + '/search?q=',
url = search(url);
}
return url;
+ },
+ // Parse a URL to use with Scramjet.
+ sjUrl = (url) => {
+ try {
+ url =
+ location.origin +
+ "/scram/service/" +
+ search(url);
+ } catch (e) {
+ // This is for cases where the SJ scripts have not been loaded.
+ url = search(url);
+ }
+ return url;
};
/* RAMMERHEAD CONFIGURATION */
@@ -364,6 +377,8 @@ addEventListener('DOMContentLoaded', async () => {
// setAuthCookie("__cor_auth=1", false);
ultraviolet: urlHandler(uvUrl),
+ scramjet: urlHandler(sjUrl),
+
rammerhead: asyncUrlHandler(
async (url) => location.origin + (await RammerheadEncode(search(url)))
),
@@ -451,6 +466,7 @@ addEventListener('DOMContentLoaded', async () => {
};
prSet('pr-uv', 'ultraviolet');
+ prSet('pr-sj', 'scramjet');
prSet('pr-rh', 'rammerhead');
prSet('pr-yt', 'youtube');
prSet('pr-rh-dc', 'discordRH');
diff --git a/views/assets/js/register-sw.js b/views/assets/js/register-sw.js
index 851ec570..b2ae518f 100644
--- a/views/assets/js/register-sw.js
+++ b/views/assets/js/register-sw.js
@@ -1,98 +1,99 @@
// Encase everything in a new scope so that variables are not accidentally
// attached to the global scope.
(() => {
-const stockSW = '/uv/sw.js',
- blacklistSW = '/uv/sw-blacklist.js',
- swAllowedHostnames = ['localhost', '127.0.0.1'],
- connection = new BareMux.BareMuxConnection('/baremux/worker.js'),
- wispUrl =
- (location.protocol === 'https:' ? 'wss' : 'ws') +
- '://' +
- location.host +
- '/wisp/',
- // Proxy configuration
- proxyUrl = 'socks5h://localhost:9050', // Replace with your proxy URL
- transports = {
- epoxy: '/epoxy/index.mjs',
- libcurl: '/libcurl/index.mjs',
- bare: '/baremux/index.mjs',
- },
- // The following two variables are copied and pasted here from csel.js.
- readCookie = async (name) => {
- // Get the first cookie that has the same name.
- for (let cookie of document.cookie.split('; '))
- if (!cookie.indexOf(name + '='))
- // Return the cookie's stored content.
- return decodeURIComponent(cookie.slice(name.length + 1));
- },
- // Sets the default transport mode based on the browser. Firefox is not
- // supported by epoxy yet, which is why this is implemented.
- defaultMode = /(?:Chrome|AppleWebKit)\//.test(navigator.userAgent)
- ? 'epoxy'
- : 'libcurl';
+ const stockSW = '/uv/sw.js',
+ blacklistSW = '/uv/sw-blacklist.js',
+ swAllowedHostnames = ['localhost', '127.0.0.1'],
+ connection = new BareMux.BareMuxConnection('/baremux/worker.js'),
+ wispUrl =
+ (location.protocol === 'https:' ? 'wss' : 'ws') +
+ '://' +
+ location.host +
+ '/wisp/',
+ scramjet = new ScramjetController({
+ prefix: "/scram/service/",
+ files: {
+ wasm: "/scram/scramjet.wasm.js",
+ worker: "/scram/scramjet.worker.js",
+ client: "/scram/scramjet.client.js",
+ shared: "/scram/scramjet.shared.js",
+ sync: "/scram/scramjet.sync.js"
+ },
+ flags: {
+ serviceworkers: true,
+ syncxhr: true,
+ scramitize: true,
+ },
+ }),
+ // Proxy configuration
+ proxyUrl = 'socks5h://localhost:9050', // Replace with your TOR proxy URL (or any)
+ transports = {
+ epoxy: '/epoxy/index.mjs',
+ libcurl: '/libcurl/index.mjs',
+ bare: '/baremux/index.mjs',
+ },
+ // The following two variables are copied and pasted here from csel.js.
+ readCookie = async (name) => {
+ // Get the first cookie that has the same name.
+ for (let cookie of document.cookie.split('; '))
+ if (!cookie.indexOf(name + '='))
+ // Return the cookie's stored content.
+ return decodeURIComponent(cookie.slice(name.length + 1));
+ },
+ // Sets the default transport mode based on the browser. Firefox is not
+ // supported by epoxy yet, which is why this is implemented.
+ defaultMode = /(?:Chrome|AppleWebKit)\//.test(navigator.userAgent)
+ ? 'epoxy'
+ : 'libcurl';
+
+ transports.default = transports[defaultMode];
+
+ // Prevent the transports object from accidentally being edited.
+ Object.freeze(transports);
+
+ const registerSW = async () => {
+ if (!navigator.serviceWorker) {
+ if (
+ location.protocol !== 'https:' &&
+ !swAllowedHostnames.includes(location.hostname)
+ )
+ throw new Error('Service workers cannot be registered without https.');
+
+ throw new Error("Your browser doesn't support service workers.");
+ }
+
+ // If the user has changed the transport mode, use that over the default.
+ const transportMode =
+ transports[await readCookie('HBTransport')] || transports.default;
+ let transportOptions = { wisp: wispUrl };
+
+ // Only use Tor with the proxy if the user has enabled it in settings.
+ if ((await readCookie('HBUseOnion')) === 'true')
+ transportOptions.proxy = proxyUrl;
+
+ await connection.setTransport(transportMode, [transportOptions]);
+
+ /* Choose a service worker to register based on whether or not the user
+ * has adblocking enabled. If the user changes this setting, this script needs
+ * to be reloaded for this to update, such as by refreshing the page.
+ */
+ const registrations = await navigator.serviceWorker.getRegistrations(),
+ usedSW =
+ (await readCookie('HBHideAds')) !== 'false' ? blacklistSW : stockSW;
+
+ // Unregister a service worker if it isn't the one being used.
+ for (const registration of registrations)
+ if (
+ registration.active &&
+ new URL(registration.active.scriptURL).pathname !==
+ new URL(usedSW, location.origin).pathname
+ )
+ await registration.unregister();
+
+ await navigator.serviceWorker.register(usedSW);
+ };
-transports.default = transports[defaultMode];
-
-// Prevent the transports object from accidentally being edited.
-Object.freeze(transports);
-
-const registerSW = async () => {
- if (!navigator.serviceWorker) {
- if (
- location.protocol !== 'https:' &&
- !swAllowedHostnames.includes(location.hostname)
- )
- throw new Error('Service workers cannot be registered without https.');
-
- throw new Error("Your browser doesn't support service workers.");
- }
-
- // If the user has changed the transport mode, use that over the default.
- const transportMode =
- transports[await readCookie('HBTransport')] || transports.default;
- let transportOptions = { wisp: wispUrl };
-
- // Only use Tor with the proxy if the user has enabled it in settings.
- if ((await readCookie('HBUseOnion')) === 'true')
- transportOptions.proxy = proxyUrl;
-
- await connection.setTransport(transportMode, [transportOptions]);
-
- /* Choose a service worker to register based on whether or not the user
- * has ads enabled. If the user changes this setting, this script needs
- * to be reloaded for this to update, such as by refreshing the page.
- */
- const registrations = await navigator.serviceWorker.getRegistrations(),
- usedSW =
- (await readCookie('HBHideAds')) !== 'false' ? blacklistSW : stockSW;
-
- // Unregister a service worker if it isn't the one being used.
- for (const registration of registrations)
- if (
- registration.active &&
- new URL(registration.active.scriptURL).pathname !==
- new URL(usedSW, location.origin).pathname
- )
- await registration.unregister();
-
- await navigator.serviceWorker.register(usedSW);
-};
-
-/*
-
-Commented out upon discovering that a duplicate BareMux connection may be
-unnecessary; previously thought to have prevented issues with refreshing.
-
-async function setupTransportOnLoad() {
- const conn = new BareMux.BareMuxConnection("/baremux/worker.js");
- if (await conn.getTransport() !== "/baremux/module.js") {
- await conn.setTransport("/libcurl/index.mjs", [{ wisp: wispUrl, proxy: proxyUrl }]);
- }
-}
-
-// Run transport setup on page load.
-setupTransportOnLoad();
-*/
-
-registerSW();
-})();
+ // Register the service worker
+ registerSW();
+ scramjet.init("/scram/scramjet.sw.js");
+})();
\ No newline at end of file
diff --git a/views/pages/proxnav/scramjet.html b/views/pages/proxnav/scramjet.html
new file mode 100644
index 00000000..53977d76
--- /dev/null
+++ b/views/pages/proxnav/scramjet.html
@@ -0,0 +1,172 @@
+
+
+
+
-
Ultraviolet (Beta)
+
Ultraviolet
The highly innovative proxy of Titanium Network using technologies
such as service workers and sophisticated rewriting techniques with
diff --git a/views/pages/surf.html b/views/pages/surf.html
index 4783490a..cbc6e2bb 100644
--- a/views/pages/surf.html
+++ b/views/pages/surf.html
@@ -60,6 +60,7 @@
advanced security measures.
diff --git a/views/scram/scramjet.client.js b/views/scram/scramjet.client.js
new file mode 100644
index 00000000..7a215fed
--- /dev/null
+++ b/views/scram/scramjet.client.js
@@ -0,0 +1,15 @@
+(()=>{var e={5831:function(e,t,r){var n={"./":"6707","./client":"2712","./client.ts":"2712","./document":"5974","./document.ts":"5974","./dom/attr":"8959","./dom/attr.ts":"8959","./dom/beacon":"2863","./dom/beacon.ts":"2863","./dom/cookie":"1197","./dom/cookie.ts":"1197","./dom/css":"7339","./dom/css.ts":"7339","./dom/document":"1938","./dom/document.ts":"1938","./dom/element":"2439","./dom/element.ts":"2439","./dom/fontface":"6643","./dom/fontface.ts":"6643","./dom/history":"461","./dom/history.ts":"461","./dom/navigation":"2410","./dom/navigation.ts":"2410","./dom/open":"8805","./dom/open.ts":"8805","./dom/origin":"3261","./dom/origin.ts":"3261","./dom/performance":"4475","./dom/performance.ts":"4475","./dom/serviceworker":"5707","./dom/serviceworker.ts":"5707","./dom/storage":"9227","./dom/storage.ts":"9227","./events":"5008","./events.ts":"5008","./global":"2237","./global.ts":"2237","./helpers":"7932","./helpers.ts":"7932","./index":"6707","./index.ts":"6707","./location":"8971","./location.ts":"8971","./natives":"3498","./natives.ts":"3498","./shared/antiantidebugger":"8278","./shared/antiantidebugger.ts":"8278","./shared/blob":"9447","./shared/blob.ts":"9447","./shared/caches":"4169","./shared/caches.ts":"4169","./shared/err":"5146","./shared/err.ts":"5146","./shared/error":"7651","./shared/error.ts":"7651","./shared/eval":"4423","./shared/eval.ts":"4423","./shared/event":"8231","./shared/event.ts":"8231","./shared/function":"7636","./shared/function.ts":"7636","./shared/import":"4306","./shared/import.ts":"4306","./shared/indexeddb":"2930","./shared/indexeddb.ts":"2930","./shared/postmessage":"2625","./shared/postmessage.ts":"2625","./shared/realm":"6594","./shared/realm.ts":"6594","./shared/requests/eventsource":"2738","./shared/requests/eventsource.ts":"2738","./shared/requests/fetch":"106","./shared/requests/fetch.ts":"106","./shared/requests/websocket":"7219","./shared/requests/websocket.ts":"7219","./shared/requests/xmlhttprequest":"7481","./shared/requests/xmlhttprequest.ts":"7481","./shared/sourcemaps":"6321","./shared/sourcemaps.ts":"6321","./shared/trustedTypes":"1587","./shared/trustedTypes.ts":"1587","./shared/unproxy":"2370","./shared/unproxy.ts":"2370","./shared/worker":"8475","./shared/worker.ts":"8475","./shared/wrap":"7706","./shared/wrap.ts":"7706","./swruntime":"633","./swruntime.ts":"633","./worker/importScripts":"5425","./worker/importScripts.ts":"5425"};function o(e){return r(a(e))}function a(e){if(!r.o(n,e)){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}o.keys=function(){return Object.keys(n)},o.resolve=a,e.exports=o,o.id="5831"},2712:function(e,t,r){"use strict";r.r(t),r.d(t,{ScramjetClient:function(){return g}});var n=r(6707),o=r(9777),a=r(5974),s=r(2237),i=r(7932),l=r(8971),c=r(3498),u=r(4471),p=r(7706),f=r(5008);class g{global;documentProxy;globalProxy;locationProxy;serviceWorker;bare;natives;descriptors;wrapfn;cookieStore;eventcallbacks;meta;constructor(e){if(this.global=e,this.cookieStore=new u.hc,this.eventcallbacks=new Map,o.a in e)throw console.error("attempted to initialize a scramjet cl ient, but one is already loaded - this is very bad"),Error();this.serviceWorker=this.global.navigator.serviceWorker,n.iswindow&&(this.documentProxy=(0,a.createDocumentProxy)(this,e),e.document[o.a]=this),this.locationProxy=(0,l.createLocationProxy)(this,e),this.globalProxy=(0,s.createGlobalProxy)(this,e),this.wrapfn=(0,p.createWrapFn)(this,e),n.iswindow?this.bare=new u.dg:this.bare=new u.dg(new Promise(e=>{addEventListener("message",({data:t})=>{"object"==typeof t&&"$scramjet$type"in t&&"baremuxinit"===t.$scramjet$type&&e(t.port)})})),this.natives={store:new Proxy({},{get:(e,t)=>{if(t in e)return e[t];let r=t.split("."),n=r.pop(),o=r.reduce((e,t)=>e?.[t],this.global);if(!o)return;let a=Reflect.get(o,n);return e[t]=a,e[t]}}),construct(e,...t){let r=this.store[e];return r?new r(...t):null},call(e,t,...r){let n=this.store[e];return n?n.call(t,...r):null}},this.descriptors={store:new Proxy({},{get:(e,t)=>{if(t in e)return e[t];let r=t.split("."),n=r.pop(),o=r.reduce((e,t)=>e?.[t],this.global);if(!o)return;let a=(0,c.nativeGetOwnPropertyDescriptor)(o,n);return e[t]=a,e[t]}}),get(e,t){let r=this.store[e];return r?r.get.call(t):null},set(e,t,r){let n=this.store[e];if(!n)return null;n.set.call(t,r)}};let t=this;this.meta={get origin(){return t.url},get base(){if(n.iswindow){let e=t.natives.call("Document.prototype.querySelector",t.global.document,"base");if(e){let r=e.getAttribute("href"),n=r.indexOf("#");if(!(r=r.substring(0,-1===n?void 0:n)))return t.url;return new URL(r,t.url.origin)}}return t.url}},e[o.a]=this}get frame(){if(!n.iswindow)return null;let e=this.descriptors.get("window.frameElement",this.global);if(!e)return null;let t=e[o.D];if(!t){let e=this.global.window;for(;e.parent!=e;){if(!e.frameElement)return null;if(e.frameElement&&e.frameElement[o.D])return e.frameElement[o.D];e=e.parent.window}}return t}loadcookies(e){this.cookieStore.load(e)}hook(){let e=r(5831),t=[];for(let r of e.keys()){let n=e(r);r.endsWith(".ts")&&(r.startsWith("./dom/")&&"window"in this.global||r.startsWith("./worker/")&&"WorkerGlobalScope"in this.global||r.startsWith("./shared/"))&&t.push(n)}for(let e of(t.sort((e,t)=>{let r=e.order||0;return r-(t.order||0)}),t))!e.enabled||e.enabled(this)?e.default(this,this.global):e.disabled&&e.disabled(this,this.global)}get url(){return new URL((0,u.Sd)(this.global.location.href))}set url(e){e instanceof URL&&(e=e.toString());let t=new f.NavigateEvent(e);this.frame&&this.frame.dispatchEvent(t),!t.defaultPrevented&&(this.global.location.href=(0,u.dm)(t.url,this.meta))}Proxy(e,t){if(Array.isArray(e)){for(let r of e)this.Proxy(r,t);return}let r=e.split("."),n=r.pop(),o=r.reduce((e,t)=>e?.[t],this.global);if(!o)return;let a=Reflect.get(o,n);this.natives.store[e]=a,this.RawProxy(o,n,t)}RawProxy(e,t,r){if(!e||!t||!Reflect.has(e,t))return;let n=Reflect.get(e,t);delete e[t];let o={};r.construct&&(o.construct=function(e,t,n){let o;let a=!1,s={fn:e,this:null,args:t,newTarget:n,return:e=>{a=!0,o=e},call:()=>(a=!0,o=Reflect.construct(s.fn,s.args,s.newTarget))};return(r.construct(s),a)?o:Reflect.construct(s.fn,s.args,s.newTarget)}),r.apply&&(o.apply=function(e,t,n){let o;let a=!1,s={fn:e,this:t,args:n,newTarget:null,return:e=>{a=!0,o=e},call:()=>(a=!0,o=Reflect.apply(s.fn,s.this,s.args))},i=Error.prepareStackTrace;Error.prepareStackTrace=function(e,t){if(t[0].getFileName()&&!t[0].getFileName().startsWith(location.origin+u.vc.prefix))return{stack:e.stack}};try{r.apply(s)}catch(e){if(e instanceof Error){if(e.stack instanceof Object)e.stack=e.stack.stack,console.error("ERROR FROM SCRAMJET INTERNALS",e);else throw e}else throw e}return(Error.prepareStackTrace=i,a)?o:Reflect.apply(s.fn,s.this,s.args)}),o.getOwnPropertyDescriptor=i.getOwnPropertyDescriptorHandler,e[t]=new Proxy(n,o)}Trap(e,t){if(Array.isArray(e)){for(let r of e)this.Trap(r,t);return}let r=e.split("."),n=r.pop(),o=r.reduce((e,t)=>e?.[t],this.global);if(!o)return;let a=(0,c.nativeGetOwnPropertyDescriptor)(o,n);return this.descriptors.store[e]=a,this.RawTrap(o,n,t)}RawTrap(e,t,r){if(!e||!t||!Reflect.has(e,t))return;let n=(0,c.nativeGetOwnPropertyDescriptor)(e,t),o={this:null,get:function(){return n&&n.get.call(this.this)},set:function(e){n&&n.set.call(this.this,e)}};delete e[t];let a={};return r.get?a.get=function(){return o.this=this,r.get(o)}:n?.get&&(a.get=n.get),r.set?a.set=function(e){o.this=this,r.set(o,e)}:n?.set&&(a.set=n.set),r.enumerable?a.enumerable=r.enumerable:n?.enumerable&&(a.enumerable=n.enumerable),r.configurable?a.configurable=r.configurable:n?.configurable&&(a.configurable=n.configurable),Object.defineProperty(e,t,a),n}}},5974:function(e,t,r){"use strict";r.r(t),r.d(t,{createDocumentProxy:function(){return a}});var n=r(4471),o=r(7932);function a(e,t){return new Proxy(t.document,{get:(t,r)=>"location"===r?e.locationProxy:"defaultView"===r?e.globalProxy:Reflect.get(t,r),set(t,r,o){if("location"===r){location.href=(0,n.dm)(o,e.meta);return}return Reflect.set(t,r,o)},getOwnPropertyDescriptor:o.getOwnPropertyDescriptorHandler})}},8959:function(e,t,r){"use strict";function n(e,t){e.Trap("Element.prototype.attributes",{get(e){let t=e.get(),r=new Proxy(t,{get(e,n,o){let a=Reflect.get(e,n);return"length"===n?Object.keys(r).length:"getNamedItem"===n?e=>r[e]:"getNamedItemNS"===n?(e,t)=>r[`${e}:${t}`]:n in NamedNodeMap.prototype&&"function"==typeof a?new Proxy(a,{apply:(e,n,o)=>n===r?Reflect.apply(e,t,o):Reflect.apply(e,n,o)}):"string"!=typeof n&&"number"!=typeof n||isNaN(Number(n))?this.has(e,n)?a:void 0:t[Object.keys(r)[n]]},ownKeys(e){return Reflect.ownKeys(e).filter(t=>this.has(e,t))},has:(e,r)=>"symbol"==typeof r?Reflect.has(e,r):!(r.startsWith("scramjet-attr-")||t[r]?.name?.startsWith("scramjet-attr-"))&&Reflect.has(e,r)});return r}}),e.Trap("Attr.prototype.value",{get:e=>e.this?.ownerElement?e.this.ownerElement.getAttribute(e.this.name):e.get(),set:(e,t)=>e.this?.ownerElement?e.this.ownerElement.setAttribute(e.this.name,t):e.set(t)})}r.r(t),r.d(t,{default:function(){return n}})},2863:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Proxy("Navigator.prototype.sendBeacon",{apply(t){t.args[0]=(0,n.dm)(t.args[0],e.meta)}})}},1197:function(e,t,r){"use strict";function n(e,t){e.serviceWorker.addEventListener("message",({data:t})=>{"scramjet$type"in t&&"cookie"===t.scramjet$type&&e.cookieStore.setCookies([t.cookie],new URL(t.url))}),e.Trap("Document.prototype.cookie",{get:()=>e.cookieStore.getCookies(e.url,!0),set(t,r){e.cookieStore.setCookies([r],e.url);let n=e.descriptors.get("ServiceWorkerContainer.prototype.controller",e.serviceWorker);n&&e.natives.call("ServiceWorker.prototype.postMessage",n,{scramjet$type:"cookie",cookie:r,url:e.url.href})}}),delete t.cookieStore}r.r(t),r.d(t,{default:function(){return n}})},7339:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e){e.Proxy("CSSStyleDeclaration.prototype.setProperty",{apply(t){t.args[1]&&(t.args[1]=(0,n.U5)(t.args[1],e.meta))}}),e.Proxy("CSSStyleDeclaration.prototype.getPropertyValue",{apply(e){let t=e.call();if(!t)return t;e.return((0,n.Od)(t))}}),e.Trap("CSSStyleDeclaration.prototype.cssText",{set(t,r){t.set((0,n.U5)(r,e.meta))},get:e=>(0,n.Od)(e.get())}),e.Trap("HTMLElement.prototype.style",{get(t){let r=t.get();return new Proxy(r,{get(e,t){let o=Reflect.get(e,t);return"function"==typeof o?new Proxy(o,{apply:(e,t,n)=>Reflect.apply(e,r,n)}):t in CSSStyleDeclaration.prototype||!o?o:(0,n.Od)(o)},set:(t,r,o)=>"cssText"==r||""==o||"string"!=typeof o?Reflect.set(t,r,o):Reflect.set(t,r,(0,n.U5)(o,e.meta))})},set(e,t){e.set(t)}})}},1938:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Proxy("Document.prototype.write",{apply(t){if(t.args[0])try{t.args[0]=(0,n.r4)(t.args[0],e.cookieStore,e.meta,!1)}catch{}}}),e.Proxy("Document.prototype.writeln",{apply(t){if(t.args[0])try{t.args[0]=(0,n.r4)(t.args[0],e.cookieStore,e.meta,!1)}catch{}}})}},2439:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return l}});var n=r(9777),o=r(2712),a=r(3498),s=r(4471);let i=new TextEncoder;function l(e,t){let r={nonce:[t.HTMLElement],integrity:[t.HTMLScriptElement,t.HTMLLinkElement],csp:[t.HTMLIFrameElement],credentialless:[t.HTMLIFrameElement],src:[t.HTMLImageElement,t.HTMLMediaElement,t.HTMLIFrameElement,t.HTMLFrameElement,t.HTMLEmbedElement,t.HTMLScriptElement,t.HTMLSourceElement],href:[t.HTMLAnchorElement,t.HTMLLinkElement,t.SVGUseElement,t.SVGImageElement],data:[t.HTMLObjectElement],action:[t.HTMLFormElement],formaction:[t.HTMLButtonElement,t.HTMLInputElement],srcdoc:[t.HTMLIFrameElement],srcset:[t.HTMLImageElement,t.HTMLSourceElement],poster:[t.HTMLVideoElement],imagesrcset:[t.HTMLLinkElement]},l=[t.HTMLAnchorElement.prototype,t.HTMLAreaElement.prototype],c=[(0,a.nativeGetOwnPropertyDescriptor)(t.HTMLAnchorElement.prototype,"href"),(0,a.nativeGetOwnPropertyDescriptor)(t.HTMLAreaElement.prototype,"href")];for(let e of Object.keys(r))for(let t of r[e]){let r=(0,a.nativeGetOwnPropertyDescriptor)(t.prototype,e);Object.defineProperty(t.prototype,e,{get(){return["src","data","href","action","formaction"].includes(e)?(0,s.Sd)(r.get.call(this)):r.get.call(this)},set(t){return this.setAttribute(e,t)}})}for(let t of["protocol","hash","host","hostname","origin","pathname","port","search"])for(let r in l){let n=l[r],o=c[r];e.RawTrap(n,t,{get(e){let r=o.get.call(e.this);return r?new URL((0,s.Sd)(r))[t]:r}})}e.Trap("Node.prototype.baseURI",{get(){let r=t.document.querySelector("base");return r?new URL(r.href,e.url.origin).href:e.url.origin},set:()=>!1}),e.Proxy("Element.prototype.getAttribute",{apply(t){let[r]=t.args;if(r.startsWith("scramjet-attr"))return t.return(null);if(e.natives.call("Element.prototype.hasAttribute",t.this,`scramjet-attr-${r}`)){let e=t.fn.call(t.this,`scramjet-attr-${r}`);return null===e?t.return(""):t.return(e)}}}),e.Proxy("Element.prototype.getAttributeNames",{apply(e){let t=e.call().filter(e=>!e.startsWith("scramjet-attr"));e.return(t)}}),e.Proxy("Element.prototype.getAttributeNode",{apply(e){if(e.args[0].startsWith("scramjet-attr"))return e.return(null)}}),e.Proxy("Element.prototype.hasAttribute",{apply(e){if(e.args[0].startsWith("scramjet-attr"))return e.return(!1)}}),e.Proxy("Element.prototype.setAttribute",{apply(t){let[r,n]=t.args,o=s.Gq.find(e=>{let n=e[r.toLowerCase()];return!!n&&("*"===n||"function"!=typeof n&&n.includes(t.this.tagName.toLowerCase()))});o&&(t.args[1]=o.fn(n,e.meta,e.cookieStore),t.fn.call(t.this,`scramjet-attr-${t.args[0]}`,n))}}),e.Proxy("Element.prototype.setAttributeNode",{apply(e){}}),e.Proxy("Element.prototype.setAttributeNS",{apply(t){let[r,n,o]=t.args,a=s.Gq.find(e=>{let r=e[n.toLowerCase()];return!!r&&("*"===r||"function"!=typeof r&&r.includes(t.this.tagName.toLowerCase()))});a&&(t.args[2]=a.fn(o,e.meta,e.cookieStore),e.natives.call("Element.prototype.setAttribute",t.this,`scramjet-attr-${t.args[1]}`,o))}}),e.Proxy("Element.prototype.removeAttribute",{apply(t){if(t.args[0].startsWith("scramjet-attr"))return t.return(void 0);e.natives.call("Element.prototype.hasAttribute",t.this,t.args[0])&&t.fn.call(t.this,`scramjet-attr-${t.args[0]}`)}}),e.Proxy("Element.prototype.toggleAttribute",{apply(t){if(t.args[0].startsWith("scramjet-attr"))return t.return(!1);e.natives.call("Element.prototype.hasAttribute",t.this,t.args[0])&&t.fn.call(t.this,`scramjet-attr-${t.args[0]}`)}}),e.Trap("Element.prototype.innerHTML",{set(r,n){let o;if(r.this instanceof t.HTMLScriptElement)o=(0,s.Zs)(n,"(anonymous script element)",e.meta),e.natives.call("Element.prototype.setAttribute",r.this,"scramjet-attr-script-source-src",btoa(Array.from(i.encode(o),e=>String.fromCodePoint(e)).join("")));else if(r.this instanceof t.HTMLStyleElement)o=(0,s.U5)(n,e.meta);else try{o=(0,s.r4)(n,e.cookieStore,e.meta)}catch{o=n}r.set(o)},get(r){if(r.this instanceof t.HTMLScriptElement){let t=e.natives.call("Element.prototype.getAttribute",r.this,"scramjet-attr-script-source-src");return t?atob(t):r.get()}return r.this instanceof t.HTMLStyleElement?r.get():(0,s.WT)(r.get())}}),e.Trap("Element.prototype.outerHTML",{set(t,r){t.set((0,s.r4)(r,e.cookieStore,e.meta))},get:e=>(0,s.WT)(e.get())}),e.Proxy("Element.prototype.setHTMLUnsafe",{apply(t){try{t.args[0]=(0,s.r4)(t.args[0],e.cookieStore,e.meta,!1)}catch{}}}),e.Proxy("Element.prototype.getHTML",{apply(e){e.return((0,s.WT)(e.call()))}}),e.Proxy("Element.prototype.insertAdjacentHTML",{apply(t){if(t.args[1])try{t.args[1]=(0,s.r4)(t.args[1],e.cookieStore,e.meta,!1)}catch{}}}),e.Trap(["HTMLIFrameElement.prototype.contentWindow","HTMLFrameElement.prototype.contentWindow","HTMLObjectElement.prototype.contentWindow","HTMLEmbedElement.prototype.contentWindow"],{get(e){let t=e.get();if(!t)return t;if(n.a in t)return t[n.a].globalProxy;{let e=new o.ScramjetClient(t);return e.hook(),e.globalProxy}}}),e.Trap(["HTMLIFrameElement.prototype.contentDocument","HTMLFrameElement.prototype.contentDocument","HTMLObjectElement.prototype.contentDocument","HTMLEmbedElement.prototype.contentDocument"],{get(t){let r=e.descriptors.get(`${t.this.constructor.name}.prototype.contentWindow`,t.this);if(!r)return r;if(n.a in r)return r[n.a].documentProxy;{let e=new o.ScramjetClient(r);return e.hook(),e.documentProxy}}}),e.Proxy(["HTMLIFrameElement.prototype.getSVGDocument","HTMLObjectElement.prototype.getSVGDocument","HTMLEmbedElement.prototype.getSVGDocument"],{apply(e){if(e.call())return e.return(e.this.contentDocument)}}),e.Trap("TreeWalker.prototype.currentNode",{get:e=>e.get(),set:(r,n)=>n===e.documentProxy?r.set(t.document):r.set(n)}),e.Proxy("Document.prototype.open",{apply(e){let t=e.call(),r=t[n.a];return r?e.return(r.documentProxy):e.return(t)}}),e.Trap("Node.prototype.ownerDocument",{get(e){let t=e.get();if(!t)return null;let r=t[n.a];return r?r.documentProxy:t}}),e.Trap(["Node.prototype.parentNode","Node.prototype.parentElement","Node.prototype.previousSibling","Node.prototype.nextSibling","Range.prototype.commonAncestorContainer","AbstractRange.prototype.endContainer","AbstractRange.prototype.startContainer"],{get(e){let t=e.get();if(!(t instanceof Document))return t;let r=t[n.a];return r?r.documentProxy:t}}),e.Proxy("Node.prototype.getRootNode",{apply(e){let t=e.call();if(!(t instanceof Document))return e.return(t);let r=t[n.a];return r?e.return(r.documentProxy):e.return(t)}}),e.Proxy(["DOMParser.prototype.parseFromString","Document.prototype.parseHTMLUnsafe"],{apply(t){if("text/html"===t.args[1])try{t.args[0]=(0,s.r4)(t.args[0],e.cookieStore,e.meta,!1)}catch{}}})}},6643:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Proxy("FontFace",{construct(t){t.args[1]=(0,n.U5)(t.args[1],e.meta)}})}},461:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return a}});var n=r(4471),o=r(5008);function a(e,t){e.Proxy("History.prototype.pushState",{apply(t){(t.args[2]||""===t.args[2])&&(t.args[2]=(0,n.dm)(t.args[2],e.meta)),t.call();let r=new o.UrlChangeEvent(e.url.href);e.frame&&e.frame.dispatchEvent(r)}}),e.Proxy("History.prototype.replaceState",{apply(t){(t.args[2]||""===t.args[2])&&(t.args[2]=(0,n.dm)(t.args[2],e.meta)),t.call();let r=new o.UrlChangeEvent(e.url.href);e.frame&&e.frame.dispatchEvent(r)}})}},2410:function(e,t,r){"use strict";function n(e,t){delete t.navigation}r.r(t),r.d(t,{default:function(){return n}})},8805:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return s}});var n=r(4471),o=r(2712),a=r(9777);function s(e){e.Proxy("window.open",{apply(t){t.args[0]&&(t.args[0]=(0,n.dm)(t.args[0],e.meta)),["_parent","_top","_unfencedTop"].includes(t.args[1])&&(t.args[1]="_self");let r=t.call();if(!r)return t.return(r);if(a.a in r)return t.return(r[a.a].globalProxy);{let e=new o.ScramjetClient(r);return e.hook(),t.return(e.globalProxy)}}}),e.Trap("opener",{get(e){let t=e.get();return t&&a.a in t?t[a.a].globalProxy:void 0}}),e.Trap("window.frameElement",{get(e){let t=e.get();return t?t.ownerDocument.defaultView[a.a]?t:null:t}})}},3261:function(e,t,r){"use strict";function n(e,t){e.Trap("origin",{get:()=>e.url.origin,set:()=>!1}),e.Trap("Document.prototype.URL",{get:()=>e.url.href,set:()=>!1}),e.Trap("Document.prototype.documentURI",{get:()=>e.url.href,set:()=>!1}),e.Trap("Document.prototype.domain",{get:()=>e.url.hostname,set:()=>!1})}r.r(t),r.d(t,{default:function(){return n}})},4475:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Trap("PerformanceEntry.prototype.name",{get:e=>(0,n.Sd)(e.get())})}},5707:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return l},disabled:function(){return i},enabled:function(){return s},order:function(){return a}});var n=r(4471),o=r(8810);let a=2,s=e=>(0,o.Sp)("serviceworkers",e.url);function i(e,t){Reflect.deleteProperty(Navigator.prototype,"serviceWorker")}function l(e,t){let r=new WeakMap;e.Proxy("EventTarget.prototype.addEventListener",{apply(e){r.get(e.this)&&e.return(void 0)}}),e.Proxy("EventTarget.prototype.removeEventListener",{apply(e){r.get(e.this)&&e.return(void 0)}}),e.Proxy("ServiceWorkerContainer.prototype.getRegistration",{apply(e){e.return(new Promise(e=>e(registration)))}}),e.Proxy("ServiceWorkerContainer.prototype.getRegistrations",{apply(e){e.return(new Promise(e=>e([registration])))}}),e.Trap("ServiceWorkerContainer.prototype.ready",{get:e=>new Promise(e=>e(registration))}),e.Trap("ServiceWorkerContainer.prototype.controller",{get:e=>registration?.active}),e.Proxy("ServiceWorkerContainer.prototype.register",{apply(t){let o=new EventTarget;Object.setPrototypeOf(o,self.ServiceWorkerRegistration.prototype),o.constructor=t.fn;let a=(0,n.dm)(t.args[0],e.meta)+"?dest=serviceworker";t.args[1]&&"module"===t.args[1].type&&(a+="&type=module");let s=e.natives.construct("SharedWorker",a).port,i={scope:t.args[0],active:s},l=e.descriptors.get("ServiceWorkerContainer.prototype.controller",e.serviceWorker);e.natives.call("ServiceWorker.prototype.postMessage",l,{scramjet$type:"registerServiceWorker",port:s,origin:e.url.origin},[s]),r.set(o,i),t.return(new Promise(e=>e(o)))}})}},9227:function(e,t,r){"use strict";function n(e,t){let r={get(t,r){switch(r){case"getItem":return r=>t.getItem(e.url.host+"@"+r);case"setItem":return(r,n)=>t.setItem(e.url.host+"@"+r,n);case"removeItem":return r=>t.removeItem(e.url.host+"@"+r);case"clear":return()=>{for(let r in Object.keys(t))r.startsWith(e.url.host)&&t.removeItem(r)};case"key":return r=>{let n=Object.keys(t).filter(t=>t.startsWith(e.url.host));return t.getItem(n[r])};case"length":return Object.keys(t).filter(t=>t.startsWith(e.url.host)).length;default:if(r in Object.prototype||"symbol"==typeof r)return Reflect.get(t,r);return console.log("GET",r,t==n),t.getItem(e.url.host+"@"+r)}},set:(t,r,o)=>(t==n&&console.log("SET",r,o,t===n),t.setItem(e.url.host+"@"+r,o),!0),ownKeys:t=>Reflect.ownKeys(t).filter(t=>"string"==typeof t&&t.startsWith(e.url.host)).map(t=>"string"==typeof t?t.substring(e.url.host.length+1):t),getOwnPropertyDescriptor:(t,r)=>({value:t.getItem(e.url.host+"@"+r),enumerable:!0,configurable:!0,writable:!0}),defineProperty:(t,r,n)=>(t.setItem(e.url.host+"@"+r,n.value),!0)},n=t.localStorage,o=new Proxy(t.localStorage,r),a=new Proxy(t.sessionStorage,r);delete t.localStorage,delete t.sessionStorage,t.localStorage=o,t.sessionStorage=a}r.r(t),r.d(t,{default:function(){return n}})},5008:function(e,t,r){"use strict";r.r(t),r.d(t,{NavigateEvent:function(){return n},ScramjetContextInit:function(){return a},UrlChangeEvent:function(){return o}});class n extends Event{url;constructor(e){super("navigate"),this.url=e}}class o extends Event{url;constructor(e){super("urlchange"),this.url=e}}class a extends Event{window;constructor(e){super("contextInit"),this.window=e}}},2237:function(e,t,r){"use strict";r.r(t),r.d(t,{UNSAFE_GLOBALS:function(){return i},createGlobalProxy:function(){return l}});var n=r(6707),o=r(9777),a=r(2712),s=r(7932);let i=["window","self","globalThis","this","parent","top","location","document","eval","frames"];function l(e,t){return new Proxy(t,{get(t,r){let s=Reflect.get(t,r);if(n.iswindow&&("string"==typeof r||"number"==typeof r)&&!isNaN(Number(r))&&s){let e=s.self;if(e){if(o.a in e)return e[o.a].globalProxy;{let t=new a.ScramjetClient(e);return t.hook(),t.globalProxy}}}if("$scramjet"!==r)return"string"==typeof r&&i.includes(r)?e.wrapfn(s):s},set(t,r,n){if("location"===r){e.url=n;return}return Reflect.set(t,r,n)},has:(e,t)=>"$scramjet"!==t&&Reflect.has(e,t),ownKeys:e=>Reflect.ownKeys(e).filter(e=>"$scramjet"!==e),defineProperty:(e,t,r)=>(!r.get&&!r.set&&(r.writable=!0),r.configurable=!0,Reflect.defineProperty(e,t,r)),getOwnPropertyDescriptor:s.getOwnPropertyDescriptorHandler})}},7932:function(e,t,r){"use strict";function n(e,t){return Reflect.getOwnPropertyDescriptor(e,t)}r.r(t),r.d(t,{getOwnPropertyDescriptorHandler:function(){return n}})},6707:function(e,t,r){"use strict";r.r(t),r.d(t,{isdedicated:function(){return f},isemulatedsw:function(){return d},isshared:function(){return g},issw:function(){return p},iswindow:function(){return c},isworker:function(){return u}});var n=r(8810),o=r(9777),a=r(2712),s=r(5008),i=r(633),l=r(1762).Z;let c="window"in self&&window instanceof Window,u="WorkerGlobalScope"in self,p="ServiceWorkerGlobalScope"in self,f="DedicatedWorkerGlobalScope"in self,g="SharedWorkerGlobalScope"in self,d="serviceworker"===new URL(self.location.href).searchParams.get("dest");if(l.log("scrammin"),!(o.a in self)){(0,n.t8)();let e=new a.ScramjetClient(self);self.COOKIE&&e.loadcookies(self.COOKIE),e.hook(),d&&new i.ScramjetServiceWorkerRuntime(e).hook();let t=new s.ScramjetContextInit(e.global.window);e.frame?.dispatchEvent(t)}Reflect.deleteProperty(self,"WASM"),Reflect.deleteProperty(self,"COOKIE"),"document"in self&&document?.currentScript&&document.currentScript.remove()},8971:function(e,t,r){"use strict";r.r(t),r.d(t,{createLocationProxy:function(){return i}});var n=r(3498),o=r(4471),a=r(5008),s=r(6707);function i(e,t){let r=s.iswindow?t.Location:t.WorkerLocation,i={};Object.setPrototypeOf(i,r.prototype),i.constructor=r;let l=s.iswindow?t.location:r.prototype;for(let r of["protocol","hash","host","hostname","href","origin","pathname","port","search"]){let o=(0,n.nativeGetOwnPropertyDescriptor)(l,r);if(!o)continue;let s={configurable:!0,enumerable:!0};o.get&&(s.get=new Proxy(o.get,{apply:()=>e.url[r]})),o.set&&(s.set=new Proxy(o.set,{apply(n,o,s){if("href"===r){e.url=s[0];return}if("hash"===r){t.location.hash=s[0];let r=new a.UrlChangeEvent(e.url.href);e.frame&&e.frame.dispatchEvent(r);return}let i=new URL(e.url.href);i[r]=s[0],e.url=i}})),Object.defineProperty(i,r,s)}return i.toString=new Proxy(t.location.toString,{apply:()=>e.url.href}),t.location.valueOf&&(i.valueOf=new Proxy(t.location.valueOf,{apply:()=>e.url.href})),t.location.assign&&(i.assign=new Proxy(t.location.assign,{apply(r,n,a){a[0]=(0,o.dm)(a[0],e.meta),Reflect.apply(r,t.location,a)}})),t.location.reload&&(i.reload=new Proxy(t.location.reload,{apply(e,r,n){Reflect.apply(e,t.location,n)}})),t.location.replace&&(i.replace=new Proxy(t.location.replace,{apply(r,n,a){a[0]=(0,o.dm)(a[0],e.meta),Reflect.apply(r,t.location,a)}})),i}},3498:function(e,t,r){"use strict";r.r(t),r.d(t,{nativeFunction:function(){return n},nativeGetOwnPropertyDescriptor:function(){return o}});let n=self.Function,o=self.Object.getOwnPropertyDescriptor},8278:function(e,t,r){"use strict";function n(e){e.Proxy("console.clear",{apply(e){e.return(void 0)}});let t=console.log;e.Trap("console.log",{set(e,t){},get:e=>t})}r.r(t),r.d(t,{default:function(){return n}})},9447:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e){e.Proxy("URL.createObjectURL",{apply(t){let r=t.call();r.startsWith("blob:")?t.return((0,n.ls)(r,e.meta)):t.return(r)}}),e.Proxy("URL.revokeObjectURL",{apply(e){e.args[0]=(0,n.Ag)(e.args[0])}})}},4169:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Proxy("CacheStorage.prototype.open",{apply(t){t.args[0]=`${e.url.origin}@${t.args[0]}`}}),e.Proxy("CacheStorage.prototype.has",{apply(t){t.args[0]=`${e.url.origin}@${t.args[0]}`}}),e.Proxy("CacheStorage.prototype.match",{apply(t){("string"==typeof t.args[0]||t.args[0]instanceof URL)&&(t.args[0]=(0,n.dm)(t.args[0],e.meta))}}),e.Proxy("CacheStorage.prototype.delete",{apply(t){t.args[0]=`${e.url.origin}@${t.args[0]}`}}),e.Proxy("Cache.prototype.add",{apply(t){("string"==typeof t.args[0]||t.args[0]instanceof URL)&&(t.args[0]=(0,n.dm)(t.args[0],e.meta))}}),e.Proxy("Cache.prototype.addAll",{apply(t){for(let r=0;r
(0,n.Sp)("captureErrors",e.url);function a(e,t=[]){switch(typeof e){case"string":break;case"object":if(e&&e[Symbol.iterator]&&"function"==typeof e[Symbol.iterator])for(let r in e){let n=Object.getOwnPropertyDescriptor(e,r);if(n&&n.get)continue;let o=e[r];!t.includes(o)&&(t.push(o),a(o,t))}}}function s(e,t){t.$scramerr=function(e){console.warn("CAUGHT ERROR",e)},t.$scramdbg=function(e,t){return e&&"object"==typeof e&&e.length>0&&a(e),a(t),t},e.Proxy("Promise.prototype.catch",{apply(e){e.args[0]&&(e.args[0]=new Proxy(e.args[0],{apply(e,t,r){Reflect.apply(e,t,r)}}))}})}},7651:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return s},enabled:function(){return a}});var n=r(8810),o=r(4471);let a=e=>(0,n.Sp)("cleanErrors",e.url);function s(e,t){let r=(e,t)=>{let r=e.stack;for(let e=0;ee.includes(n));e.splice(t,1),r=e.join("\n");continue}try{r=r.replaceAll(n,(0,o.Sd)(n))}catch{}}return r};e.Trap("Error.prepareStackTrace",{get:e=>r,set(e){}})}},4423:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o},indirectEval:function(){return a}});var n=r(4471);function o(e,t){Object.defineProperty(t,n.vc.globals.rewritefn,{value:function(t){return"string"!=typeof t?t:(0,n.Zs)(t,"(direct eval proxy)",e.meta)},writable:!1,configurable:!1})}function a(e){return"string"!=typeof e?e:(0,this.global.eval)((0,n.Zs)(e,"(indirect eval proxy)",this.meta))}},8231:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return c}});var n=r(6707),o=r(9777),a=r(7932),s=r(3498),i=r(2370);let l=Symbol.for("scramjet original onevent function");function c(e,t){let r={message:{_init(){return("object"!=typeof this.data||!("$scramjet$type"in this.data))&&!0},ports(){return this.ports},source(){if(null===this.source)return null;let e=this.source[o.a];return e?e.globalProxy:this.source},origin(){return"object"==typeof this.data&&"$scramjet$origin"in this.data?this.data.$scramjet$origin:e.url.origin},data(){return"object"==typeof this.data&&"$scramjet$data"in this.data?this.data.$scramjet$data:this.data}}};function c(e){return new Proxy(e,{apply(e,n,o){let s=o[0];if(s.isTrusted){let t=s.type;if(t in r){let n=r[t];if(n._init&&!1===n._init.call(s))return;o[0]=new Proxy(s,{get:(t,r,o)=>r in n?n[r].call(t):Reflect.get(e,r,o),getOwnPropertyDescriptor:a.getOwnPropertyDescriptorHandler})}}return!t.event&&Object.defineProperty(t,"event",{get:()=>o[0],configurable:!0}),Reflect.apply(e,n,o)},getOwnPropertyDescriptor:a.getOwnPropertyDescriptorHandler})}e.Proxy("EventTarget.prototype.addEventListener",{apply(t){if((0,i.unproxy)(t,e),"function"!=typeof t.args[1])return;let r=t.args[1],n=c(r);t.args[1]=n;let o=e.eventcallbacks.get(t.this);(o||=[]).push({event:t.args[0],originalCallback:r,proxiedCallback:n}),e.eventcallbacks.set(t.this,o)}}),e.Proxy("EventTarget.prototype.removeEventListener",{apply(t){if((0,i.unproxy)(t,e),"function"!=typeof t.args[1])return;let r=e.eventcallbacks.get(t.this);if(!r)return;let n=r.findIndex(e=>e.event===t.args[0]&&e.originalCallback===t.args[1]);if(-1===n)return;let o=r.splice(n,1);e.eventcallbacks.set(t.this,r),t.args[1]=o[0].proxiedCallback}}),e.Proxy("EventTarget.prototype.dispatchEvent",{apply(t){(0,i.unproxy)(t,e)}});let u=[t.self,t.MessagePort.prototype];for(let o of(n.iswindow&&u.push(t.HTMLElement.prototype),t.Worker&&u.push(t.Worker.prototype),u))for(let t of Reflect.ownKeys(o))if("string"==typeof t&&t.startsWith("on")&&r[t.slice(2)]){let r=(0,s.nativeGetOwnPropertyDescriptor)(o,t);if(!r.get||!r.set||!r.configurable)continue;e.RawTrap(o,t,{get(e){return this[l]?this[l]:e.get()},set(e,t){if(this[l]=t,"function"!=typeof t)return e.set(t);e.set(c(t))}})}}},7636:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return a}});var n=r(4471);function o(e,t){let r=e.call().toString(),o=(0,n.Zs)(`return ${r}`,"(function proxy)",t.meta);e.return(e.fn(o)())}function a(e,t){e.Proxy("Function",{apply(t){o(t,e)},construct(t){o(t,e)}})}},4306:function(e,t,r){"use strict";let n;r.r(t),r.d(t,{default:()=>k});var o=r("4471"),a=r("8810");function s(e){let t=n.__externref_table_alloc();return n.__wbindgen_export_2.set(t,e),t}function i(e,t){try{return e.apply(this,t)}catch(t){let e=s(t);n.__wbindgen_exn_store(e)}}let l="undefined"!=typeof TextDecoder?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};"undefined"!=typeof TextDecoder&&l.decode();let c=null;function u(){return(null===c||c.buffer!==n.memory.buffer)&&(c=new Uint8Array(n.memory.buffer)),c}function p(e,t){return e>>>=0,l.decode(u().slice(e,e+t))}let f=0,g="undefined"!=typeof TextEncoder?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},d=function(e,t){let r=g.encode(e);return t.set(r),{read:e.length,written:r.length}};function y(e,t,r){if(void 0===r){let r=g.encode(e),n=t(r.length,1)>>>0;return u().subarray(n,n+r.length).set(r),f=r.length,n}let n=e.length,o=t(n,1)>>>0,a=u(),s=0;for(;s127)break;a[o+s]=t}if(s!==n){0!==s&&(e=e.slice(s)),o=r(o,n,n=s+3*e.length,1)>>>0;let t=d(e,u().subarray(o+s,o+n));s+=t.written,o=r(o,n,s,1)>>>0}return f=s,o}let m=null;function h(){return(null===m||m.buffer!==n.memory.buffer)&&(m=new DataView(n.memory.buffer)),m}function b(e){return null==e}function w(e){let t=n.__wbindgen_export_2.get(e);return n.__externref_table_dealloc(e),t}async function v(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if("application/wasm"!=e.headers.get("Content-Type"))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",t);else throw t}let r=await e.arrayBuffer();return await WebAssembly.instantiate(r,t)}{let r=await WebAssembly.instantiate(e,t);return r instanceof WebAssembly.Instance?{instance:r,module:e}:r}}function x(){let e={};return e.wbg={},e.wbg.__wbg_call_3b770f0d6eb4720e=function(){return i(function(e,t,r,n){return e.call(t,r,n)},arguments)},e.wbg.__wbg_call_500db948e69c7330=function(){return i(function(e,t,r){return e.call(t,r)},arguments)},e.wbg.__wbg_call_b0d8e36992d9900d=function(){return i(function(e,t){return e.call(t)},arguments)},e.wbg.__wbg_get_bbccf8970793c087=function(){return i(function(e,t){return Reflect.get(e,t)},arguments)},e.wbg.__wbg_new_17f755666e48d1d8=function(){return i(function(e,t){return new URL(p(e,t))},arguments)},e.wbg.__wbg_new_254fa9eac11932ae=function(){return[]},e.wbg.__wbg_new_688846f374351c92=function(){return{}},e.wbg.__wbg_newnoargs_fd9e4bf8be2bc16d=function(e,t){return Function(p(e,t))},e.wbg.__wbg_newwithbase_aa2c471fe3eacc2b=function(){return i(function(e,t,r,n){return new URL(p(e,t),p(r,n))},arguments)},e.wbg.__wbg_now_62a101fe35b60230=function(e){return e.now()},e.wbg.__wbg_scramtag_bd98edaa0eaec45e=function(e){let t=y("10000000000".replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)),n.__wbindgen_malloc,n.__wbindgen_realloc),r=f;h().setInt32(e+4,r,!0),h().setInt32(e+0,t,!0)},e.wbg.__wbg_set_4e647025551483bd=function(){return i(function(e,t,r){return Reflect.set(e,t,r)},arguments)},e.wbg.__wbg_static_accessor_GLOBAL_0be7472e492ad3e3=function(){let e="undefined"==typeof global?null:global;return b(e)?0:s(e)},e.wbg.__wbg_static_accessor_GLOBAL_THIS_1a6eb482d12c9bfb=function(){let e="undefined"==typeof globalThis?null:globalThis;return b(e)?0:s(e)},e.wbg.__wbg_static_accessor_SELF_1dc398a895c82351=function(){let e="undefined"==typeof self?null:self;return b(e)?0:s(e)},e.wbg.__wbg_static_accessor_WINDOW_ae1c80c7eea8d64a=function(){let e="undefined"==typeof window?null:window;return b(e)?0:s(e)},e.wbg.__wbg_toString_a491ccf7be1ca5c9=function(e){return e.toString()},e.wbg.__wbg_toString_cbcf95f260c441ae=function(e){return e.toString()},e.wbg.__wbindgen_boolean_get=function(e){return"boolean"==typeof e?e?1:0:2},e.wbg.__wbindgen_error_new=function(e,t){return Error(p(e,t))},e.wbg.__wbindgen_init_externref_table=function(){let e=n.__wbindgen_export_2,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)},e.wbg.__wbindgen_is_function=function(e){return"function"==typeof e},e.wbg.__wbindgen_is_undefined=function(e){return void 0===e},e.wbg.__wbindgen_number_new=function(e){return e},e.wbg.__wbindgen_string_get=function(e,t){let r="string"==typeof t?t:void 0;var o=b(r)?0:y(r,n.__wbindgen_malloc,n.__wbindgen_realloc),a=f;h().setInt32(e+4,a,!0),h().setInt32(e+0,o,!0)},e.wbg.__wbindgen_string_new=function(e,t){return p(e,t)},e.wbg.__wbindgen_throw=function(e,t){throw Error(p(e,t))},e.wbg.__wbindgen_uint8_array_new=function(e,t){var r,o,a=(r=e,o=t,r>>>=0,u().subarray(r/1,r/1+o)).slice();return n.__wbindgen_free(e,1*t,1),a},e}function P(e,t){e.wbg.memory=t||new WebAssembly.Memory({initial:18,maximum:16384,shared:!0})}function _(e,t,r){if(n=e.exports,T.__wbindgen_wasm_module=t,m=null,c=null,void 0!==r&&("number"!=typeof r||0===r||r%65536!=0))throw"invalid stack size";return n.__wbindgen_start(r),n}async function T(e,t){let r;if(void 0!==n)return n;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e,memory:t,thread_stack_size:r}=e:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),void 0===e&&(e=new URL("wasm_bg.wasm",""));let o=x();("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e)),P(o,t);let{instance:a,module:s}=await v(await e,o);return _(a,s,r)}!function(e,t){let r;if(void 0!==n)return;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?{module:e,memory:t,thread_stack_size:r}=e:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));let o=x();P(o,t),!(e instanceof WebAssembly.Module)&&(e=new WebAssembly.Module(e)),_(new WebAssembly.Instance(e,o),e,r)}({module:new WebAssembly.Module(Uint8Array.from(atob(self.WASM),e=>e.charCodeAt(0)))}),Error.stackTraceLimit=50;let S=new TextDecoder;function E(e,t){try{return new URL(e,t)}catch{return null}}function k(e,t){let r=e.natives.store.Function;t[o.vc.globals.importfn]=function(t){return function(o){let s=new URL(o,t).href;return r(`return import("${function(e,t){if(e instanceof URL&&(e=e.toString()),e.startsWith("javascript:"))return"javascript:"+function(e,t,r){if((0,a.Sp)("naiiveRewriter",r.origin)){let t="string"==typeof e?e:new TextDecoder().decode(e);return console.log("naiive"),function(e){return"string"!=typeof e&&(e=new TextDecoder().decode(e)),`
+ with (${a.h3.config.globals.wrapfn}(globalThis)) {
+
+ ${e}
+
+ }
+ `}(t)}return e=function(e,t,r){let o;let s=performance.now();try{o="string"==typeof e?function(e,t,r,o){let a=y(e,n.__wbindgen_malloc,n.__wbindgen_realloc),s=f,i=y(t,n.__wbindgen_malloc,n.__wbindgen_realloc),l=f,c=y(r,n.__wbindgen_malloc,n.__wbindgen_realloc),u=f,p=n.rewrite_js(a,s,i,l,c,u,o);if(p[2])throw w(p[1]);return w(p[0])}(e,r.base.href,t||"(unknown)",a.h3):function(e,t,r,o){let a=function(e,t){let r=t(1*e.length,1)>>>0;return u().set(e,r/1),f=e.length,r}(e,n.__wbindgen_malloc),s=f,i=y(t,n.__wbindgen_malloc,n.__wbindgen_realloc),l=f,c=y(r,n.__wbindgen_malloc,n.__wbindgen_realloc),p=f,g=n.rewrite_js_from_arraybuffer(a,s,i,l,c,p,o);if(g[2])throw w(g[1]);return w(g[0])}(new Uint8Array(e),r.base.href,t||"(unknown)",a.h3)}catch(r){throw console.error("failed rewriting js for",t,r,e),r.message=`failed rewriting js for "${t}": ${r.message}`,r}let i=performance.now(),{js:l,errors:c,duration:p}=o;if((0,a.Sp)("rewriterLogs",r.base))for(let e of c)console.error("oxc parse error",e);if((0,a.Sp)("rewriterLogs",r.base)){let e;e=p<1n?"BLAZINGLY FAST":p<500n?"decent speed":"really slow";let r=(i-s-Number(p)).toFixed(2);console.log(`oxc rewrite for "${t||"(unknown)"}" was ${e} (${p}ms; ${r}ms overhead)`)}return"string"==typeof e?S.decode(l):l}(e,t,r)}(e.slice(11),"(javascript: url)",t);if(e.startsWith("blob:"))return location.origin+a.h3.config.prefix+e;if(e.startsWith("data:"))return location.origin+a.h3.config.prefix+e;else{if(e.startsWith("mailto:")||e.startsWith("about:"))return e;let r=t.base.href;r.startsWith("about:")&&(r=function(e){e instanceof URL&&(e=e.toString());let t=location.origin+a.h3.config.prefix;if(e.startsWith("javascript:"))return e;if(e.startsWith("blob:"))return e;if(e.startsWith(t+"blob:"))return e.substring(t.length);else if(e.startsWith(t+"data:"))return e.substring(t.length);else if(e.startsWith("mailto:")||e.startsWith("about:"))return e;else if(E(e))return a.h3.codec.decode(e.slice((location.origin+a.h3.config.prefix).length));else return e}(self.location.href));let n=E(e,r);return n?location.origin+a.h3.config.prefix+a.h3.codec.encode(n.href):e}}(s,e.meta)}")`)()}},t[o.vc.globals.metafn]=function(e){return{url:e,resolve:function(t){return new URL(t,e).href}}}}},2930:function(e,t,r){"use strict";function n(e){e.Proxy("IDBFactory.prototype.open",{apply(t){t.args[0]=`${e.url.origin}@${t.args[0]}`}}),e.Trap("IDBDatabase.prototype.name",{get(e){let t=e.get();return t.substring(t.indexOf("@")+1)}})}r.r(t),r.d(t,{default:function(){return n}})},2625:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return s}});var n=r(6707),o=r(9777),a=r(6594);function s(e){n.iswindow&&e.Proxy("window.postMessage",{apply(e){let t;let{constructor:{constructor:r}}=t="object"==typeof e.args[0]&&null!==e.args[0]?e.args[0]:"object"==typeof e.args[2]&&null!==e.args[2]?e.args[2]:e.this&&a.POLLUTANT in e.this&&"object"==typeof e.this[a.POLLUTANT]&&null!==e.this[a.POLLUTANT]?e.this[a.POLLUTANT]:{},n=r("return globalThis")()[o.a],s=r("...args","this(...args)");e.args[0]={$scramjet$messagetype:"window",$scramjet$origin:n.url.origin,$scramjet$data:e.args[0]},"string"==typeof e.args[1]&&(e.args[1]="*"),"object"==typeof e.args[1]&&(e.args[1].targetOrigin="*"),e.return(s.call(e.fn,...e.args))}});let t=["MessagePort.prototype.postMessage"];self.Worker&&t.push("Worker.prototype.postMessage"),!n.iswindow&&t.push("self.postMessage"),e.Proxy(t,{apply(e){e.args[0]={$scramjet$messagetype:"worker",$scramjet$data:e.args[0]}}})}},6594:function(e,t,r){"use strict";r.r(t),r.d(t,{POLLUTANT:function(){return o},default:function(){return a}});var n=r(4471);let o=Symbol.for("scramjet realm pollutant");function a(e,t){Object.defineProperty(t.Object.prototype,n.vc.globals.setrealmfn,{value(e){return Object.defineProperty(this,o,{value:e,writable:!1,configurable:!0,enumerable:!1}),this},writable:!0,configurable:!0,enumerable:!1})}},2738:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e){e.Proxy("EventSource",{construct(t){t.args[0]=(0,n.dm)(t.args[0],e.meta)}}),e.Trap("EventSource.prototype.url",{get(e){(0,n.Sd)(e.get())}})}},106:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return a}});var n=r(6707),o=r(4471);function a(e,t){e.Proxy("fetch",{apply(t){("string"==typeof t.args[0]||t.args[0]instanceof URL)&&(t.args[0]=(0,o.dm)(t.args[0],e.meta),n.isemulatedsw&&(t.args[0]+="?from=swruntime"))}}),e.Proxy("Request",{construct(t){("string"==typeof t.args[0]||t.args[0]instanceof URL)&&(t.args[0]=(0,o.dm)(t.args[0],e.meta),n.isemulatedsw&&(t.args[0]+="?from=swruntime"))}}),e.Trap("Response.prototype.url",{get:e=>(0,o.Sd)(e.get())}),e.Trap("Request.prototype.url",{get:e=>(0,o.Sd)(e.get())})}},7219:function(e,t,r){"use strict";function n(e,t){let r=new WeakMap;e.Proxy("WebSocket",{construct(n){let o=new EventTarget;Object.setPrototypeOf(o,n.fn.prototype),o.constructor=n.fn;let a=e=>new Proxy(e,{get:(e,t)=>"isTrusted"===t||Reflect.get(e,t)}),s=e.bare.createWebSocket(n.args[0],n.args[1],null,{"User-Agent":t.navigator.userAgent,Origin:e.url.origin}),i={extensions:"",protocol:"",url:n.args[0],binaryType:"blob",barews:s,onclose:null,onerror:null,onmessage:null,onopen:null};function l(e){i["on"+e.type]?.(a(e)),o.dispatchEvent(e)}s.addEventListener("open",()=>{l(new Event("open"))}),s.addEventListener("close",e=>{l(new CloseEvent("close",e))}),s.addEventListener("message",async e=>{let t=e.data;"string"==typeof t||("byteLength"in t?"blob"===i.binaryType?t=new Blob([t]):Object.setPrototypeOf(t,ArrayBuffer.prototype):"arrayBuffer"in t&&"arraybuffer"===i.binaryType&&Object.setPrototypeOf(t=await t.arrayBuffer(),ArrayBuffer.prototype)),l(new MessageEvent("message",{data:t,origin:e.origin,lastEventId:e.lastEventId,source:e.source,ports:e.ports}))}),s.addEventListener("error",()=>{l(new Event("error"))}),r.set(o,i),n.return(o)}}),e.Trap("WebSocket.prototype.binaryType",{get:e=>r.get(e.this).binaryType,set(e,t){let n=r.get(e.this);("blob"===t||"arraybuffer"===t)&&(n.binaryType=t)}}),e.Trap("WebSocket.prototype.bufferedAmount",{get:()=>0}),e.Trap("WebSocket.prototype.extensions",{get:e=>r.get(e.this).extensions}),e.Trap("WebSocket.prototype.onclose",{get:e=>r.get(e.this).onclose,set(e,t){r.get(e.this).onclose=t}}),e.Trap("WebSocket.prototype.onerror",{get:e=>r.get(e.this).onerror,set(e,t){r.get(e.this).onerror=t}}),e.Trap("WebSocket.prototype.onmessage",{get:e=>r.get(e.this).onmessage,set(e,t){r.get(e.this).onmessage=t}}),e.Trap("WebSocket.prototype.onopen",{get:e=>r.get(e.this).onopen,set(e,t){r.get(e.this).onopen=t}}),e.Trap("WebSocket.prototype.url",{get:e=>r.get(e.this).url}),e.Trap("WebSocket.prototype.protocol",{get:e=>r.get(e.this).protocol}),e.Trap("WebSocket.prototype.readyState",{get:e=>r.get(e.this).barews.readyState}),e.Proxy("WebSocket.prototype.send",{apply(e){let t=r.get(e.this);e.return(t.barews.send(e.args[0]))}}),e.Proxy("WebSocket.prototype.close",{apply(e){let t=r.get(e.this);void 0===e.args[0]&&(e.args[0]=1e3),void 0===e.args[1]&&(e.args[1]=""),e.return(t.barews.close(e.args[0],e.args[1]))}})}r.r(t),r.d(t,{default:function(){return n}})},7481:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return a}});var n=r(8810),o=r(4471);function a(e,t){let r;t.Worker&&(0,n.Sp)("syncxhr",e.url)&&(r=e.natives.construct("Worker",o.vc.files.sync));let a=Symbol("xhr original args"),s=Symbol("xhr headers");e.Proxy("XMLHttpRequest.prototype.open",{apply(t){t.args[1]&&(t.args[1]=(0,o.dm)(t.args[1],e.meta)),void 0===t.args[2]&&(t.args[2]=!0),t.this[a]=t.args}}),e.Proxy("XMLHttpRequest.prototype.setRequestHeader",{apply(e){(e.this[s]||(e.this[s]={}))[e.args[0]]=e.args[1]}}),e.Proxy("XMLHttpRequest.prototype.send",{apply(t){let o=t.this[a];if(!o||o[2])return;if(!(0,n.Sp)("syncxhr",e.url))return console.warn("ignoring request - sync xhr disabled in flags"),t.return(void 0);let i=new SharedArrayBuffer(1024,{maxByteLength:0x7fffffff}),l=new DataView(i);e.natives.call("Worker.prototype.postMessage",r,{sab:i,args:o,headers:t.this[s],body:t.args[0]});let c=performance.now();for(;0===l.getUint8(0);)if(performance.now()-c>1e3)throw Error("xhr timeout");let u=l.getUint16(1),p=l.getUint32(3),f=new Uint8Array(p);f.set(new Uint8Array(i.slice(7,7+p)));let g=new TextDecoder().decode(f),d=l.getUint32(7+p),y=new Uint8Array(d);y.set(new Uint8Array(i.slice(11+p,11+p+d)));let m=new TextDecoder().decode(y);e.RawTrap(t.this,"status",{get:()=>u}),e.RawTrap(t.this,"responseText",{get:()=>m}),e.RawTrap(t.this,"response",{get:()=>"arraybuffer"===t.this.responseType?y.buffer:m}),e.RawTrap(t.this,"responseXML",{get:()=>new DOMParser().parseFromString(m,"text/xml")}),e.RawTrap(t.this,"getAllResponseHeaders",{get:()=>()=>g}),e.RawTrap(t.this,"getResponseHeader",{get:()=>e=>{let t=RegExp(`^${e}: (.*)$`,"m").exec(g);return t?t[1]:null}}),t.return(void 0)}}),e.Trap("XMLHttpRequest.prototype.responseURL",{get:e=>(0,o.Sd)(e.get())})}},6321:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return s},enabled:function(){return a}});var n=r(8810);let o={},a=e=>(0,n.Sp)("sourcemaps",e.url);function s(e,t){Object.defineProperty(t,n.h3.config.globals.pushsourcemapfn,{value:(e,t)=>{let r=Uint8Array.from(e),n=new DataView(r.buffer),a=new TextDecoder("utf-8"),s=[],i=n.getUint32(0,!0),l=0;for(let e=0;evoid 0)}r.r(t),r.d(t,{default:function(){return n}})},2370:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return a},order:function(){return o},unproxy:function(){return s}});var n=r(6707);let o=3;function a(e,t){for(let r of[t])for(let t in r)try{"function"==typeof r[t]&&e.RawProxy(r,t,{apply(t){s(t,e)}})}catch{}if(n.iswindow){for(let r of[t.Node.prototype,t.MutationObserver.prototype,t.document,t.MouseEvent.prototype,t.Range.prototype])for(let t in r)try{"function"==typeof r[t]&&e.RawProxy(r,t,{apply(t){s(t,e)}})}catch{}e.Proxy("IntersectionObserver",{construct(e){e.args[1]&&e.args[1].root&&(e.args[1].root=t.document)}}),e.Proxy("Object.defineProperty",{apply(t){s(t,e)}}),e.Proxy("Object.getOwnPropertyDescriptor",{apply(t){let r=t.call();r&&(r.get&&e.RawProxy(r,"get",{apply(t){s(t,e)}}),r.set&&e.RawProxy(r,"set",{apply(t){s(t,e)}}),t.return(r))}})}}function s(e,t){let r=t.global;for(let n in e.this===t.globalProxy&&(e.this=r),e.this===t.documentProxy&&(e.this=r.document),e.args)e.args[n]===t.documentProxy&&(e.args[n]=r.document),e.args[n]===t.globalProxy&&(e.args[n]=r)}},8475:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Proxy("Worker",{construct({args:t,call:r}){t[0]=(0,n.dm)(t[0],e.meta)+"?dest=worker",t[1]&&"module"===t[1].type&&(t[0]+="&type=module");let o=r(),a=new n.ut;(async()=>{let t=await a.getInnerPort();e.natives.call("Worker.prototype.postMessage",o,{$scramjet$type:"baremuxinit",port:t},[t])})()}}),e.Proxy("SharedWorker",{construct({args:t,call:r}){t[0]=(0,n.dm)(t[0],e.meta)+"?dest=worker",t[1]&&"string"==typeof t[1]&&(t[1]=`${e.url.origin}@${t[1]}`),t[1]&&"object"==typeof t[1]&&("module"===t[1].type&&(t[0]+="&type=module"),t[1].name&&(t[1].name=`${e.url.origin}@${t[1].name}`));let o=r(),a=new n.ut;(async()=>{let t=await a.getInnerPort();e.natives.call("MessagePort.prototype.postMessage",o.port,{$scramjet$type:"baremuxinit",port:t},[t])})()}}),e.Proxy("Worklet.prototype.addModule",{apply(t){t.args[0]&&(t.args[0]=(0,n.dm)(t.args[0],e.meta))}})}},7706:function(e,t,r){"use strict";r.r(t),r.d(t,{createWrapFn:function(){return i},default:function(){return c},order:function(){return l}});var n=r(6707),o=r(9777),a=r(4471),s=r(4423);function i(e,t){return function(r){if(r===t)return e.globalProxy;if(r===t.location)return e.locationProxy;if(r===eval)return s.indirectEval.bind(e);if(n.iswindow){if(r===t.parent)return o.a in t.parent?t.parent[o.a].globalProxy:e.globalProxy;if(r===t.document)return e.documentProxy;else if(r===t.top){let e=t;for(;;){let t=e.parent.self;if(t===e||!(o.a in t))break;e=t}return e[o.a].globalProxy}}return r}}let l=4;function c(e,t){Object.defineProperty(t,a.vc.globals.wrapfn,{value:e.wrapfn,writable:!1,configurable:!1}),Object.defineProperty(t,a.vc.globals.wrapthisfn,{value:function(r){return r===t?e.globalProxy:r},writable:!1,configurable:!1}),t.$scramitize=function(e){return"string"==typeof e&&e.includes("scramjet"),"string"==typeof e&&e.includes(location.origin),e===t&&e?.$scramjet,n.iswindow&&e instanceof Document&&e.defaultView?.$scramjet,e},Object.defineProperty(t,a.vc.globals.trysetfn,{value:function(e,t,r){if(e instanceof Location)return locationProxy.href=r,!0},writable:!1,configurable:!1})}},633:function(e,t,r){"use strict";r.r(t),r.d(t,{ScramjetServiceWorkerRuntime:function(){return a}});var n=r(4471),o=r(1762).Z;class a{client;recvport;constructor(e){this.client=e,self.onconnect=t=>{let r=t.ports[0];o.log("sw","connected"),r.addEventListener("message",t=>{console.log("sw",t.data),"scramjet$type"in t.data&&("init"===t.data.scramjet$type?(this.recvport=t.data.scramjet$port,this.recvport.postMessage({scramjet$type:"init"})):s.call(this,e,t.data))}),r.start()}}hook(){this.client.global.registration={scope:this.client.url.href,active:{scriptURL:this.client.url.href,state:"activated",onstatechange:null,onerror:null,postMessage:()=>{},addEventListener:()=>{},removeEventListener:()=>{},dispatchEvent:e=>{}},showNotification:async()=>{},unregister:async()=>!0,update:async()=>{},installing:null,waiting:null},this.client.global.ServiceWorkerGlobalScope=this.client.global}}function s(e,t){let r=this.recvport,a=t.scramjet$type,s=t.scramjet$token,i=e.eventcallbacks.get(self);if("fetch"===a){o.log("ee",t);let a=i.filter(e=>"fetch"===e.event);if(!a)return;for(let i of a){let a=t.scramjet$request,l=new e.natives.Request((0,n.Sd)(a.url),{body:a.body,headers:new Headers(a.headers),method:a.method,mode:"same-origin"});Object.defineProperty(l,"destination",{value:a.destinitation});let c=new Event("fetch");c.request=l;let u=!1;c.respondWith=e=>{u=!0,(async()=>{let t={scramjet$type:"fetch",scramjet$token:s,scramjet$response:{body:(e=await e).body,headers:Array.from(e.headers.entries()),status:e.status,statusText:e.statusText}};o.log("sw","responding",t),r.postMessage(t,[e.body])})()},o.log("to fn",c),i.proxiedCallback(function(e){return new Proxy(e,{get:(e,t,r)=>"isTrusted"===t||Reflect.get(e,t)})}(c)),!u&&(console.log("sw","no response"),r.postMessage({scramjet$type:"fetch",scramjet$token:s,scramjet$response:!1}))}}}},5425:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Proxy("importScripts",{apply(t){for(let r in t.args)t.args[r]=(0,n.dm)(t.args[r],e.meta)}})}},1762:function(e,t,r){"use strict";r.d(t,{Z:function(){return n}});let n={fmt:function(e,t,...r){let n=Error.prepareStackTrace;Error.prepareStackTrace=(e,t)=>{t.shift(),t.shift(),t.shift();let r="";for(let e=1;e `+r);return r+=t[0].getFunctionName()||"Anonymous"};let o=function(){try{throw Error()}catch(e){return e.stack}}();Error.prepareStackTrace=n;let a=console[e]||console.log;a(`%c${o}%c ${t}`,`
+ background-color: ${{log:"#000",warn:"#f80",error:"#f00",debug:"transparent"}[e]};
+ color: ${{log:"#fff",warn:"#fff",error:"#fff",debug:"gray"}[e]};
+ padding: ${{log:2,warn:4,error:4,debug:0}[e]}px;
+ font-weight: bold;
+ font-family: monospace;
+ font-size: 0.9em;
+ `,`${"debug"===e?"color: gray":""}`,...r)},log:function(e,...t){this.fmt("log",e,...t)},warn:function(e,...t){this.fmt("warn",e,...t)},error:function(e,...t){this.fmt("error",e,...t)},debug:function(e,...t){this.fmt("debug",e,...t)}}},8810:function(e,t,r){"use strict";r.d(t,{Sp:function(){return s},h3:function(){return n},t8:function(){return a}}),!("$scramjet"in self)&&(self.$scramjet={version:{build:"1efcf85",version:"1.0.2-dev"},codec:{},flagEnabled:s});let n=self.$scramjet,o=Function;function a(){n.codec.encode=o("url",n.config.codec.encode),n.codec.decode=o("url",n.config.codec.decode)}function s(e,t){let r=n.config.flags[e];for(let r in n.config.siteFlags){let o=n.config.siteFlags[r];if(new RegExp(r).test(t.href)&&e in o)return o[e]}return r}},4471:function(e,t,r){"use strict";r.d(t,{Ag:function(){return u},Gq:function(){return w},Od:function(){return f},Sd:function(){return l},U5:function(){return p},WT:function(){return d},Zs:function(){return m},dg:function(){return o},dm:function(){return i},hc:function(){return v},ls:function(){return c},r4:function(){return g},ut:function(){return s},vc:function(){return x}});var n=r(8810);let{util:{BareClient:o,ScramjetHeaders:a,BareMuxConnection:s},url:{rewriteUrl:i,unrewriteUrl:l,rewriteBlob:c,unrewriteBlob:u},rewrite:{rewriteCss:p,unrewriteCss:f,rewriteHtml:g,unrewriteHtml:d,rewriteSrcset:y,rewriteJs:m,rewriteHeaders:h,rewriteWorkers:b,htmlRules:w},CookieStore:v}=n.h3.shared,x=n.h3.config},9777:function(e,t,r){"use strict";r.d(t,{D:function(){return o},a:function(){return n}});let n=Symbol.for("scramjet client global"),o=Symbol.for("scramjet frame handle")}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r("6707")})();
+//# sourceMappingURL=scramjet.client.js.map
\ No newline at end of file
diff --git a/views/scram/scramjet.client.js.map b/views/scram/scramjet.client.js.map
new file mode 100644
index 00000000..c87df1ed
--- /dev/null
+++ b/views/scram/scramjet.client.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"scramjet.client.js","sources":["webpack://@mercuryworkshop/scramjet/./src/client/client.ts","webpack://@mercuryworkshop/scramjet/./src/client/document.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/attr.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/beacon.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/cookie.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/css.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/document.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/element.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/fontface.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/history.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/navigation.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/open.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/origin.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/performance.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/serviceworker.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/storage.ts","webpack://@mercuryworkshop/scramjet/./src/client/events.ts","webpack://@mercuryworkshop/scramjet/./src/client/global.ts","webpack://@mercuryworkshop/scramjet/./src/client/helpers.ts","webpack://@mercuryworkshop/scramjet/./src/client/index.ts","webpack://@mercuryworkshop/scramjet/./src/client/location.ts","webpack://@mercuryworkshop/scramjet/./src/client/natives.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/antiantidebugger.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/blob.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/caches.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/err.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/error.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/eval.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/event.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/function.ts","webpack://@mercuryworkshop/scramjet/./rewriter/wasm/out/wasm.js","webpack://@mercuryworkshop/scramjet/./rewriter/wasm/out/snippets/wasm-4b0f351a8e6eeb46/inline0.js","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/js.ts","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/url.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/import.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/indexeddb.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/postmessage.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/realm.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/requests/eventsource.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/requests/fetch.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/requests/websocket.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/requests/xmlhttprequest.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/sourcemaps.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/trustedTypes.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/unproxy.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/worker.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/wrap.ts","webpack://@mercuryworkshop/scramjet/./src/client/swruntime.ts","webpack://@mercuryworkshop/scramjet/./src/client/worker/importScripts.ts","webpack://@mercuryworkshop/scramjet/./src/log.ts","webpack://@mercuryworkshop/scramjet/./src/scramjet.ts","webpack://@mercuryworkshop/scramjet/./src/shared.ts","webpack://@mercuryworkshop/scramjet/./src/symbols.ts"],"sourcesContent":["import { iswindow } from \".\";\nimport { ScramjetFrame } from \"../controller/frame\";\nimport { SCRAMJETCLIENT, SCRAMJETFRAME } from \"../symbols\";\nimport { createDocumentProxy } from \"./document\";\nimport { createGlobalProxy } from \"./global\";\nimport { getOwnPropertyDescriptorHandler } from \"./helpers\";\nimport { createLocationProxy } from \"./location\";\nimport { nativeGetOwnPropertyDescriptor } from \"./natives\";\nimport {\n\tBareClient,\n\tCookieStore,\n\tconfig,\n\tunrewriteUrl,\n\trewriteUrl,\n} from \"../shared\";\nimport type { BareClient as BareClientType } from \"@mercuryworkshop/bare-mux\";\nimport { createWrapFn } from \"./shared/wrap\";\nimport { NavigateEvent } from \"./events\";\nimport type { URLMeta } from \"../shared/rewriters/url\";\n\ntype NativeStore = {\n\tstore: Record;\n\tcall: (target: string, that: any, ...args) => any;\n\tconstruct: (target: string, ...args) => any;\n};\ntype DescriptorStore = {\n\tstore: Record;\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 = {\n\tthis: any;\n\tget: () => T;\n\tset: (v: T) => void;\n};\nexport type Trap = {\n\twritable?: boolean;\n\tvalue?: any;\n\tenumerable?: boolean;\n\tconfigurable?: boolean;\n\tget?: (ctx: TrapCtx) => T;\n\tset?: (ctx: TrapCtx, v: T) => void;\n};\n\nexport class ScramjetClient {\n\tdocumentProxy: any;\n\tglobalProxy: any;\n\tlocationProxy: any;\n\tserviceWorker: ServiceWorkerContainer;\n\tbare: BareClientType;\n\n\tnatives: NativeStore;\n\tdescriptors: DescriptorStore;\n\twrapfn: (i: any, ...args: any) => any;\n\n\tcookieStore = new CookieStore();\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\tconstructor(public global: typeof globalThis) {\n\t\tif (SCRAMJETCLIENT in global) {\n\t\t\tconsole.error(\n\t\t\t\t\"attempted to initialize a scramjet cl ient, 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\tthis.serviceWorker = this.global.navigator.serviceWorker;\n\n\t\tif (iswindow) {\n\t\t\tthis.documentProxy = createDocumentProxy(this, global);\n\n\t\t\tglobal.document[SCRAMJETCLIENT] = this;\n\t\t}\n\n\t\tthis.locationProxy = createLocationProxy(this, global);\n\t\tthis.globalProxy = createGlobalProxy(this, global);\n\t\tthis.wrapfn = createWrapFn(this, global);\n\t\tif (iswindow) {\n\t\t\tthis.bare = new BareClient();\n\t\t} else {\n\t\t\tthis.bare = new BareClient(\n\t\t\t\tnew Promise((resolve) => {\n\t\t\t\t\taddEventListener(\"message\", ({ data }) => {\n\t\t\t\t\t\tif (typeof data !== \"object\") return;\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\"$scramjet$type\" in data &&\n\t\t\t\t\t\t\tdata.$scramjet$type === \"baremuxinit\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tresolve(data.port);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t);\n\t\t}\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 = nativeGetOwnPropertyDescriptor(\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\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};\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\tif (!currentwin.frameElement) return null; // ??\n\t\t\t\tif (currentwin.frameElement && currentwin.frameElement[SCRAMJETFRAME]) {\n\t\t\t\t\treturn currentwin.frameElement[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\n\tloadcookies(cookiestr: string) {\n\t\tthis.cookieStore.load(cookiestr);\n\t}\n\n\thook() {\n\t\t// @ts-ignore\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: ScramjetModule = context(key);\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(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 = rewriteUrl(ev.url, this.meta);\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\tconst original = Reflect.get(target, prop);\n\t\tthis.natives.store[name] = original;\n\n\t\tthis.RawProxy(target, prop, handler);\n\t}\n\tRawProxy(target: any, prop: string, handler: Proxy) {\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 = {};\n\n\t\tif (handler.construct) {\n\t\t\th.construct = function (\n\t\t\t\tconstructor: any,\n\t\t\t\targArray: 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: argArray,\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 = Reflect.construct(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 Reflect.construct(ctx.fn, ctx.args, ctx.newTarget);\n\t\t\t};\n\t\t}\n\n\t\tif (handler.apply) {\n\t\t\th.apply = function (fn: any, thisArg: any, argArray: 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: thisArg,\n\t\t\t\t\targs: argArray,\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 = Reflect.apply(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\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(location.origin + config.prefix)\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} 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 Reflect.apply(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(name: string | string[], descriptor: Trap): 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 = nativeGetOwnPropertyDescriptor(target, prop);\n\t\tthis.descriptors.store[name] = original;\n\n\t\treturn this.RawTrap(target, prop, descriptor);\n\t}\n\tRawTrap(\n\t\ttarget: any,\n\t\tprop: string,\n\t\tdescriptor: Trap\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 = nativeGetOwnPropertyDescriptor(target, prop);\n\n\t\tconst ctx: TrapCtx = {\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","import { rewriteUrl } from \"../shared\";\nimport { ScramjetClient } from \"./client\";\nimport { getOwnPropertyDescriptorHandler } from \"./helpers\";\n\nexport function createDocumentProxy(\n\tclient: ScramjetClient,\n\tself: typeof globalThis\n) {\n\treturn new Proxy(self.document, {\n\t\tget(target, prop) {\n\t\t\tif (prop === \"location\") {\n\t\t\t\treturn client.locationProxy;\n\t\t\t}\n\n\t\t\tif (prop === \"defaultView\") {\n\t\t\t\treturn client.globalProxy;\n\t\t\t}\n\n\t\t\tconst value = Reflect.get(target, prop);\n\n\t\t\treturn value;\n\t\t},\n\t\tset(target, prop, newValue) {\n\t\t\tif (prop === \"location\") {\n\t\t\t\tlocation.href = rewriteUrl(newValue, client.meta);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn Reflect.set(target, prop, newValue);\n\t\t},\n\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t});\n}\n","import { ScramjetClient } from \"../client\";\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, thisArg, argArray) {\n\t\t\t\t\t\t\t\tif (thisArg === proxy) {\n\t\t\t\t\t\t\t\t\treturn Reflect.apply(target, map, argArray);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn Reflect.apply(target, thisArg, argArray);\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\", {\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 { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"Navigator.prototype.sendBeacon\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, self: typeof window) {\n\tclient.serviceWorker.addEventListener(\"message\", ({ data }) => {\n\t\tif (!(\"scramjet$type\" in data)) return;\n\n\t\tif (data.scramjet$type === \"cookie\") {\n\t\t\tclient.cookieStore.setCookies([data.cookie], new URL(data.url));\n\t\t}\n\t});\n\n\tclient.Trap(\"Document.prototype.cookie\", {\n\t\tget() {\n\t\t\treturn client.cookieStore.getCookies(client.url, true);\n\t\t},\n\t\tset(ctx, value: string) {\n\t\t\tclient.cookieStore.setCookies([value], client.url);\n\t\t\tconst controller = client.descriptors.get(\n\t\t\t\t\"ServiceWorkerContainer.prototype.controller\",\n\t\t\t\tclient.serviceWorker\n\t\t\t);\n\t\t\tif (controller) {\n\t\t\t\tclient.natives.call(\"ServiceWorker.prototype.postMessage\", controller, {\n\t\t\t\t\tscramjet$type: \"cookie\",\n\t\t\t\t\tcookie: value,\n\t\t\t\t\turl: client.url.href,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n\n\t// @ts-ignore\n\tdelete self.cookieStore;\n}\n","import { ScramjetClient } from \"../client\";\nimport { rewriteCss, unrewriteCss } from \"../../shared\";\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.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.meta));\n\t\t},\n\t\tget(ctx) {\n\t\t\treturn unrewriteCss(ctx.get());\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(t, p) {\n\t\t\t\t\tconst v = Reflect.get(t, p);\n\n\t\t\t\t\tif (typeof v === \"function\") {\n\t\t\t\t\t\treturn new Proxy(v, {\n\t\t\t\t\t\t\tapply(target, thisArg, argArray) {\n\t\t\t\t\t\t\t\treturn Reflect.apply(target, style, argArray);\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 (p in CSSStyleDeclaration.prototype) return v;\n\t\t\t\t\tif (!v) return v;\n\n\t\t\t\t\treturn unrewriteCss(v);\n\t\t\t\t},\n\t\t\t\tset(t, p, v) {\n\t\t\t\t\tif (p == \"cssText\" || v == \"\" || typeof v !== \"string\") {\n\t\t\t\t\t\treturn Reflect.set(t, p, v);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Reflect.set(t, p, rewriteCss(v, client.meta));\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tset(ctx, v: string) {\n\t\t\t// this will actually run the trap for cssText. don't rewrite it here\n\t\t\tctx.set(v);\n\t\t},\n\t});\n}\n","import { rewriteHtml } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\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.cookieStore,\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.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.cookieStore,\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 { SCRAMJETCLIENT } from \"../../symbols\";\nimport { ScramjetClient } from \"../client\";\nimport { nativeGetOwnPropertyDescriptor } from \"../natives\";\nimport { unrewriteUrl, htmlRules, unrewriteHtml } from \"../../shared\";\nimport { rewriteCss, rewriteHtml, rewriteJs } from \"../../shared\";\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: [\n\t\t\tself.HTMLAnchorElement,\n\t\t\tself.HTMLLinkElement,\n\t\t\tself.SVGUseElement,\n\t\t\tself.SVGImageElement,\n\t\t],\n\t\tdata: [self.HTMLObjectElement],\n\t\taction: [self.HTMLFormElement],\n\t\tformaction: [self.HTMLButtonElement, self.HTMLInputElement],\n\t\tsrcdoc: [self.HTMLIFrameElement],\n\t\tsrcset: [self.HTMLImageElement, self.HTMLSourceElement],\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\tnativeGetOwnPropertyDescriptor(self.HTMLAnchorElement.prototype, \"href\"),\n\t\tnativeGetOwnPropertyDescriptor(self.HTMLAreaElement.prototype, \"href\"),\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 = nativeGetOwnPropertyDescriptor(\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));\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));\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() {\n\t\t\t// TODO this should be using ownerdocument but who gaf\n\t\t\tconst base = self.document.querySelector(\"base\");\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() {\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\tctx.args[1] = ruleList.fn(value, client.meta, client.cookieStore);\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.meta, client.cookieStore);\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\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 (ctx.this instanceof self.HTMLScriptElement) {\n\t\t\t\tnewval = rewriteJs(value, \"(anonymous script element)\", 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-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.meta);\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tnewval = rewriteHtml(value, client.cookieStore, 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(\"Element.prototype.outerHTML\", {\n\t\tset(ctx, value: string) {\n\t\t\tctx.set(rewriteHtml(value, client.cookieStore, 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.cookieStore,\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.cookieStore,\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(\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\tif (SCRAMJETCLIENT in realwin) {\n\t\t\t\t\treturn realwin[SCRAMJETCLIENT].globalProxy;\n\t\t\t\t} else {\n\t\t\t\t\t// hook the iframe\n\t\t\t\t\tconst newclient = new ScramjetClient(realwin);\n\t\t\t\t\tnewclient.hook();\n\n\t\t\t\t\treturn newclient.globalProxy;\n\t\t\t\t}\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\treturn realwin[SCRAMJETCLIENT].documentProxy;\n\t\t\t\t} else {\n\t\t\t\t\tconst newclient = new ScramjetClient(realwin);\n\t\t\t\t\tnewclient.hook();\n\n\t\t\t\t\treturn newclient.documentProxy;\n\t\t\t\t}\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\treturn ctx.return(ctx.this.contentDocument);\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Trap(\"TreeWalker.prototype.currentNode\", {\n\t\tget(ctx) {\n\t\t\treturn ctx.get();\n\t\t},\n\t\tset(ctx, value) {\n\t\t\tif (value === client.documentProxy) {\n\t\t\t\treturn ctx.set(self.document);\n\t\t\t}\n\n\t\t\treturn ctx.set(value);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Document.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tconst doc = ctx.call() as Document;\n\n\t\t\tconst scram: ScramjetClient = doc[SCRAMJETCLIENT];\n\t\t\tif (!scram) return ctx.return(doc); // ??\n\n\t\t\treturn ctx.return(scram.documentProxy);\n\t\t},\n\t});\n\n\tclient.Trap(\"Node.prototype.ownerDocument\", {\n\t\tget(ctx) {\n\t\t\tconst doc = ctx.get() as Document | null;\n\t\t\tif (!doc) return null;\n\n\t\t\tconst scram: ScramjetClient = doc[SCRAMJETCLIENT];\n\t\t\tif (!scram) return doc; // ??\n\n\t\t\treturn scram.documentProxy;\n\t\t},\n\t});\n\n\tclient.Trap(\n\t\t[\n\t\t\t\"Node.prototype.parentNode\",\n\t\t\t\"Node.prototype.parentElement\",\n\t\t\t\"Node.prototype.previousSibling\",\n\t\t\t\"Node.prototype.nextSibling\",\n\t\t\t\"Range.prototype.commonAncestorContainer\",\n\t\t\t\"AbstractRange.prototype.endContainer\",\n\t\t\t\"AbstractRange.prototype.startContainer\",\n\t\t],\n\t\t{\n\t\t\tget(ctx) {\n\t\t\t\tconst n = ctx.get() as Node;\n\t\t\t\tif (!(n instanceof Document)) return n;\n\n\t\t\t\tconst scram: ScramjetClient = n[SCRAMJETCLIENT];\n\t\t\t\tif (!scram) return n; // ??\n\n\t\t\t\treturn scram.documentProxy;\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Proxy(\"Node.prototype.getRootNode\", {\n\t\tapply(ctx) {\n\t\t\tconst n = ctx.call() as Node;\n\t\t\tif (!(n instanceof Document)) return ctx.return(n);\n\n\t\t\tconst scram: ScramjetClient = n[SCRAMJETCLIENT];\n\t\t\tif (!scram) return ctx.return(n); // ??\n\n\t\t\treturn ctx.return(scram.documentProxy);\n\t\t},\n\t});\n\n\tclient.Proxy(\n\t\t[\n\t\t\t\"DOMParser.prototype.parseFromString\",\n\t\t\t\"Document.prototype.parseHTMLUnsafe\",\n\t\t],\n\t\t{\n\t\t\tapply(ctx) {\n\t\t\t\tif (ctx.args[1] === \"text/html\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\t\t\tctx.args[0],\n\t\t\t\t\t\t\tclient.cookieStore,\n\t\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch {}\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n}\n","import { ScramjetClient } from \"../client\";\nimport { rewriteCss } from \"../../shared\";\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.meta);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\nimport { rewriteUrl } from \"../../shared\";\nimport { UrlChangeEvent } from \"../events\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"History.prototype.pushState\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[2] || ctx.args[2] === \"\")\n\t\t\t\tctx.args[2] = rewriteUrl(ctx.args[2], client.meta);\n\t\t\tctx.call();\n\n\t\t\tconst ev = new UrlChangeEvent(client.url.href);\n\t\t\tif (client.frame) client.frame.dispatchEvent(ev);\n\t\t},\n\t});\n\n\tclient.Proxy(\"History.prototype.replaceState\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[2] || ctx.args[2] === \"\")\n\t\t\t\tctx.args[2] = rewriteUrl(ctx.args[2], client.meta);\n\t\t\tctx.call();\n\n\t\t\tconst ev = new UrlChangeEvent(client.url.href);\n\t\t\tif (client.frame) client.frame.dispatchEvent(ev);\n\t\t},\n\t});\n}\n","export default function (client, self: Self) {\n\t// @ts-ignore\n\tdelete self.navigation;\n}\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\nimport { SCRAMJETCLIENT } from \"../../symbols\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"window.open\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0]) ctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\n\t\t\tif ([\"_parent\", \"_top\", \"_unfencedTop\"].includes(ctx.args[1]))\n\t\t\t\tctx.args[1] = \"_self\";\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\treturn ctx.return(realwin[SCRAMJETCLIENT].globalProxy);\n\t\t\t} else {\n\t\t\t\tconst newclient = new ScramjetClient(realwin);\n\t\t\t\t// hook the opened window\n\t\t\t\tnewclient.hook();\n\n\t\t\t\treturn ctx.return(newclient.globalProxy);\n\t\t\t}\n\t\t},\n\t});\n\n\t// opener will refer to the real window if it was opened by window.open\n\tclient.Trap(\"opener\", {\n\t\tget(ctx) {\n\t\t\tconst realwin = ctx.get() as Window;\n\n\t\t\tif (realwin && SCRAMJETCLIENT in realwin) {\n\t\t\t\treturn realwin[SCRAMJETCLIENT].globalProxy;\n\t\t\t} else {\n\t\t\t\t// the opener has to have been already hooked, so if we reach here then it's a real window\n\t\t\t\treturn undefined;\n\t\t\t}\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\";\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 { unrewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Trap(\"PerformanceEntry.prototype.name\", {\n\t\tget(ctx) {\n\t\t\treturn unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n}\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\nimport { type MessageC2W } from \"../../worker\";\nimport { flagEnabled } from \"../../scramjet\";\n\n// we need a late order because we're mangling with addEventListener at a higher level\nexport const order = 2;\n\nexport const enabled = (client: ScramjetClient) =>\n\tflagEnabled(\"serviceworkers\", client.url);\n\nexport function disabled(_client: ScramjetClient, _self: Self) {\n\tReflect.deleteProperty(Navigator.prototype, \"serviceWorker\");\n}\n\ntype FakeRegistrationState = {\n\tscope: string;\n\tactive: ServiceWorker;\n};\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tconst registrationmap: WeakMap<\n\t\tServiceWorkerRegistration,\n\t\tFakeRegistrationState\n\t> = new WeakMap();\n\tclient.Proxy(\"EventTarget.prototype.addEventListener\", {\n\t\tapply(ctx) {\n\t\t\tif (registrationmap.get(ctx.this)) {\n\t\t\t\t// do nothing\n\t\t\t\tctx.return(undefined);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"EventTarget.prototype.removeEventListener\", {\n\t\tapply(ctx) {\n\t\t\tif (registrationmap.get(ctx.this)) {\n\t\t\t\t// do nothing\n\t\t\t\tctx.return(undefined);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"ServiceWorkerContainer.prototype.getRegistration\", {\n\t\tapply(ctx) {\n\t\t\tctx.return(new Promise((resolve) => resolve(registration)));\n\t\t},\n\t});\n\n\tclient.Proxy(\"ServiceWorkerContainer.prototype.getRegistrations\", {\n\t\tapply(ctx) {\n\t\t\tctx.return(new Promise((resolve) => resolve([registration])));\n\t\t},\n\t});\n\n\tclient.Trap(\"ServiceWorkerContainer.prototype.ready\", {\n\t\tget(_ctx) {\n\t\t\treturn new Promise((resolve) => resolve(registration));\n\t\t},\n\t});\n\n\tclient.Trap(\"ServiceWorkerContainer.prototype.controller\", {\n\t\tget(ctx) {\n\t\t\treturn registration?.active;\n\t\t},\n\t});\n\n\tclient.Proxy(\"ServiceWorkerContainer.prototype.register\", {\n\t\tapply(ctx) {\n\t\t\tconst fakeRegistration = new EventTarget() as ServiceWorkerRegistration;\n\t\t\tObject.setPrototypeOf(\n\t\t\t\tfakeRegistration,\n\t\t\t\tself.ServiceWorkerRegistration.prototype\n\t\t\t);\n\t\t\tfakeRegistration.constructor = ctx.fn;\n\t\t\tlet url = rewriteUrl(ctx.args[0], client.meta) + \"?dest=serviceworker\";\n\t\t\tif (ctx.args[1] && ctx.args[1].type === \"module\") {\n\t\t\t\turl += \"&type=module\";\n\t\t\t}\n\n\t\t\tconst worker = client.natives.construct(\"SharedWorker\", url);\n\t\t\tconst handle = worker.port;\n\t\t\tconst state: FakeRegistrationState = {\n\t\t\t\tscope: ctx.args[0],\n\t\t\t\tactive: handle as ServiceWorker,\n\t\t\t};\n\t\t\tconst controller = client.descriptors.get(\n\t\t\t\t\"ServiceWorkerContainer.prototype.controller\",\n\t\t\t\tclient.serviceWorker\n\t\t\t);\n\n\t\t\tclient.natives.call(\n\t\t\t\t\"ServiceWorker.prototype.postMessage\",\n\t\t\t\tcontroller,\n\t\t\t\t{\n\t\t\t\t\tscramjet$type: \"registerServiceWorker\",\n\t\t\t\t\tport: handle,\n\t\t\t\t\torigin: client.url.origin,\n\t\t\t\t} as MessageC2W,\n\t\t\t\t[handle]\n\t\t\t);\n\n\t\t\tregistrationmap.set(fakeRegistration, state);\n\t\t\tctx.return(new Promise((resolve) => resolve(fakeRegistration)));\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, self: typeof window) {\n\tconst handler: ProxyHandler = {\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\t\t\t\t\tconsole.log(\"GET\", prop, target == realLocalStorage);\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\tif (target == realLocalStorage)\n\t\t\t\tconsole.log(\"SET\", prop, value, target === realLocalStorage);\n\t\t\ttarget.setItem(client.url.host + \"@\" + (prop as string), value);\n\n\t\t\treturn true;\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\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","export class NavigateEvent extends Event {\n\tconstructor(public url: string) {\n\t\tsuper(\"navigate\");\n\t}\n}\n\nexport class UrlChangeEvent extends Event {\n\tconstructor(public url: string) {\n\t\tsuper(\"urlchange\");\n\t}\n}\n\nexport class ScramjetContextInit extends Event {\n\tconstructor(public window: Self) {\n\t\tsuper(\"contextInit\");\n\t}\n}\n","// import { encodeUrl } from \"../shared\";\nimport { iswindow } from \".\";\nimport { SCRAMJETCLIENT } from \"../symbols\";\nimport { ScramjetClient } from \"./client\";\n// import { config } from \"../shared\";\nimport { getOwnPropertyDescriptorHandler } from \"./helpers\";\n\nexport const UNSAFE_GLOBALS = [\n\t\"window\",\n\t\"self\",\n\t\"globalThis\",\n\t\"this\",\n\t\"parent\",\n\t\"top\",\n\t\"location\",\n\t\"document\",\n\t\"eval\",\n\t\"frames\",\n];\n\nexport function createGlobalProxy(\n\tclient: ScramjetClient,\n\tself: typeof globalThis\n): typeof globalThis {\n\treturn new Proxy(self, {\n\t\tget(target, prop) {\n\t\t\tconst value = Reflect.get(target, prop);\n\n\t\t\tif (\n\t\t\t\tiswindow &&\n\t\t\t\t(typeof prop === \"string\" || typeof prop === \"number\") &&\n\t\t\t\t!isNaN(Number(prop)) &&\n\t\t\t\tvalue\n\t\t\t) {\n\t\t\t\tconst win: Self = value.self;\n\t\t\t\t// indexing into window gives you the contentWindow of the subframes for some reason\n\t\t\t\t// you can't *set* it so this should always be the right value\n\t\t\t\tif (win) {\n\t\t\t\t\tif (SCRAMJETCLIENT in win) {\n\t\t\t\t\t\t// then we've already hooked this frame and we can just send over its proxy\n\t\t\t\t\t\treturn win[SCRAMJETCLIENT].globalProxy;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// this can happen if it's an about:blank iframe that we've never gotten the chance to inject into\n\t\t\t\t\t\t// just make a new client for it and inject\n\t\t\t\t\t\tconst newclient = new ScramjetClient(win);\n\t\t\t\t\t\tnewclient.hook();\n\n\t\t\t\t\t\treturn newclient.globalProxy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (prop === \"$scramjet\") return undefined;\n\n\t\t\tif (typeof prop === \"string\" && UNSAFE_GLOBALS.includes(prop))\n\t\t\t\treturn client.wrapfn(value);\n\n\t\t\treturn value;\n\t\t},\n\n\t\tset(target, prop, value) {\n\t\t\tif (prop === \"location\") {\n\t\t\t\tclient.url = value;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn Reflect.set(target, prop, value);\n\t\t},\n\t\thas(target, prop) {\n\t\t\tif (prop === \"$scramjet\") return false;\n\n\t\t\treturn Reflect.has(target, prop);\n\t\t},\n\t\townKeys(target) {\n\t\t\treturn Reflect.ownKeys(target).filter((key) => key !== \"$scramjet\");\n\t\t},\n\t\tdefineProperty(target, property, attributes) {\n\t\t\tif (!attributes.get && !attributes.set) {\n\t\t\t\tattributes.writable = true;\n\t\t\t}\n\t\t\tattributes.configurable = true;\n\n\t\t\treturn Reflect.defineProperty(target, property, attributes);\n\t\t},\n\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t});\n}\n","export function getOwnPropertyDescriptorHandler(target, prop) {\n\tconst realDescriptor = Reflect.getOwnPropertyDescriptor(target, prop);\n\n\treturn realDescriptor;\n}\n","// entrypoint for scramjet.client.js\n\nimport { loadCodecs } from \"../scramjet\";\nimport { SCRAMJETCLIENT } from \"../symbols\";\nimport { ScramjetClient } from \"./client\";\nimport { ScramjetContextInit } from \"./events\";\nimport { ScramjetServiceWorkerRuntime } from \"./swruntime\";\n\nexport const iswindow = \"window\" in self && window instanceof Window;\nexport const isworker = \"WorkerGlobalScope\" in self;\nexport const issw = \"ServiceWorkerGlobalScope\" in self;\nexport const isdedicated = \"DedicatedWorkerGlobalScope\" in self;\nexport const isshared = \"SharedWorkerGlobalScope\" in self;\nexport const isemulatedsw =\n\tnew URL(self.location.href).searchParams.get(\"dest\") === \"serviceworker\";\n\ndbg.log(\"scrammin\");\n// if it already exists, that means the handlers have probably already been setup by the parent document\nif (!(SCRAMJETCLIENT in >self)) {\n\tloadCodecs();\n\n\tconst client = new ScramjetClient(self);\n\n\tif (self.COOKIE) client.loadcookies(self.COOKIE);\n\n\tclient.hook();\n\n\tif (isemulatedsw) {\n\t\tconst runtime = new ScramjetServiceWorkerRuntime(client);\n\t\truntime.hook();\n\t}\n\n\tconst ev = new ScramjetContextInit(client.global.window);\n\tclient.frame?.dispatchEvent(ev);\n}\n\nReflect.deleteProperty(self, \"WASM\");\nReflect.deleteProperty(self, \"COOKIE\");\nif (\"document\" in self && document?.currentScript) {\n\tdocument.currentScript.remove();\n}\n","// @ts-nocheck\nimport { ScramjetClient } from \"./client\";\nimport { nativeGetOwnPropertyDescriptor } from \"./natives\";\nimport { rewriteUrl } from \"../shared\";\nimport { UrlChangeEvent } from \"./events\";\nimport { iswindow } from \".\";\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 = {};\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 = nativeGetOwnPropertyDescriptor(descriptorSource, prop);\n\t\tif (!native) continue;\n\n\t\tconst desc = {\n\t\t\tconfigurable: true,\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, thisArg, 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.frame) 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, thisArg, args) {\n\t\t\t\targs[0] = rewriteUrl(args[0], client.meta);\n\t\t\t\tReflect.apply(target, self.location, args);\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, thisArg, 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, thisArg, args) {\n\t\t\t\targs[0] = rewriteUrl(args[0], client.meta);\n\t\t\t\tReflect.apply(target, self.location, args);\n\t\t\t},\n\t\t});\n\n\treturn fakeLocation;\n}\n","export const nativeFunction = self.Function;\nexport const nativeGetOwnPropertyDescriptor =\n\tself.Object.getOwnPropertyDescriptor;\n","import { ScramjetClient } from \"../client\";\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 \"../../shared\";\nimport { ScramjetClient } from \"../client\";\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.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\tctx.args[0] = unrewriteBlob(ctx.args[0]);\n\t\t},\n\t});\n}\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\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] = rewriteUrl(ctx.args[0], client.meta);\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] = rewriteUrl(ctx.args[0], client.meta);\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] = rewriteUrl(ctx.args[0][i], client.meta);\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] = rewriteUrl(ctx.args[0], client.meta);\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] = rewriteUrl(ctx.args[0], client.meta);\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] = rewriteUrl(ctx.args[0], client.meta);\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] = rewriteUrl(ctx.args[0], client.meta);\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] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n}\n","import { flagEnabled } from \"../../scramjet\";\nimport { ScramjetClient } from \"../client\";\n\nexport const enabled = (client: ScramjetClient) =>\n\tflagEnabled(\"captureErrors\", client.url);\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\tself.$scramerr = function scramerr(e) {\n\t\tconsole.warn(\"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, thisArg, argArray) {\n\t\t\t\t\t\t// console.warn(\"CAUGHT PROMISE REJECTION\", argArray);\n\t\t\t\t\t\tReflect.apply(target, thisArg, argArray);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t},\n\t});\n}\n","import { flagEnabled } from \"../../scramjet\";\nimport { config, unrewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport const enabled = (client: ScramjetClient) =>\n\tflagEnabled(\"cleanErrors\", client.url);\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\tif (url.endsWith(config.files.client)) {\n\t\t\t\t// strip stack frames including scramjet handlers from the trace\n\t\t\t\tconst lines = newstack.split(\"\\n\");\n\t\t\t\tconst line = lines.find((l) => l.includes(url));\n\t\t\t\tlines.splice(line, 1);\n\t\t\t\tnewstack = lines.join(\"\\n\");\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tnewstack = newstack.replaceAll(url, unrewriteUrl(url));\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 { ScramjetClient } from \"../client\";\nimport { config, rewriteJs } from \"../../shared\";\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, 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(js, \"(direct eval proxy)\", client.meta);\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, 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\tconst indirection = this.global.eval;\n\n\treturn indirection(\n\t\trewriteJs(js, \"(indirect eval proxy)\", this.meta) as string\n\t);\n}\n","import { iswindow } from \"..\";\nimport { SCRAMJETCLIENT } from \"../../symbols\";\nimport { ScramjetClient } from \"../client\";\nimport { getOwnPropertyDescriptorHandler } from \"../helpers\";\nimport { nativeGetOwnPropertyDescriptor } from \"../natives\";\nimport { unproxy } from \"./unproxy\";\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 (typeof this.data === \"object\" && \"$scramjet$type\" in this.data) {\n\t\t\t\t\t// this is a ctl message\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\tconst scram: ScramjetClient = this.source[SCRAMJETCLIENT];\n\n\t\t\t\tif (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};\n\n\t// TODO! window.event not proxied\n\n\tfunction wraplistener(listener: (...args: any) => any) {\n\t\treturn new Proxy(listener, {\n\t\t\tapply(target, thisArg, argArray) {\n\t\t\t\tconst realEvent: Event = argArray[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\tif (handler._init.call(realEvent) === false) return;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\targArray[0] = new Proxy(realEvent, {\n\t\t\t\t\t\t\tget(_target, prop, reciever) {\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\treturn Reflect.get(target, prop, reciever);\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 argArray[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, thisArg, argArray);\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\tunproxy(ctx, client);\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\tunproxy(ctx, client);\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\tclient.Proxy(\"EventTarget.prototype.dispatchEvent\", {\n\t\tapply(ctx) {\n\t\t\tunproxy(ctx, client);\n\t\t},\n\t});\n\n\tconst targets = [self.self, self.MessagePort.prototype] as Array;\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 = nativeGetOwnPropertyDescriptor(target, key);\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 { ScramjetClient, ProxyCtx, Proxy } from \"../client\";\nimport { rewriteJs } from \"../../shared\";\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.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\t/*\n\t// god i love javascript\n\tclient.RawProxy(function () {}.constructor.prototype, \"constructor\", handler);\n\tclient.RawProxy(\n\t\tasync function () {}.constructor.prototype,\n\t\t\"constructor\",\n\t\thandler\n\t);\n\tclient.RawProxy(\n\t\tfunction* () {}.constructor.prototype,\n\t\t\"constructor\",\n\t\thandler\n\t);\n\tclient.RawProxy(\n\t\tasync function* () {}.constructor.prototype,\n\t\t\"constructor\",\n\t\thandler\n\t);\n\t*/\n}\n","import { scramtag } from './snippets/wasm-4b0f351a8e6eeb46/inline0.js';\n\nlet wasm;\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.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\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = 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\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 = encodeString(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 !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\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_export_2.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n/**\n * @param {string} js\n * @param {string} url\n * @param {string} script_url\n * @param {object} scramjet\n * @returns {RewriterOutput}\n */\nexport function rewrite_js(js, url, script_url, scramjet) {\n const ptr0 = passStringToWasm0(js, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(script_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewrite_js(ptr0, len0, ptr1, len1, ptr2, len2, scramjet);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\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/**\n * @param {Uint8Array} js\n * @param {string} url\n * @param {string} script_url\n * @param {object} scramjet\n * @returns {RewriterOutput}\n */\nexport function rewrite_js_from_arraybuffer(js, url, script_url, scramjet) {\n const ptr0 = passArray8ToWasm0(js, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(script_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewrite_js_from_arraybuffer(ptr0, len0, ptr1, len1, ptr2, len2, scramjet);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\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 if (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_call_3b770f0d6eb4720e = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = arg0.call(arg1, arg2, arg3);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_500db948e69c7330 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.call(arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_b0d8e36992d9900d = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_get_bbccf8970793c087 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_17f755666e48d1d8 = function() { return handleError(function (arg0, arg1) {\n const ret = new URL(getStringFromWasm0(arg0, arg1));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_254fa9eac11932ae = function() {\n const ret = new Array();\n return ret;\n };\n imports.wbg.__wbg_new_688846f374351c92 = function() {\n const ret = new Object();\n return ret;\n };\n imports.wbg.__wbg_newnoargs_fd9e4bf8be2bc16d = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_newwithbase_aa2c471fe3eacc2b = 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_now_62a101fe35b60230 = function(arg0) {\n const ret = arg0.now();\n return ret;\n };\n imports.wbg.__wbg_scramtag_bd98edaa0eaec45e = 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_4e647025551483bd = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_static_accessor_GLOBAL_0be7472e492ad3e3 = function() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_THIS_1a6eb482d12c9bfb = function() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_SELF_1dc398a895c82351 = function() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_WINDOW_ae1c80c7eea8d64a = function() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_toString_a491ccf7be1ca5c9 = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbg_toString_cbcf95f260c441ae = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbindgen_boolean_get = function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_error_new = function(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\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 imports.wbg.__wbindgen_is_function = function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = 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.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_uint8_array_new = function(arg0, arg1) {\n var v0 = getArrayU8FromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_free(arg0, arg1 * 1, 1);\n const ret = v0;\n return ret;\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n imports.wbg.memory = memory || new WebAssembly.Memory({initial:18,maximum:16384,shared:true});\n}\n\nfunction __wbg_finalize_init(instance, module, thread_stack_size) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n if (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { throw 'invalid stack size' }\n wasm.__wbindgen_start(thread_stack_size);\n return wasm;\n}\n\nfunction initSync(module, memory) {\n if (wasm !== undefined) return wasm;\n\n let thread_stack_size\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module, memory, thread_stack_size} = 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 __wbg_init_memory(imports, memory);\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, thread_stack_size);\n}\n\nasync function __wbg_init(module_or_path, memory) {\n if (wasm !== undefined) return wasm;\n\n let thread_stack_size\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path, memory, thread_stack_size} = 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 __wbg_init_memory(imports, memory);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module, thread_stack_size);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","\n// slightly modified https://github.com/ungap/random-uuid/blob/main/index.js\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 { URLMeta } from \"./url\";\n\n// i am a cat. i like to be petted. i like to be fed. i like to be\nimport {\n\tinitSync,\n\trewrite_js,\n\trewrite_js_from_arraybuffer,\n\tRewriterOutput,\n} from \"../../../rewriter/wasm/out/wasm.js\";\nimport { $scramjet, flagEnabled } from \"../../scramjet\";\n\ninitSync({\n\tmodule: new WebAssembly.Module(\n\t\tUint8Array.from(atob(self.WASM), (c) => c.charCodeAt(0))\n\t),\n});\n\nError.stackTraceLimit = 50;\n\nconst decoder = new TextDecoder();\n\nfunction rewriteJsWrapper(\n\tinput: string | ArrayBuffer,\n\turl: string | null,\n\tmeta: URLMeta\n): string | ArrayBuffer {\n\tlet out: RewriterOutput;\n\tconst before = performance.now();\n\ttry {\n\t\tif (typeof input === \"string\") {\n\t\t\tout = rewrite_js(input, meta.base.href, url || \"(unknown)\", $scramjet);\n\t\t} else {\n\t\t\tout = rewrite_js_from_arraybuffer(\n\t\t\t\tnew Uint8Array(input),\n\t\t\t\tmeta.base.href,\n\t\t\t\turl || \"(unknown)\",\n\t\t\t\t$scramjet\n\t\t\t);\n\t\t}\n\t} catch (err) {\n\t\tlet err1 = err as Error;\n\t\tconsole.error(\"failed rewriting js for\", url, err1, input);\n\t\terr1.message = `failed rewriting js for \"${url}\": ${err1.message}`;\n\t\tthrow err1;\n\t}\n\tconst after = performance.now();\n\tconst { js, errors, duration } = out;\n\n\tif (flagEnabled(\"rewriterLogs\", meta.base)) {\n\t\tfor (const error of errors) {\n\t\t\tconsole.error(\"oxc parse error\", error);\n\t\t}\n\t}\n\n\tif (flagEnabled(\"rewriterLogs\", meta.base)) {\n\t\tlet timespan: string;\n\t\tif (duration < 1n) {\n\t\t\ttimespan = \"BLAZINGLY FAST\";\n\t\t} else if (duration < 500n) {\n\t\t\ttimespan = \"decent speed\";\n\t\t} else {\n\t\t\ttimespan = \"really slow\";\n\t\t}\n\t\tconst overhead = (after - before - Number(duration)).toFixed(2);\n\t\tconsole.log(\n\t\t\t`oxc rewrite for \"${url || \"(unknown)\"}\" was ${timespan} (${duration}ms; ${overhead}ms overhead)`\n\t\t);\n\t}\n\n\treturn typeof input === \"string\" ? decoder.decode(js) : js;\n}\n\nexport function rewriteJs(\n\tjs: string | ArrayBuffer,\n\turl: string | null,\n\tmeta: URLMeta\n) {\n\tif (flagEnabled(\"naiiveRewriter\", meta.origin)) {\n\t\tconst text = typeof js === \"string\" ? js : new TextDecoder().decode(js);\n\n\t\tconsole.log(\"naiive\");\n\n\t\treturn rewriteJsNaiive(text);\n\t}\n\n\tjs = rewriteJsWrapper(js, url, meta);\n\n\treturn js;\n}\n\n// 1. does not work with modules\n// 2. cannot proxy import()\n// 3. disables \"use strict\" optimizations\n// 4. i think the global state can get clobbered somehow\n//\n// if you can ensure all the preconditions are met this is faster than full rewrites\nexport function rewriteJsNaiive(js: string | ArrayBuffer) {\n\tif (typeof js !== \"string\") {\n\t\tjs = new TextDecoder().decode(js);\n\t}\n\n\treturn `\n\t\twith (${$scramjet.config.globals.wrapfn}(globalThis)) {\n\n\t\t\t${js}\n\n\t\t}\n\t`;\n}\n","import { $scramjet } from \"../../scramjet\";\nimport { rewriteJs } from \"./js\";\n\nexport type URLMeta = {\n\torigin: URL;\n\tbase: URL;\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(url: string, meta: URLMeta) {\n\tconst blob = new URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + meta.origin.origin + blob.pathname;\n}\n\nexport function unrewriteBlob(url: string) {\n\tconst blob = new URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + location.origin + blob.pathname;\n}\n\nexport function rewriteUrl(url: string | URL, meta: URLMeta) {\n\tif (url instanceof URL) {\n\t\turl = url.toString();\n\t}\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\treturn (\n\t\t\t\"javascript:\" +\n\t\t\trewriteJs(url.slice(\"javascript:\".length), \"(javascript: url)\", meta)\n\t\t);\n\t} else if (url.startsWith(\"blob:\")) {\n\t\treturn location.origin + $scramjet.config.prefix + url;\n\t} else if (url.startsWith(\"data:\")) {\n\t\treturn location.origin + $scramjet.config.prefix + 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:\")) base = unrewriteUrl(self.location.href); // jank!!!!! weird jank!!!\n\t\tconst realUrl = tryCanParseURL(url, base);\n\t\tif (!realUrl) return url;\n\n\t\treturn (\n\t\t\tlocation.origin +\n\t\t\t$scramjet.config.prefix +\n\t\t\t$scramjet.codec.encode(realUrl.href)\n\t\t);\n\t}\n}\n\nexport function unrewriteUrl(url: string | URL) {\n\tif (url instanceof URL) {\n\t\turl = url.toString();\n\t}\n\n\tconst prefixed = location.origin + $scramjet.config.prefix;\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(prefixed + \"blob:\")) {\n\t\treturn url.substring(prefixed.length);\n\t} else if (url.startsWith(prefixed + \"data:\")) {\n\t\treturn url.substring(prefixed.length);\n\t} else if (url.startsWith(\"mailto:\") || url.startsWith(\"about:\")) {\n\t\treturn url;\n\t} else if (tryCanParseURL(url)) {\n\t\treturn $scramjet.codec.decode(\n\t\t\turl.slice((location.origin + $scramjet.config.prefix).length)\n\t\t);\n\t} else {\n\t\treturn url;\n\t}\n}\n","import { ScramjetClient } from \"../client\";\nimport { config } from \"../../shared\";\nimport { rewriteUrl } from \"../../shared/rewriters/url\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tconst Function = client.natives.store[\"Function\"];\n\n\tself[config.globals.importfn] = function (base: string) {\n\t\treturn function (url: string) {\n\t\t\tconst resolved = new URL(url, base).href;\n\n\t\t\treturn Function(\n\t\t\t\t`return import(\"${rewriteUrl(resolved, client.meta)}\")`\n\t\t\t)();\n\t\t};\n\t};\n\n\tself[config.globals.metafn] = function (base: string) {\n\t\treturn {\n\t\t\turl: base,\n\t\t\tresolve: function (url: string) {\n\t\t\t\treturn new URL(url, base).href;\n\t\t\t},\n\t\t};\n\t};\n}\n","import { ScramjetClient } from \"../client\";\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 { iswindow } from \"..\";\nimport { SCRAMJETCLIENT } from \"../../symbols\";\nimport { ScramjetClient } from \"../client\";\nimport { POLLUTANT } from \"../shared/realm\";\n\nexport default function (client: ScramjetClient) {\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\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\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}\n","import { ScramjetClient } from \"../client\";\nimport { config } from \"../../shared\";\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, config.globals.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 { unrewriteUrl, rewriteUrl } from \"../../../shared\";\nimport { ScramjetClient } from \"../../client\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"EventSource\", {\n\t\tconstruct(ctx) {\n\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t},\n\t});\n\n\tclient.Trap(\"EventSource.prototype.url\", {\n\t\tget(ctx) {\n\t\t\tunrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n}\n","// ts throws an error if you dont do window.fetch\n\nimport { isemulatedsw } from \"../..\";\nimport { unrewriteUrl } from \"../../../shared\";\nimport { ScramjetClient } from \"../../client\";\nimport { rewriteUrl } from \"../../../shared\";\n\nexport default function (client: ScramjetClient, _self: typeof globalThis) {\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] = rewriteUrl(ctx.args[0], client.meta);\n\n\t\t\t\tif (isemulatedsw) ctx.args[0] += \"?from=swruntime\";\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] = rewriteUrl(ctx.args[0], client.meta);\n\n\t\t\t\tif (isemulatedsw) ctx.args[0] += \"?from=swruntime\";\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Trap(\"Response.prototype.url\", {\n\t\tget(ctx) {\n\t\t\treturn 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 unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n}\n","import { type BareWebSocket } from \"@mercuryworkshop/bare-mux\";\nimport { ScramjetClient } from \"../../client\";\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};\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\tconst socketmap: WeakMap = new WeakMap();\n\tclient.Proxy(\"WebSocket\", {\n\t\tconstruct(ctx) {\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(\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\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\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 (v === \"blob\" || v === \"arraybuffer\") ws.binaryType = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.bufferedAmount\", {\n\t\tget() {\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\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\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\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\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\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\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\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\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\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\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\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\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\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 (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","import { flagEnabled } from \"../../../scramjet\";\nimport { config, unrewriteUrl, rewriteUrl } from \"../../../shared\";\nimport { ScramjetClient } from \"../../client\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tlet worker;\n\tif (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] = rewriteUrl(ctx.args[1], client.meta);\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 (!flagEnabled(\"syncxhr\", client.url)) {\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-expect-error maxbytelength not in types yet i guess\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\t// send has no return value right\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 unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n}\n","import { $scramjet, flagEnabled } from \"../../scramjet\";\nimport { ScramjetClient } from \"../client\";\n\nenum RewriteType {\n\tInsert = 0,\n\tReplace = 1,\n}\n\ntype Rewrite =\n\t| {\n\t\t\ttype: RewriteType.Insert;\n\t\t\t// offset before this rewrite\n\t\t\toffset: number;\n\t\t\t// start of insertion\n\t\t\tstart: number;\n\t\t\t// size of insertion\n\t\t\tsize: number;\n\t }\n\t| {\n\t\t\ttype: RewriteType.Replace;\n\t\t\t// offset before this rewrite\n\t\t\toffset: number;\n\t\t\t// start of replacement\n\t\t\tstart: number;\n\t\t\t// end of replacement\n\t\t\tend: number;\n\t\t\t// old string\n\t\t\tstr: string;\n\t };\n\nconst sourcemaps: Record = {};\n\nexport const enabled = (client: ScramjetClient) =>\n\tflagEnabled(\"sourcemaps\", client.url);\n\nexport default function (client: ScramjetClient, self: Self) {\n\t// every script will push a sourcemap\n\tObject.defineProperty(self, $scramjet.config.globals.pushsourcemapfn, {\n\t\tvalue: (buf: Array, tag: string) => {\n\t\t\tconst sourcemap = Uint8Array.from(buf);\n\t\t\tconst view = new DataView(sourcemap.buffer);\n\t\t\tconst decoder = new TextDecoder(\"utf-8\");\n\n\t\t\tconst rewrites = [];\n\n\t\t\tconst rewritelen = view.getUint32(0, true);\n\t\t\tlet cursor = 0;\n\t\t\tfor (let i = 0; i < rewritelen; i++) {\n\t\t\t\tconst type = view.getUint8(cursor) as RewriteType;\n\t\t\t\tcursor += 1;\n\n\t\t\t\tif (type == RewriteType.Insert) {\n\t\t\t\t\tconst offset = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\t\t\t\t\tconst start = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\t\t\t\t\tconst size = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\n\t\t\t\t\trewrites.push({ type, offset, start, size });\n\t\t\t\t} else if (type == RewriteType.Replace) {\n\t\t\t\t\tconst offset = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\t\t\t\t\tconst start = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\t\t\t\t\tconst end = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\n\t\t\t\t\tconst str = decoder.decode(sourcemap.subarray(start, end));\n\n\t\t\t\t\trewrites.push({ type, offset, start, end, str });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsourcemaps[tag] = rewrites;\n\t\t},\n\t\tenumerable: false,\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n\n\tconst scramtag_ident = \"/*scramtag \";\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\tlet stringified: string = ctx.fn.call(ctx.this);\n\t\t\tlet newString = \"\";\n\n\t\t\t// every function rewritten will have a scramtag comment\n\t\t\t// it will look like this:\n\t\t\t// function name() /*scramtag [index] [tag] */ { ... }\n\t\t\tconst scramtagstart = stringified.indexOf(\"/*s\");\n\n\t\t\tif (scramtagstart === -1) return ctx.return(stringified); // it's either a native function or something stolen from scramjet itself\n\n\t\t\tconst firstspace = stringified.indexOf(\n\t\t\t\t\" \",\n\t\t\t\tscramtagstart + scramtag_ident.length\n\t\t\t);\n\t\t\t// [index] holds the index of the first character in the scramtag (/)\n\t\t\tconst abstagindex = parseInt(\n\t\t\t\tstringified.substring(scramtagstart + scramtag_ident.length, firstspace)\n\t\t\t);\n\n\t\t\t// subtracting that from the index of the scramtag gives us the starting index of the function relative to the entire file\n\t\t\tconst absindex = abstagindex - scramtagstart;\n\n\t\t\tconst scramtagend = stringified.indexOf(\"*/\", scramtagstart);\n\t\t\tconst tag = stringified.substring(firstspace + 1, scramtagend);\n\n\t\t\t// delete all scramtags inside the function (and nested ones!!)\n\t\t\tstringified = stringified.replace(/\\/\\*scramtag.*?\\*\\//g, \"\");\n\n\t\t\tconst maps = sourcemaps[tag];\n\n\t\t\tlet i = 0;\n\t\t\tlet offset = 0;\n\n\t\t\tlet j = 0;\n\t\t\twhile (j < maps.length) {\n\t\t\t\t/* TODO\n\t\t\t\tconst [str, start, end] = maps[j];\n\t\t\t\tif (start < absindex) {\n\t\t\t\t\tj++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (start - absindex + offset > stringified.length) break;\n\n\t\t\t\t// ooh i should really document this before i forget how it works\n\t\t\t\tnewString += stringified.slice(i, start - absindex + offset);\n\t\t\t\tnewString += str;\n\t\t\t\toffset += end - start - str.length;\n\t\t\t\ti = start - absindex + offset + str.length;\n\n\t\t\t\tj++;\n\t\t\t\t*/\n\t\t\t}\n\n\t\t\tnewString += stringified.slice(i);\n\n\t\t\treturn ctx.return(newString);\n\t\t},\n\t});\n}\n","export default function (client, self) {\n\tdelete self.TrustedHTML;\n\tdelete self.TrustedScript;\n\tdelete self.TrustedScriptURL;\n\tdelete self.TrustedTypePolicy;\n\tdelete self.TrustedTypePolicyFactory;\n\tself.__defineGetter__(\"trustedTypes\", () => undefined);\n}\n","import { iswindow } from \"..\";\nimport { ProxyCtx, ScramjetClient } from \"../client\";\n\n// we don't want to end up overriding a property on window that's derived from a prototype until we've proxied the prototype\nexport const order = 3;\n\nexport default function (client: ScramjetClient, self: typeof window) {\n\t// an automated approach to cleaning the documentProxy from dom functions\n\t// it will trigger an illegal invocation if you pass the proxy to c++ code, we gotta hotswap it out with the real one\n\t// admittedly this is pretty slow. worth investigating if there's ways to get back some of the lost performance\n\n\tfor (const target of [self]) {\n\t\tfor (const prop in target) {\n\t\t\ttry {\n\t\t\t\tif (typeof target[prop] === \"function\") {\n\t\t\t\t\tclient.RawProxy(target, prop, {\n\t\t\t\t\t\tapply(ctx) {\n\t\t\t\t\t\t\tunproxy(ctx, client);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tif (!iswindow) return;\n\n\tfor (const target of [\n\t\tself.Node.prototype,\n\t\tself.MutationObserver.prototype,\n\t\tself.document,\n\t\tself.MouseEvent.prototype,\n\t\tself.Range.prototype,\n\t]) {\n\t\tfor (const prop in target) {\n\t\t\ttry {\n\t\t\t\tif (typeof target[prop] === \"function\") {\n\t\t\t\t\tclient.RawProxy(target, prop, {\n\t\t\t\t\t\tapply(ctx) {\n\t\t\t\t\t\t\tunproxy(ctx, client);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tclient.Proxy(\"IntersectionObserver\", {\n\t\tconstruct(ctx) {\n\t\t\tif (ctx.args[1] && ctx.args[1].root) ctx.args[1].root = self.document;\n\t\t},\n\t});\n\n\t// this is probably not how stuff should be done but you cant run defineProperty on the window proxy so...\n\tclient.Proxy(\"Object.defineProperty\", {\n\t\tapply(ctx) {\n\t\t\tunproxy(ctx, client);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Object.getOwnPropertyDescriptor\", {\n\t\tapply(ctx) {\n\t\t\tconst desc = ctx.call();\n\n\t\t\tif (!desc) return;\n\n\t\t\tif (desc.get) {\n\t\t\t\tclient.RawProxy(desc, \"get\", {\n\t\t\t\t\tapply(getCtx) {\n\t\t\t\t\t\t// value of this in the getter needs to be corrected\n\t\t\t\t\t\tunproxy(getCtx, client);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (desc.set) {\n\t\t\t\tclient.RawProxy(desc, \"set\", {\n\t\t\t\t\tapply(setCtx) {\n\t\t\t\t\t\tunproxy(setCtx, client);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// i don't think we have to care about value but it's worth looking into\n\n\t\t\tctx.return(desc);\n\t\t},\n\t});\n}\n\nexport function unproxy(ctx: ProxyCtx, client: ScramjetClient) {\n\tconst self = client.global;\n\tif (ctx.this === client.globalProxy) ctx.this = self;\n\tif (ctx.this === client.documentProxy) ctx.this = self.document;\n\n\tfor (const i in ctx.args) {\n\t\tif (ctx.args[i] === client.documentProxy) ctx.args[i] = self.document;\n\t\tif (ctx.args[i] === client.globalProxy) ctx.args[i] = self;\n\t}\n}\n","import { BareMuxConnection } from \"../../shared\";\nimport { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: typeof globalThis) {\n\tclient.Proxy(\"Worker\", {\n\t\tconstruct({ args, call }) {\n\t\t\targs[0] = rewriteUrl(args[0], client.meta) + \"?dest=worker\";\n\n\t\t\tif (args[1] && args[1].type === \"module\") {\n\t\t\t\targs[0] += \"&type=module\";\n\t\t\t}\n\n\t\t\tconst worker = call();\n\t\t\tconst 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({ args, call }) {\n\t\t\targs[0] = rewriteUrl(args[0], client.meta) + \"?dest=worker\";\n\n\t\t\tif (args[1] && typeof args[1] === \"string\")\n\t\t\t\targs[1] = `${client.url.origin}@${args[1]}`;\n\n\t\t\tif (args[1] && typeof args[1] === \"object\") {\n\t\t\t\tif (args[1].type === \"module\") {\n\t\t\t\t\targs[0] += \"&type=module\";\n\t\t\t\t}\n\n\t\t\t\tif (args[1].name) {\n\t\t\t\t\targs[1].name = `${client.url.origin}@${args[1].name}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst worker = call();\n\t\t\tconst 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]) ctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t},\n\t});\n}\n","import { iswindow } from \"..\";\nimport { SCRAMJETCLIENT } from \"../../symbols\";\nimport { ScramjetClient } from \"../client\";\nimport { config } from \"../../shared\";\n// import { argdbg } from \"./err\";\nimport { indirectEval } from \"./eval\";\n\nexport function createWrapFn(client: ScramjetClient, self: typeof globalThis) {\n\treturn function (identifier: any) {\n\t\tif (identifier === self) return client.globalProxy;\n\t\tif (identifier === self.location) return client.locationProxy;\n\t\tif (identifier === eval) return indirectEval.bind(client);\n\n\t\tif (iswindow) {\n\t\t\tif (identifier === self.parent) {\n\t\t\t\tif (SCRAMJETCLIENT in self.parent) {\n\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\treturn self.parent[SCRAMJETCLIENT].globalProxy;\n\t\t\t\t} else {\n\t\t\t\t\t// ... then we should pretend we aren't nested and return the current window\n\t\t\t\t\treturn client.globalProxy;\n\t\t\t\t}\n\t\t\t} else if (identifier === self.document) {\n\t\t\t\treturn client.documentProxy;\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\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\tif (!(SCRAMJETCLIENT in test)) break;\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[SCRAMJETCLIENT].globalProxy;\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\t// the main magic of the proxy. all attempts to access any \"banned objects\" will be redirected here, and instead served a proxy object\n\t// this contrasts from how other proxies will leave the root object alone and instead attempt to catch every member access\n\t// this presents some issues (see element.ts), but makes us a good bit faster at runtime!\n\tObject.defineProperty(self, config.globals.wrapfn, {\n\t\tvalue: client.wrapfn,\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n\tObject.defineProperty(self, config.globals.wrapthisfn, {\n\t\tvalue: function (i) {\n\t\t\tif (i === self) return client.globalProxy;\n\n\t\t\treturn i;\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n\n\tself.$scramitize = function (v) {\n\t\tif (typeof v === \"string\" && v.includes(\"scramjet\")) {\n\t\t\tdebugger;\n\t\t}\n\n\t\tif (typeof v === \"string\" && v.includes(location.origin)) {\n\t\t\tdebugger;\n\t\t}\n\n\t\tif (v === self && v?.$scramjet) {\n\t\t\tdebugger;\n\t\t}\n\n\t\tif (iswindow && v instanceof Document && v.defaultView?.$scramjet) {\n\t\t\tdebugger;\n\t\t}\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, config.globals.trysetfn, {\n\t\tvalue: function (lhs: any, op: string, rhs: any) {\n\t\t\tif (lhs instanceof Location) {\n\t\t\t\t// @ts-ignore\n\t\t\t\tlocationProxy.href = rhs;\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n}\n","import { ScramjetClient } from \"./client\";\nimport { unrewriteUrl } from \"../shared\";\n\nexport class ScramjetServiceWorkerRuntime {\n\trecvport: MessagePort;\n\tconstructor(public client: ScramjetClient) {\n\t\t// @ts-ignore\n\t\tself.onconnect = (cevent: MessageEvent) => {\n\t\t\tconst port = cevent.ports[0];\n\t\t\tdbg.log(\"sw\", \"connected\");\n\n\t\t\tport.addEventListener(\"message\", (event) => {\n\t\t\t\tconsole.log(\"sw\", event.data);\n\t\t\t\tif (\"scramjet$type\" in event.data) {\n\t\t\t\t\tif (event.data.scramjet$type === \"init\") {\n\t\t\t\t\t\tthis.recvport = event.data.scramjet$port;\n\t\t\t\t\t\tthis.recvport.postMessage({ scramjet$type: \"init\" });\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandleMessage.call(this, client, event.data);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tport.start();\n\t\t};\n\t}\n\n\thook() {\n\t\tthis.client.global.registration = {\n\t\t\t// TODO IMPLEMENT SCOPES\n\t\t\tscope: this.client.url.href,\n\t\t\tactive: {\n\t\t\t\tscriptURL: this.client.url.href,\n\t\t\t\tstate: \"activated\",\n\t\t\t\tonstatechange: null,\n\t\t\t\tonerror: null,\n\n\t\t\t\tpostMessage: () => {},\n\t\t\t\taddEventListener: () => {},\n\t\t\t\tremoveEventListener: () => {},\n\t\t\t\tdispatchEvent: (_e: Event) => {},\n\t\t\t},\n\t\t\tshowNotification: async () => {},\n\t\t\tunregister: async () => true,\n\t\t\tupdate: async () => {},\n\t\t\tinstalling: null,\n\t\t\twaiting: null,\n\t\t};\n\n\t\t// @ts-ignore\n\t\tthis.client.global.ServiceWorkerGlobalScope = this.client.global;\n\t}\n}\n\nfunction handleMessage(\n\tthis: ScramjetServiceWorkerRuntime,\n\tclient: ScramjetClient,\n\tdata: MessageW2R\n) {\n\tconst port = this.recvport;\n\tconst type = data.scramjet$type;\n\tconst token = data.scramjet$token;\n\tconst handlers = client.eventcallbacks.get(self);\n\n\tif (type === \"fetch\") {\n\t\tdbg.log(\"ee\", data);\n\t\tconst fetchhandlers = handlers.filter((event) => event.event === \"fetch\");\n\t\tif (!fetchhandlers) return;\n\n\t\tfor (const handler of fetchhandlers) {\n\t\t\tconst request = data.scramjet$request;\n\n\t\t\tconst Request = client.natives[\"Request\"];\n\t\t\tconst fakeRequest = new Request(unrewriteUrl(request.url), {\n\t\t\t\tbody: request.body,\n\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\tmethod: request.method,\n\t\t\t\tmode: \"same-origin\",\n\t\t\t});\n\n\t\t\tObject.defineProperty(fakeRequest, \"destination\", {\n\t\t\t\tvalue: request.destinitation,\n\t\t\t});\n\n\t\t\t// TODO: clean up, maybe put into a class\n\t\t\tconst fakeFetchEvent: any = new Event(\"fetch\");\n\t\t\tfakeFetchEvent.request = fakeRequest;\n\t\t\tlet responded = false;\n\t\t\tfakeFetchEvent.respondWith = (response: Response | Promise) => {\n\t\t\t\tresponded = true;\n\t\t\t\t(async () => {\n\t\t\t\t\tresponse = await response;\n\t\t\t\t\tconst message: MessageR2W = {\n\t\t\t\t\t\tscramjet$type: \"fetch\",\n\t\t\t\t\t\tscramjet$token: token,\n\t\t\t\t\t\tscramjet$response: {\n\t\t\t\t\t\t\tbody: response.body,\n\t\t\t\t\t\t\theaders: Array.from(response.headers.entries()),\n\t\t\t\t\t\t\tstatus: response.status,\n\t\t\t\t\t\t\tstatusText: response.statusText,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tdbg.log(\"sw\", \"responding\", message);\n\t\t\t\t\tport.postMessage(message, [response.body]);\n\t\t\t\t})();\n\t\t\t};\n\n\t\t\tdbg.log(\"to fn\", fakeFetchEvent);\n\t\t\thandler.proxiedCallback(trustEvent(fakeFetchEvent));\n\t\t\tif (!responded) {\n\t\t\t\tconsole.log(\"sw\", \"no response\");\n\t\t\t\tport.postMessage({\n\t\t\t\t\tscramjet$type: \"fetch\",\n\t\t\t\t\tscramjet$token: token,\n\t\t\t\t\tscramjet$response: false,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction trustEvent(event: Event): Event {\n\treturn new Proxy(event, {\n\t\tget(target, prop, _reciever) {\n\t\t\tif (prop === \"isTrusted\") return true;\n\n\t\t\treturn Reflect.get(target, prop);\n\t\t},\n\t});\n}\n\nexport type TransferrableResponse = {\n\tbody: ReadableStream;\n\theaders: [string, string][];\n\tstatus: number;\n\tstatusText: string;\n};\n\nexport type TransferrableRequest = {\n\tbody: ReadableStream;\n\theaders: [string, string][];\n\tdestinitation: RequestDestination;\n\tmethod: Request[\"method\"];\n\tmode: Request[\"mode\"];\n\turl: string;\n};\n\ntype FetchResponseMessage = {\n\tscramjet$type: \"fetch\";\n\tscramjet$response: TransferrableResponse;\n};\n\ntype FetchRequestMessage = {\n\tscramjet$type: \"fetch\";\n\tscramjet$request: TransferrableRequest;\n};\n\n// r2w = runtime to (service) worker\n\ntype MessageTypeR2W = FetchResponseMessage;\ntype MessageTypeW2R = FetchRequestMessage;\n\ntype MessageCommon = {\n\tscramjet$type: string;\n\tscramjet$token: number;\n};\n\nexport type MessageR2W = MessageCommon & MessageTypeR2W;\nexport type MessageW2R = MessageCommon &\n\tMessageTypeW2R & { scramjet$port?: MessagePort };\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"importScripts\", {\n\t\tapply(ctx) {\n\t\t\tfor (const i in ctx.args) {\n\t\t\t\tctx.args[i] = rewriteUrl(ctx.args[i], client.meta);\n\t\t\t}\n\t\t},\n\t});\n}\n","export 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\tconst fn = console[severity] || console.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${fmt}%c ${message}`,\n\t\t\t`\n\t\tbackground-color: ${bg};\n\t\tcolor: ${fg};\n\t\tpadding: ${padding}px;\n\t\tfont-weight: bold;\n\t\tfont-family: monospace;\n\t\tfont-size: 0.9em;\n\t`,\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};\n","import { ScramjetFlags } from \"./types\";\n\nif (!(\"$scramjet\" in self)) {\n\t// @ts-expect-error ts stuff\n\tself.$scramjet = {\n\t\tversion: {\n\t\t\tbuild: COMMITHASH,\n\t\t\tversion: VERSION,\n\t\t},\n\t\tcodec: {},\n\t\tflagEnabled,\n\t};\n}\n\nexport const $scramjet = self.$scramjet;\n\nconst nativeFunction = Function;\nexport function loadCodecs() {\n\t$scramjet.codec.encode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.encode\n\t) as any;\n\t$scramjet.codec.decode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.decode\n\t) as any;\n}\n\nexport function flagEnabled(flag: keyof ScramjetFlags, url: URL): boolean {\n\tconst value = $scramjet.config.flags[flag];\n\tfor (const regex in $scramjet.config.siteFlags) {\n\t\tconst partialflags = $scramjet.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}\n","import { $scramjet } from \"./scramjet\";\n\nexport const {\n\tutil: { BareClient, ScramjetHeaders, BareMuxConnection },\n\turl: { rewriteUrl, unrewriteUrl, rewriteBlob, unrewriteBlob },\n\trewrite: {\n\t\trewriteCss,\n\t\tunrewriteCss,\n\t\trewriteHtml,\n\t\tunrewriteHtml,\n\t\trewriteSrcset,\n\t\trewriteJs,\n\t\trewriteHeaders,\n\t\trewriteWorkers,\n\t\thtmlRules,\n\t},\n\tCookieStore,\n} = $scramjet.shared;\n\nexport const config = $scramjet.config;\n","// see types.d.ts for what these mean\nexport const SCRAMJETCLIENT = Symbol.for(\"scramjet client global\");\nexport const SCRAMJETFRAME = Symbol.for(\"scramjet frame handle\");\n"],"names":["ScramjetClient","global","CookieStore","Map","SCRAMJETCLIENT","console","Error","iswindow","createDocumentProxy","createLocationProxy","createGlobalProxy","createWrapFn","BareClient","Promise","resolve","addEventListener","data","Proxy","target","prop","split","realProp","realTarget","a","b","original","Reflect","args","that","nativeGetOwnPropertyDescriptor","value","client","base","url","frag","undefined","URL","frame","sframe","SCRAMJETFRAME","currentwin","cookiestr","context","modules","key","module","aorder","unrewriteUrl","ev","NavigateEvent","rewriteUrl","name","handler","Array","n","h","constructor","argArray","newTarget","returnValue","earlyreturn","ctx","r","fn","thisArg","pst","err","s","location","config","Object","getOwnPropertyDescriptorHandler","descriptor","oldDescriptor","v","desc","self","newValue","_self","map","proxy","_receiver","namespace","NamedNodeMap","isNaN","Number","keys","controller","rewriteCss","unrewriteCss","style","t","p","CSSStyleDeclaration","rewriteHtml","encoder","TextEncoder","attrObject","urlinterfaces","originalhrefs","attr","element","i","href","attrib","cleaned","attrNames","ruleList","htmlRules","rule","_ctx","_namespace","newval","rewriteJs","btoa","byte","String","scriptSource","atob","unrewriteHtml","realwin","newclient","doc","scram","Document","UrlChangeEvent","f","win","order","enabled","flagEnabled","disabled","_client","Navigator","registrationmap","WeakMap","registration","fakeRegistration","EventTarget","handle","worker","state","index","realLocalStorage","property","attributes","localStorageProxy","sessionStorageProxy","Event","ScramjetContextInit","window","UNSAFE_GLOBALS","Window","isworker","issw","isdedicated","isshared","isemulatedsw","dbg","loadCodecs","runtime","ScramjetServiceWorkerRuntime","document","Location","fakeLocation","descriptorSource","native","nativeFunction","log","_v","rewriteBlob","unrewriteBlob","argdbg","arg","recurse","Symbol","ar","e","closure","error","stack","newstack","lines","line","l","_value","js","indirectEval","indirection","realOnEvent","handlers","wraplistener","listener","realEvent","type","_target","reciever","unproxy","origlistener","proxylistener","arr","targets","rewriteFunction","stringifiedFunction","content","addToExternrefTable0","obj","idx","handleError","cachedTextDecoder","TextDecoder","cachedUint8ArrayMemory0","getUint8ArrayMemory0","Uint8Array","getStringFromWasm0","ptr","len","WASM_VECTOR_LEN","cachedTextEncoder","encodeString","view","buf","passStringToWasm0","malloc","realloc","mem","offset","code","ret","cachedDataViewMemory0","getDataViewMemory0","DataView","isLikeNone","x","takeFromExternrefTable0","__wbg_load","imports","Response","WebAssembly","bytes","instance","__wbg_get_imports","arg0","arg1","arg2","arg3","arguments","Function","ptr1","c","crypto","len1","globalThis","table","v0","getArrayU8FromWasm0","__wbg_init_memory","memory","__wbg_finalize_init","thread_stack_size","__wbg_init","module_or_path","Request","fetch","initSync","decoder","tryCanParseURL","origin","resolved","meta","text","rewriteJsNaiive","$scramjet","rewriteJsWrapper","input","out","before","performance","rewrite_js","script_url","scramjet","ptr0","len0","ptr2","len2","rewrite_js_from_arraybuffer","passArray8ToWasm0","err1","after","errors","duration","timespan","overhead","prefixed","realUrl","pollutant","POLLUTANT","callerClient","callerGlobalThisProxied","wrappedPostMessage","toproxy","pollution","socketmap","fakeWebSocket","trustEvent","barews","fakeEventSend","fakeev","CloseEvent","payload","Blob","ArrayBuffer","MessageEvent","ws","ARGS","HEADERS","headers","sab","SharedArrayBuffer","now","status","headersLength","headersab","bodyLength","bodyab","body","parser","DOMParser","header","match","re","RegExp","sourcemaps","tag","sourcemap","rewrites","rewritelen","cursor","start","size","end","str","scramtag_ident","stringified","newString","scramtagstart","firstspace","parseInt","scramtagend","maps","j","getCtx","setCtx","call","conn","BareMuxConnection","port","identifier","eval","current","test","lhs","op","rhs","locationProxy","cevent","event","handleMessage","_e","token","fetchhandlers","request","fakeRequest","Headers","fakeFetchEvent","responded","response","message","_reciever","severity","old","_","fmt","Math","COMMITHASH","VERSION","flag","regex","partialflags","ScramjetHeaders","rewriteSrcset","rewriteHeaders","rewriteWorkers"],"mappings":"qxFAsEO,OAAMA,E,MACZ,cAAmB,AACnB,YAAiB,AACjB,cAAmB,AACnB,cAAsC,AACtC,KAAqB,AAErB,QAAqB,AACrB,YAA6B,AAC7B,OAAsC,AAEtC,YAAgC,AAEhC,eASc,AAEd,KAAc,AAEd,aAAmBC,CAAyB,CAAE,CAC7C,G,KADkBA,MAAM,CAANA,E,KAfnB,WAAW,CAAG,IAAIC,EAAAA,EAAWA,C,KAE7B,cAAc,CASV,IAAIC,IAKHC,EAAAA,CAAcA,IAAIH,EAIrB,MAHAI,QAAQ,KAAK,CACZ,4FAEK,AAAIC,OAGX,KAAI,CAAC,aAAa,CAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAEpDC,EAAAA,QAAQA,GACX,IAAI,CAAC,aAAa,CAAGC,AAAAA,GAAAA,EAAAA,mBAAAA,AAAAA,EAAoB,IAAI,CAAEP,GAE/CA,EAAO,QAAQ,CAACG,EAAAA,CAAcA,CAAC,CAAG,IAAI,EAGvC,IAAI,CAAC,aAAa,CAAGK,AAAAA,GAAAA,EAAAA,mBAAAA,AAAAA,EAAoB,IAAI,CAAER,GAC/C,IAAI,CAAC,WAAW,CAAGS,AAAAA,GAAAA,EAAAA,iBAAAA,AAAAA,EAAkB,IAAI,CAAET,GAC3C,IAAI,CAAC,MAAM,CAAGU,AAAAA,GAAAA,EAAAA,YAAAA,AAAAA,EAAa,IAAI,CAAEV,GAC7BM,EAAAA,QAAQA,CACX,IAAI,CAAC,IAAI,CAAG,IAAIK,EAAAA,EAAUA,CAE1B,IAAI,CAAC,IAAI,CAAG,IAAIA,EAAAA,EAAUA,CACzB,IAAIC,QAAQ,AAACC,IACZC,iBAAiB,UAAW,CAAC,CAAEC,KAAAA,CAAI,CAAE,IAChB,UAAhB,OAAOA,GAEV,mBAAoBA,GACpBA,AAAwB,gBAAxBA,EAAK,cAAc,EAEnBF,EAAQE,EAAK,IAAI,CAEnB,EACD,IAGF,IAAI,CAAC,OAAO,CAAG,CACd,MAAO,IAAIC,MACV,CAAC,EACD,CACC,IAAK,CAACC,EAAQC,KACb,GAAIA,KAAQD,EACX,OAAOA,CAAM,CAACC,EAAK,CAGpB,IAAMC,EAAQD,EAAK,KAAK,CAAC,KACnBE,EAAWD,EAAM,GAAG,GACpBE,EAAaF,EAAM,MAAM,CAAC,CAACG,EAAGC,IAAMD,GAAG,CAACC,EAAE,CAAE,IAAI,CAAC,MAAM,EAE7D,GAAI,CAACF,EAAY,OAEjB,IAAMG,EAAWC,QAAQ,GAAG,CAACJ,EAAYD,GAGzC,OAFAH,CAAM,CAACC,EAAK,CAAGM,EAERP,CAAM,CAACC,EAAK,AACpB,CACD,GAED,UAAUD,CAAc,CAAE,GAAGS,CAAI,EAChC,IAAMF,EAAW,IAAI,CAAC,KAAK,CAACP,EAAO,QACnC,AAAKO,EAEE,IAAIA,KAAYE,GAFD,IAGvB,EACA,KAAKT,CAAc,CAAEU,CAAS,CAAE,GAAGD,CAAI,EACtC,IAAMF,EAAW,IAAI,CAAC,KAAK,CAACP,EAAO,QACnC,AAAKO,EAEEA,EAAS,IAAI,CAACG,KAASD,GAFR,IAGvB,CACD,EACA,IAAI,CAAC,WAAW,CAAG,CAClB,MAAO,IAAIV,MACV,CAAC,EACD,CACC,IAAK,CAACC,EAAQC,KACb,GAAIA,KAAQD,EACX,OAAOA,CAAM,CAACC,EAAK,CAGpB,IAAMC,EAAQD,EAAK,KAAK,CAAC,KACnBE,EAAWD,EAAM,GAAG,GACpBE,EAAaF,EAAM,MAAM,CAAC,CAACG,EAAGC,IAAMD,GAAG,CAACC,EAAE,CAAE,IAAI,CAAC,MAAM,EAE7D,GAAI,CAACF,EAAY,OAEjB,IAAMG,EAAWI,AAAAA,GAAAA,EAAAA,8BAAAA,AAAAA,EAChBP,EACAD,GAID,OAFAH,CAAM,CAACC,EAAK,CAAGM,EAERP,CAAM,CAACC,EAAK,AACpB,CACD,GAED,IAAID,CAAc,CAAEU,CAAS,EAC5B,IAAMH,EAAW,IAAI,CAAC,KAAK,CAACP,EAAO,QACnC,AAAKO,EAEEA,EAAS,GAAG,CAAC,IAAI,CAACG,GAFH,IAGvB,EACA,IAAIV,CAAc,CAAEU,CAAS,CAAEE,CAAU,EACxC,IAAML,EAAW,IAAI,CAAC,KAAK,CAACP,EAAO,CACnC,GAAI,CAACO,EAAU,OAAO,KAEtBA,EAAS,GAAG,CAAC,IAAI,CAACG,EAAME,EACzB,CACD,EAEA,IAAMC,EAAS,IAAI,AACnB,KAAI,CAAC,IAAI,CAAG,CACX,IAAI,QAAS,CACZ,OAAOA,EAAO,GAAG,AAClB,EACA,IAAI,MAAO,CACV,GAAIxB,EAAAA,QAAQA,CAAE,CACb,IAAMyB,EAAOD,EAAO,OAAO,CAAC,IAAI,CAC/B,mCACAA,EAAO,MAAM,CAAC,QAAQ,CACtB,QAED,GAAIC,EAAM,CACT,IAAIC,EAAMD,EAAK,YAAY,CAAC,QACtBE,EAAOD,EAAI,OAAO,CAAC,KAEzB,GAAI,CADJA,CAAAA,EAAMA,EAAI,SAAS,CAAC,EAAGC,AAAS,KAATA,EAAcC,KAAAA,EAAYD,EAAI,EAC3C,OAAOH,EAAO,GAAG,CAE3B,OAAO,IAAIK,IAAIH,EAAKF,EAAO,GAAG,CAAC,MAAM,CACtC,CACD,CAEA,OAAOA,EAAO,GAAG,AAClB,CACD,EAEA9B,CAAM,CAACG,EAAAA,CAAcA,CAAC,CAAG,IAAI,AAC9B,CAEA,IAAI,OAA8B,CACjC,GAAI,CAACG,EAAAA,QAAQA,CAAE,OAAO,KACtB,IAAM8B,EAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,sBAAuB,IAAI,CAAC,MAAM,EAErE,GAAI,CAACA,EAAO,OAAO,KACnB,IAAMC,EAASD,CAAK,CAACE,EAAAA,CAAaA,CAAC,CAEnC,GAAI,CAACD,EAAQ,CAEZ,IAAIE,EAAa,IAAI,CAAC,MAAM,CAAC,MAAM,CACnC,KAAOA,EAAW,MAAM,EAAIA,GAAY,CACvC,GAAI,CAACA,EAAW,YAAY,CAAE,OAAO,KACrC,GAAIA,EAAW,YAAY,EAAIA,EAAW,YAAY,CAACD,EAAAA,CAAaA,CAAC,CACpE,OAAOC,EAAW,YAAY,CAACD,EAAAA,CAAaA,CAAC,CAE9CC,EAAaA,EAAW,MAAM,CAAC,MAAM,AACtC,CACD,CAEA,OAAOF,CACR,CAEA,YAAYG,CAAiB,CAAE,CAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAACA,EACvB,CAEA,MAAO,CAEN,IAAMC,EAAU,QAIVC,EAA4B,EAAE,CAEpC,IAAK,IAAMC,KAAOF,EAAQ,IAAI,GAAI,CACjC,IAAMG,EAAyBH,EAAQE,GAClCA,EAAI,QAAQ,CAAC,QAEhBA,CAAAA,EAAI,UAAU,CAAC,WAAa,WAAY,IAAI,CAAC,MAAM,EACnDA,EAAI,UAAU,CAAC,cAAgB,sBAAuB,IAAI,CAAC,MAAM,EAClEA,EAAI,UAAU,CAAC,YAAW,GAE1BD,EAAQ,IAAI,CAACE,EAEf,CASA,IAAK,IAAMA,KAPXF,EAAQ,IAAI,CAAC,CAACpB,EAAGC,KAChB,IAAMsB,EAASvB,EAAE,KAAK,EAAI,EAG1B,OAAOuB,EAFQtB,CAAAA,EAAE,KAAK,EAAI,EAG3B,GAEqBmB,GAChB,CAACE,EAAO,OAAO,EAAIA,EAAO,OAAO,CAAC,IAAI,EACzCA,EAAO,OAAO,CAAC,IAAI,CAAE,IAAI,CAAC,MAAM,EACxBA,EAAO,QAAQ,EAAEA,EAAO,QAAQ,CAAC,IAAI,CAAE,IAAI,CAAC,MAAM,CAE7D,CAEA,IAAI,KAAW,CACd,OAAO,IAAIT,IAAIW,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAa,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EACtD,CAEA,IAAI,IAAId,CAAiB,CAAE,CACtBA,aAAeG,KAAKH,CAAAA,EAAMA,EAAI,QAAQ,EAAC,EAE3C,IAAMe,EAAK,IAAIC,EAAAA,aAAaA,CAAChB,EACzB,KAAI,CAAC,KAAK,EACb,IAAI,CAAC,KAAK,CAAC,aAAa,CAACe,IAEtBA,EAAG,gBAAgB,EAEvB,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAGE,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWF,EAAG,GAAG,CAAE,IAAI,CAAC,IAAI,EACzD,CAMA,MAAMG,CAAuB,CAAEC,CAAc,CAAE,CAC9C,GAAIC,MAAM,OAAO,CAACF,GAAO,CACxB,IAAK,IAAMG,KAAKH,EACf,IAAI,CAAC,KAAK,CAACG,EAAGF,GAGf,MACD,CAEA,IAAMhC,EAAQ+B,EAAK,KAAK,CAAC,KACnBhC,EAAOC,EAAM,GAAG,GAChBF,EAASE,EAAM,MAAM,CAAC,CAACG,EAAGC,IAAMD,GAAG,CAACC,EAAE,CAAE,IAAI,CAAC,MAAM,EACzD,GAAI,CAACN,EAAQ,OAEb,IAAMO,EAAWC,QAAQ,GAAG,CAACR,EAAQC,EACrC,KAAI,CAAC,OAAO,CAAC,KAAK,CAACgC,EAAK,CAAG1B,EAE3B,IAAI,CAAC,QAAQ,CAACP,EAAQC,EAAMiC,EAC7B,CACA,SAASlC,CAAW,CAAEC,CAAY,CAAEiC,CAAc,CAAE,CACnD,GAAI,CAAClC,GACD,CAACC,GACD,CAACO,QAAQ,GAAG,CAACR,EAAQC,GAFZ,OAIb,IAAMW,EAAQJ,QAAQ,GAAG,CAACR,EAAQC,EAClC,QAAOD,CAAM,CAACC,EAAK,CAEnB,IAAMoC,EAAuB,CAAC,CAE1BH,CAAAA,EAAQ,SAAS,EACpBG,CAAAA,EAAE,SAAS,CAAG,SACbC,CAAgB,CAChBC,CAAe,CACfC,CAAsB,MAElBC,EACJ,IAAIC,EAAc,GAEZC,EAAgB,CACrB,GAAIL,EACJ,KAAM,KACN,KAAMC,EACN,UAAWC,EACX,OAAQ,AAACI,IACRF,EAAc,GACdD,EAAcG,CACf,EACA,KAAM,KACLF,EAAc,GACdD,EAAcjC,QAAQ,SAAS,CAACmC,EAAI,EAAE,CAAEA,EAAI,IAAI,CAAEA,EAAI,SAAS,EAIjE,QAIA,CAFAT,EAAQ,SAAS,CAACS,GAEdD,GACID,EAGDjC,QAAQ,SAAS,CAACmC,EAAI,EAAE,CAAEA,EAAI,IAAI,CAAEA,EAAI,SAAS,CACzD,GAGGT,EAAQ,KAAK,EAChBG,CAAAA,EAAE,KAAK,CAAG,SAAUQ,CAAO,CAAEC,CAAY,CAAEP,CAAe,MACrDE,EACJ,IAAIC,EAAc,GAEZC,EAAgB,CACrBE,GAAAA,EACA,KAAMC,EACN,KAAMP,EACN,UAAW,KACX,OAAQ,AAACK,IACRF,EAAc,GACdD,EAAcG,CACf,EACA,KAAM,KACLF,EAAc,GACdD,EAAcjC,QAAQ,KAAK,CAACmC,EAAI,EAAE,CAAEA,EAAI,IAAI,CAAEA,EAAI,IAAI,EAIxD,EAEMI,EAAM3D,MAAM,iBAAiB,AAEnCA,CAAAA,MAAM,iBAAiB,CAAG,SAAU4D,CAAG,CAAEC,CAAC,EACzC,GACCA,CAAC,CAAC,EAAE,CAAC,WAAW,IAChB,CAACA,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,UAAU,CAACC,SAAS,MAAM,CAAGC,EAAAA,EAAAA,CAAAA,MAAa,EAE9D,MAAO,CAAE,MAAOH,EAAI,KAAK,AAAC,CAE5B,EAEA,GAAI,CACHd,EAAQ,KAAK,CAACS,EACf,CAAE,MAAOK,EAAK,CACb,GAAIA,aAAe5D,OAClB,GAAK4D,EAAI,KAAK,YAAoBI,OAEjCJ,EAAI,KAAK,CAAGA,EAAI,KAAK,CAAC,KAAK,CAC3B7D,QAAQ,KAAK,CAAC,gCAAiC6D,QAE/C,MAAMA,OAGP,MAAMA,CAER,OAIA,CAFA5D,MAAM,iBAAiB,CAAG2D,EAEtBL,GACID,EAGDjC,QAAQ,KAAK,CAACmC,EAAI,EAAE,CAAEA,EAAI,IAAI,CAAEA,EAAI,IAAI,CAChD,GAGDN,EAAE,wBAAwB,CAAGgB,EAAAA,+BAA+BA,CAC5DrD,CAAM,CAACC,EAAK,CAAG,IAAIF,MAAMa,EAAOyB,EACjC,CACA,KAAQJ,CAAuB,CAAEqB,CAAmB,CAAsB,CACzE,GAAInB,MAAM,OAAO,CAACF,GAAO,CACxB,IAAK,IAAMG,KAAKH,EACf,IAAI,CAAC,IAAI,CAACG,EAAGkB,GAGd,MACD,CAEA,IAAMpD,EAAQ+B,EAAK,KAAK,CAAC,KACnBhC,EAAOC,EAAM,GAAG,GAChBF,EAASE,EAAM,MAAM,CAAC,CAACG,EAAGC,IAAMD,GAAG,CAACC,EAAE,CAAE,IAAI,CAAC,MAAM,EACzD,GAAI,CAACN,EAAQ,OAEb,IAAMO,EAAWI,AAAAA,GAAAA,EAAAA,8BAAAA,AAAAA,EAA+BX,EAAQC,GAGxD,OAFA,IAAI,CAAC,WAAW,CAAC,KAAK,CAACgC,EAAK,CAAG1B,EAExB,IAAI,CAAC,OAAO,CAACP,EAAQC,EAAMqD,EACnC,CACA,QACCtD,CAAW,CACXC,CAAY,CACZqD,CAAmB,CACE,CACrB,GAAI,CAACtD,GACD,CAACC,GACD,CAACO,QAAQ,GAAG,CAACR,EAAQC,GAFZ,OAIb,IAAMsD,EAAgB5C,AAAAA,GAAAA,EAAAA,8BAAAA,AAAAA,EAA+BX,EAAQC,GAEvD0C,EAAkB,CACvB,KAAM,KACN,IAAK,WACJ,OAAOY,GAAiBA,EAAc,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACzD,EACA,IAAK,SAAUC,CAAI,EAElBD,GAAiBA,EAAc,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAEC,EACpD,CACD,CAEA,QAAOxD,CAAM,CAACC,EAAK,CAEnB,IAAMwD,EAA2B,CAAC,EA+BlC,OA7BIH,EAAW,GAAG,CACjBG,EAAK,GAAG,CAAG,WAGV,OAFAd,EAAI,IAAI,CAAG,IAAI,CAERW,EAAW,GAAG,CAACX,EACvB,EACUY,GAAe,KACzBE,CAAAA,EAAK,GAAG,CAAGF,EAAc,GAAG,AAAD,EAGxBD,EAAW,GAAG,CACjBG,EAAK,GAAG,CAAG,SAAUD,CAAI,EACxBb,EAAI,IAAI,CAAG,IAAI,CAEfW,EAAW,GAAG,CAACX,EAAKa,EACrB,EACUD,GAAe,KACzBE,CAAAA,EAAK,GAAG,CAAGF,EAAc,GAAG,AAAD,EAGxBD,EAAW,UAAU,CAAEG,EAAK,UAAU,CAAGH,EAAW,UAAU,CACzDC,GAAe,YACvBE,CAAAA,EAAK,UAAU,CAAGF,EAAc,UAAU,AAAD,EACtCD,EAAW,YAAY,CAAEG,EAAK,YAAY,CAAGH,EAAW,YAAY,CAC/DC,GAAe,cACvBE,CAAAA,EAAK,YAAY,CAAGF,EAAc,YAAY,AAAD,EAE9CH,OAAO,cAAc,CAACpD,EAAQC,EAAMwD,GAE7BF,CACR,CACD,C,qHClgBO,SAASjE,EACfuB,CAAsB,CACtB6C,CAAuB,EAEvB,OAAO,IAAI3D,MAAM2D,EAAK,QAAQ,CAAE,CAC/B,KAAI1D,EAAQC,IACX,AAAIA,AAAS,aAATA,EACIY,EAAO,aAAa,CAGxBZ,AAAS,gBAATA,EACIY,EAAO,WAAW,CAGZL,QAAQ,GAAG,CAACR,EAAQC,GAInC,IAAID,CAAM,CAAEC,CAAI,CAAE0D,CAAQ,EACzB,GAAI1D,AAAS,aAATA,EAAqB,CACxBiD,SAAS,IAAI,CAAGlB,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAW2B,EAAU9C,EAAO,IAAI,EAEhD,MACD,CAEA,OAAOL,QAAQ,GAAG,CAACR,EAAQC,EAAM0D,EAClC,EACA,yBAA0BN,EAAAA,+BAA+BA,AAC1D,EACD,C,oCC/Be,SAAS,EAACxC,CAAsB,CAAE+C,CAAoB,EACpE/C,EAAO,IAAI,CAAC,+BAAgC,CAC3C,IAAI8B,CAAG,EACN,IAAMkB,EAAMlB,EAAI,GAAG,GACbmB,EAAQ,IAAI/D,MAAM8D,EAAK,CAC5B,IAAI7D,CAAM,CAAEC,CAAI,CAAE8D,CAAS,EAC1B,IAAMnD,EAAQJ,QAAQ,GAAG,CAACR,EAAQC,SAElC,AAAIA,AAAS,WAATA,EACImD,OAAO,IAAI,CAACU,GAAO,MAAM,CAG7B7D,AAAS,iBAATA,EACI,AAACgC,GAAiB6B,CAAK,CAAC7B,EAAK,CAEjChC,AAAS,mBAATA,EACI,CAAC+D,EAAmB/B,IAC1B6B,CAAK,CAAC,CAAC,EAAEE,EAAU,CAAC,EAAE/B,EAAK,CAAC,CAAC,CAG3BhC,KAAQgE,aAAa,SAAS,EAAI,AAAiB,YAAjB,OAAOrD,EACrC,IAAIb,MAAMa,EAAO,CACvB,OAAMZ,EAAQ8C,EAASP,IACtB,AAAIO,IAAYgB,EACRtD,QAAQ,KAAK,CAACR,EAAQ6D,EAAKtB,GAG5B/B,QAAQ,KAAK,CAACR,EAAQ8C,EAASP,EAExC,GAIC,AAAgB,UAAhB,OAAOtC,GAAqB,AAAgB,UAAhB,OAAOA,GACnCiE,MAAMC,OAAOlE,IAOV,IAAI,CAAC,GAAG,CAACD,EAAQC,GAEfW,SALCiD,CAAG,CAFOT,OAAO,IAAI,CAACU,EAAM,CAAC7D,EAAK,CAErB,AAMtB,EACA,QAAQD,CAAM,EAGb,OAAOoE,AAFM5D,QAAQ,OAAO,CAACR,GAEjB,MAAM,CAAC,AAAC0B,GAAQ,IAAI,CAAC,GAAG,CAAC1B,EAAQ0B,GAC9C,EACA,KAAI1B,EAAQC,IACX,AAAI,AAAgB,UAAhB,OAAOA,EAA0BO,QAAQ,GAAG,CAACR,EAAQC,KACrDA,EAAK,UAAU,CAAC,mBAChB4D,CAAG,CAAC5D,EAAK,EAAE,MAAM,WAAW,oBAEzBO,QAAQ,GAAG,CAACR,EAAQC,EAE7B,GAEA,OAAO6D,CACR,CACD,GAEAjD,EAAO,IAAI,CAAC,uBAAwB,CACnC,IAAI8B,GACH,AAAIA,EAAI,IAAI,EAAE,aACNA,EAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAACA,EAAI,IAAI,CAAC,IAAI,EAGjDA,EAAI,GAAG,GAEf,KAAIA,EAAK/B,IACR,AAAI+B,EAAI,IAAI,EAAE,aACNA,EAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAACA,EAAI,IAAI,CAAC,IAAI,CAAE/B,GAGnD+B,EAAI,GAAG,CAAC/B,EAEjB,EACD,C,2IC9Ee,SAAS,EAACC,CAAsB,CAAE+C,CAAW,EAC3D/C,EAAO,KAAK,CAAC,iCAAkC,CAC9C,MAAM8B,CAAG,EACRA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,CAClD,CACD,EACD,C,oCCPe,SAAS,EAACA,CAAsB,CAAE6C,CAAmB,EACnE7C,EAAO,aAAa,CAAC,gBAAgB,CAAC,UAAW,CAAC,CAAEf,KAAAA,CAAI,CAAE,IACnD,kBAAmBA,GAEE,WAAvBA,EAAK,aAAa,EACrBe,EAAO,WAAW,CAAC,UAAU,CAAC,CAACf,EAAK,MAAM,CAAC,CAAE,IAAIoB,IAAIpB,EAAK,GAAG,EAE/D,GAEAe,EAAO,IAAI,CAAC,4BAA6B,CACxC,QACQA,EAAO,WAAW,CAAC,UAAU,CAACA,EAAO,GAAG,CAAE,IAElD,IAAI8B,CAAG,CAAE/B,CAAa,EACrBC,EAAO,WAAW,CAAC,UAAU,CAAC,CAACD,EAAM,CAAEC,EAAO,GAAG,EACjD,IAAMwD,EAAaxD,EAAO,WAAW,CAAC,GAAG,CACxC,8CACAA,EAAO,aAAa,EAEjBwD,GACHxD,EAAO,OAAO,CAAC,IAAI,CAAC,sCAAuCwD,EAAY,CACtE,cAAe,SACf,OAAQzD,EACR,IAAKC,EAAO,GAAG,CAAC,IAAI,AACrB,EAEF,CACD,GAGA,OAAO6C,EAAK,WAAW,AACxB,C,2IC9Be,SAAS,EAAC7C,CAAsB,EAC9CA,EAAO,KAAK,CAAC,4CAA6C,CACzD,MAAM8B,CAAG,EACHA,EAAI,IAAI,CAAC,EAAE,EAChBA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAG2B,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAW3B,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,EAClD,CACD,GAEAA,EAAO,KAAK,CAAC,iDAAkD,CAC9D,MAAM8B,CAAG,EACR,IAAMa,EAAIb,EAAI,IAAI,GAClB,GAAI,CAACa,EAAG,OAAOA,EACfb,EAAI,MAAM,CAAC4B,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAaf,GACzB,CACD,GAEA3C,EAAO,IAAI,CAAC,wCAAyC,CACpD,IAAI8B,CAAG,CAAE/B,CAAa,EACrB+B,EAAI,GAAG,CAAC2B,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAW1D,EAAOC,EAAO,IAAI,EACtC,EACA,IAAI8B,GACI4B,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAa5B,EAAI,GAAG,GAE7B,GAEA9B,EAAO,IAAI,CAAC,8BAA+B,CAC1C,IAAI8B,CAAG,EAIN,IAAM6B,EAAQ7B,EAAI,GAAG,GAErB,OAAO,IAAI5C,MAAMyE,EAAO,CACvB,IAAIC,CAAC,CAAEC,CAAC,EACP,IAAMlB,EAAIhD,QAAQ,GAAG,CAACiE,EAAGC,SAEzB,AAAI,AAAa,YAAb,OAAOlB,EACH,IAAIzD,MAAMyD,EAAG,CACnB,OAAMxD,EAAQ8C,EAASP,IACf/B,QAAQ,KAAK,CAACR,EAAQwE,EAAOjC,EAEtC,GAGGmC,KAAKC,oBAAoB,SAAS,EAClC,CAACnB,EAD0CA,EAGxCe,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAaf,EACrB,EACA,KAAIiB,EAAGC,EAAGlB,IACT,AAAIkB,AAAK,WAALA,GAAkBlB,AAAK,IAALA,GAAW,AAAa,UAAb,OAAOA,EAChChD,QAAQ,GAAG,CAACiE,EAAGC,EAAGlB,GAGnBhD,QAAQ,GAAG,CAACiE,EAAGC,EAAGJ,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWd,EAAG3C,EAAO,IAAI,EAEpD,EACD,EACA,IAAI8B,CAAG,CAAEa,CAAS,EAEjBb,EAAI,GAAG,CAACa,EACT,CACD,EACD,C,+FC/De,SAAS,EAAC3C,CAAsB,CAAE+C,CAAW,EAC3D/C,EAAO,KAAK,CAAC,2BAA4B,CACxC,MAAM8B,CAAG,EACR,GAAIA,EAAI,IAAI,CAAC,EAAE,CACd,GAAI,CACHA,EAAI,IAAI,CAAC,EAAE,CAAGiC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACbjC,EAAI,IAAI,CAAC,EAAE,CACX9B,EAAO,WAAW,CAClBA,EAAO,IAAI,CACX,GAEF,CAAE,KAAM,CAAC,CACX,CACD,GAEAA,EAAO,KAAK,CAAC,6BAA8B,CAC1C,MAAM8B,CAAG,EACR,GAAIA,EAAI,IAAI,CAAC,EAAE,CACd,GAAI,CACHA,EAAI,IAAI,CAAC,EAAE,CAAGiC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACbjC,EAAI,IAAI,CAAC,EAAE,CACX9B,EAAO,WAAW,CAClBA,EAAO,IAAI,CACX,GAEF,CAAE,KAAM,CAAC,CACX,CACD,EACD,C,6HCzBA,IAAMgE,EAAU,IAAIC,YAQL,SAAS,EAACjE,CAAsB,CAAE6C,CAAmB,EACnE,IAAMqB,EAAa,CAClB,MAAO,CAACrB,EAAK,WAAW,CAAC,CACzB,UAAW,CAACA,EAAK,iBAAiB,CAAEA,EAAK,eAAe,CAAC,CACzD,IAAK,CAACA,EAAK,iBAAiB,CAAC,CAC7B,eAAgB,CAACA,EAAK,iBAAiB,CAAC,CACxC,IAAK,CACJA,EAAK,gBAAgB,CACrBA,EAAK,gBAAgB,CACrBA,EAAK,iBAAiB,CACtBA,EAAK,gBAAgB,CACrBA,EAAK,gBAAgB,CACrBA,EAAK,iBAAiB,CACtBA,EAAK,iBAAiB,CACtB,CACD,KAAM,CACLA,EAAK,iBAAiB,CACtBA,EAAK,eAAe,CACpBA,EAAK,aAAa,CAClBA,EAAK,eAAe,CACpB,CACD,KAAM,CAACA,EAAK,iBAAiB,CAAC,CAC9B,OAAQ,CAACA,EAAK,eAAe,CAAC,CAC9B,WAAY,CAACA,EAAK,iBAAiB,CAAEA,EAAK,gBAAgB,CAAC,CAC3D,OAAQ,CAACA,EAAK,iBAAiB,CAAC,CAChC,OAAQ,CAACA,EAAK,gBAAgB,CAAEA,EAAK,iBAAiB,CAAC,CACvD,OAAQ,CAACA,EAAK,gBAAgB,CAAC,CAC/B,YAAa,CAACA,EAAK,eAAe,CAAC,AACpC,EAEMsB,EAAgB,CACrBtB,EAAK,iBAAiB,CAAC,SAAS,CAChCA,EAAK,eAAe,CAAC,SAAS,CAC9B,CACKuB,EAAgB,CACrBtE,AAAAA,GAAAA,EAAAA,8BAAAA,AAAAA,EAA+B+C,EAAK,iBAAiB,CAAC,SAAS,CAAE,QACjE/C,AAAAA,GAAAA,EAAAA,8BAAAA,AAAAA,EAA+B+C,EAAK,eAAe,CAAC,SAAS,CAAE,QAC/D,CAID,IAAK,IAAMwB,KAFG9B,OAAO,IAAI,CAAC2B,GAGzB,IAAK,IAAMI,KAAWJ,CAAU,CAACG,EAAK,CAAE,CACvC,IAAM5B,EAAa3C,AAAAA,GAAAA,EAAAA,8BAAAA,AAAAA,EAClBwE,EAAQ,SAAS,CACjBD,GAED9B,OAAO,cAAc,CAAC+B,EAAQ,SAAS,CAAED,EAAM,CAC9C,YACC,AAAI,CAAC,MAAO,OAAQ,OAAQ,SAAU,aAAa,CAAC,QAAQ,CAACA,GACrDrD,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAayB,EAAW,GAAG,CAAC,IAAI,CAAC,IAAI,GAGtCA,EAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAChC,EAEA,IAAI1C,CAAK,EACR,OAAO,IAAI,CAAC,YAAY,CAACsE,EAAMtE,EAChC,CACD,EACD,CAcD,IAAK,IAAMX,IAVM,CAChB,WACA,OACA,OACA,WACA,SACA,WACA,OACA,SACA,CAEA,IAAK,IAAMmF,KAAKJ,EAAe,CAC9B,IAAMhF,EAASgF,CAAa,CAACI,EAAE,CACzB3B,EAAOwB,CAAa,CAACG,EAAE,CAC7BvE,EAAO,OAAO,CAACb,EAAQC,EAAM,CAC5B,IAAI0C,CAAG,EACN,IAAM0C,EAAO5B,EAAK,GAAG,CAAC,IAAI,CAACd,EAAI,IAAI,SACnC,AAAK0C,EAIEtE,AAFK,IAAIG,IAAIW,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAawD,GAEvB,CAACpF,EAAK,CAJEoF,CAKnB,CACD,EACD,CAGDxE,EAAO,IAAI,CAAC,yBAA0B,CACrC,MAEC,IAAMC,EAAO4C,EAAK,QAAQ,CAAC,aAAa,CAAC,eACzC,AAAI5C,EACI,IAAII,IAAIJ,EAAK,IAAI,CAAED,EAAO,GAAG,CAAC,MAAM,EAAE,IAAI,CAG3CA,EAAO,GAAG,CAAC,MAAM,AACzB,EACA,QACQ,EAET,GAEAA,EAAO,KAAK,CAAC,iCAAkC,CAC9C,MAAM8B,CAAG,EACR,GAAM,CAACV,EAAK,CAAGU,EAAI,IAAI,CAEvB,GAAIV,EAAK,UAAU,CAAC,iBACnB,OAAOU,EAAI,MAAM,CAAC,MAGnB,GACC9B,EAAO,OAAO,CAAC,IAAI,CAClB,iCACA8B,EAAI,IAAI,CACR,CAAC,cAAc,EAAEV,EAAK,CAAC,EAEvB,CACD,IAAMqD,EAAS3C,EAAI,EAAE,CAAC,IAAI,CAACA,EAAI,IAAI,CAAE,CAAC,cAAc,EAAEV,EAAK,CAAC,SAC5D,AAAIqD,AAAW,OAAXA,EAAwB3C,EAAI,MAAM,CAAC,IAEhCA,EAAI,MAAM,CAAC2C,EACnB,CACD,CACD,GAEAzE,EAAO,KAAK,CAAC,sCAAuC,CACnD,MAAM8B,CAAG,EAER,IAAM4C,EAAUC,AADE7C,EAAI,IAAI,GACA,MAAM,CAC/B,AAACuC,GAAS,CAACA,EAAK,UAAU,CAAC,kBAG5BvC,EAAI,MAAM,CAAC4C,EACZ,CACD,GAEA1E,EAAO,KAAK,CAAC,qCAAsC,CAClD,MAAM8B,CAAG,EACR,GAAIA,EAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAkB,OAAOA,EAAI,MAAM,CAAC,KAChE,CACD,GAEA9B,EAAO,KAAK,CAAC,iCAAkC,CAC9C,MAAM8B,CAAG,EACR,GAAIA,EAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAkB,OAAOA,EAAI,MAAM,CAAC,GAChE,CACD,GAEA9B,EAAO,KAAK,CAAC,iCAAkC,CAC9C,MAAM8B,CAAG,EACR,GAAM,CAACV,EAAMrB,EAAM,CAAG+B,EAAI,IAAI,CAExB8C,EAAWC,EAAAA,EAAAA,CAAAA,IAAc,CAAC,AAACC,IAChC,IAAM/C,EAAI+C,CAAI,CAAC1D,EAAK,WAAW,GAAG,OAClC,EAAKW,IACK,MAANA,GACa,YAAb,OAAOA,GAEJA,EAAE,QAAQ,CAACD,EAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAC/C,GAEI8C,IACH9C,EAAI,IAAI,CAAC,EAAE,CAAG8C,EAAS,EAAE,CAAC7E,EAAOC,EAAO,IAAI,CAAEA,EAAO,WAAW,EAChE8B,EAAI,EAAE,CAAC,IAAI,CAACA,EAAI,IAAI,CAAE,CAAC,cAAc,EAAEA,EAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAE/B,GAExD,CACD,GAGAC,EAAO,KAAK,CAAC,qCAAsC,CAClD,MAAM+E,CAAI,EAAG,CACd,GAEA/E,EAAO,KAAK,CAAC,mCAAoC,CAChD,MAAM8B,CAAG,EACR,GAAM,CAACkD,EAAY5D,EAAMrB,EAAM,CAAG+B,EAAI,IAAI,CAEpC8C,EAAWC,EAAAA,EAAAA,CAAAA,IAAc,CAAC,AAACC,IAChC,IAAM/C,EAAI+C,CAAI,CAAC1D,EAAK,WAAW,GAAG,OAClC,EAAKW,IACK,MAANA,GACa,YAAb,OAAOA,GAEJA,EAAE,QAAQ,CAACD,EAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAC/C,GAEI8C,IACH9C,EAAI,IAAI,CAAC,EAAE,CAAG8C,EAAS,EAAE,CAAC7E,EAAOC,EAAO,IAAI,CAAEA,EAAO,WAAW,EAChEA,EAAO,OAAO,CAAC,IAAI,CAClB,iCACA8B,EAAI,IAAI,CACR,CAAC,cAAc,EAAEA,EAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAC9B/B,GAGH,CACD,GAEAC,EAAO,KAAK,CAAC,oCAAqC,CACjD,MAAM8B,CAAG,EACR,GAAIA,EAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAkB,OAAOA,EAAI,MAAM,CAAC1B,KAAAA,GAE9DJ,EAAO,OAAO,CAAC,IAAI,CAClB,iCACA8B,EAAI,IAAI,CACRA,EAAI,IAAI,CAAC,EAAE,GAGZA,EAAI,EAAE,CAAC,IAAI,CAACA,EAAI,IAAI,CAAE,CAAC,cAAc,EAAEA,EAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAEtD,CACD,GAEA9B,EAAO,KAAK,CAAC,oCAAqC,CACjD,MAAM8B,CAAG,EACR,GAAIA,EAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAkB,OAAOA,EAAI,MAAM,CAAC,IAE9D9B,EAAO,OAAO,CAAC,IAAI,CAClB,iCACA8B,EAAI,IAAI,CACRA,EAAI,IAAI,CAAC,EAAE,GAGZA,EAAI,EAAE,CAAC,IAAI,CAACA,EAAI,IAAI,CAAE,CAAC,cAAc,EAAEA,EAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAEtD,CACD,GAEA9B,EAAO,IAAI,CAAC,8BAA+B,CAC1C,IAAI8B,CAAG,CAAE/B,CAAa,EACrB,IAAIkF,EACJ,GAAInD,EAAI,IAAI,YAAYe,EAAK,iBAAiB,CAC7CoC,EAASC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAUnF,EAAO,6BAA8BC,EAAO,IAAI,EACnEA,EAAO,OAAO,CAAC,IAAI,CAClB,iCACA8B,EAAI,IAAI,CACR,kCAlPGqD,KAJW7D,MAAM,IAAI,CAuPV0C,EAAQ,MAAM,CAACiB,GAvPG,AAACG,GACpCC,OAAO,aAAa,CAACD,IACpB,IAAI,CAAC,WAuPE,GAAItD,EAAI,IAAI,YAAYe,EAAK,gBAAgB,CACnDoC,EAASxB,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAW1D,EAAOC,EAAO,IAAI,OAEtC,GAAI,CACHiF,EAASlB,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAYhE,EAAOC,EAAO,WAAW,CAAEA,EAAO,IAAI,CAC5D,CAAE,KAAM,CACPiF,EAASlF,CACV,CAGD+B,EAAI,GAAG,CAACmD,EACT,EACA,IAAInD,CAAG,EACN,GAAIA,EAAI,IAAI,YAAYe,EAAK,iBAAiB,CAAE,CAC/C,IAAMyC,EAAetF,EAAO,OAAO,CAAC,IAAI,CACvC,iCACA8B,EAAI,IAAI,CACR,0CAGD,AAAIwD,EACIC,KAAKD,GAGNxD,EAAI,GAAG,EACf,QACA,AAAIA,EAAI,IAAI,YAAYe,EAAK,gBAAgB,CACrCf,EAAI,GAAG,GAGR0D,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAc1D,EAAI,GAAG,GAC7B,CACD,GAEA9B,EAAO,IAAI,CAAC,8BAA+B,CAC1C,IAAI8B,CAAG,CAAE/B,CAAa,EACrB+B,EAAI,GAAG,CAACiC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAYhE,EAAOC,EAAO,WAAW,CAAEA,EAAO,IAAI,EAC3D,EACA,IAAI8B,GACI0D,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAc1D,EAAI,GAAG,GAE9B,GAEA9B,EAAO,KAAK,CAAC,kCAAmC,CAC/C,MAAM8B,CAAG,EACR,GAAI,CACHA,EAAI,IAAI,CAAC,EAAE,CAAGiC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACbjC,EAAI,IAAI,CAAC,EAAE,CACX9B,EAAO,WAAW,CAClBA,EAAO,IAAI,CACX,GAEF,CAAE,KAAM,CAAC,CACV,CACD,GAEAA,EAAO,KAAK,CAAC,4BAA6B,CACzC,MAAM8B,CAAG,EACRA,EAAI,MAAM,CAAC0D,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAc1D,EAAI,IAAI,IAClC,CACD,GAEA9B,EAAO,KAAK,CAAC,uCAAwC,CACpD,MAAM8B,CAAG,EACR,GAAIA,EAAI,IAAI,CAAC,EAAE,CACd,GAAI,CACHA,EAAI,IAAI,CAAC,EAAE,CAAGiC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACbjC,EAAI,IAAI,CAAC,EAAE,CACX9B,EAAO,WAAW,CAClBA,EAAO,IAAI,CACX,GAEF,CAAE,KAAM,CAAC,CACX,CACD,GAEAA,EAAO,IAAI,CACV,CACC,4CACA,2CACA,4CACA,2CACA,CACD,CACC,IAAI8B,CAAG,EACN,IAAM2D,EAAU3D,EAAI,GAAG,GACvB,GAAI,CAAC2D,EAAS,OAAOA,EAErB,GAAIpH,EAAAA,CAAcA,IAAIoH,EACrB,OAAOA,CAAO,CAACpH,EAAAA,CAAcA,CAAC,CAAC,WAAW,AACpC,EAEN,IAAMqH,EAAY,IAAIzH,EAAAA,cAAcA,CAACwH,GAGrC,OAFAC,EAAU,IAAI,GAEPA,EAAU,WAAW,AAC7B,CACD,CACD,GAGD1F,EAAO,IAAI,CACV,CACC,8CACA,6CACA,8CACA,6CACA,CACD,CACC,IAAI8B,CAAG,EACN,IAAM2D,EAAUzF,EAAO,WAAW,CAAC,GAAG,CACrC,CAAC,EAAE8B,EAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,CACtDA,EAAI,IAAI,EAET,GAAI,CAAC2D,EAAS,OAAOA,EAErB,GAAIpH,EAAAA,CAAcA,IAAIoH,EACrB,OAAOA,CAAO,CAACpH,EAAAA,CAAcA,CAAC,CAAC,aAAa,AACtC,EACN,IAAMqH,EAAY,IAAIzH,EAAAA,cAAcA,CAACwH,GAGrC,OAFAC,EAAU,IAAI,GAEPA,EAAU,aAAa,AAC/B,CACD,CACD,GAGD1F,EAAO,KAAK,CACX,CACC,6CACA,6CACA,4CACA,CACD,CACC,MAAM8B,CAAG,EAER,GADYA,EAAI,IAAI,GAEnB,OAAOA,EAAI,MAAM,CAACA,EAAI,IAAI,CAAC,eAAe,CAE5C,CACD,GAGD9B,EAAO,IAAI,CAAC,mCAAoC,CAC/C,IAAI8B,GACIA,EAAI,GAAG,GAEf,KAAIA,EAAK/B,IACR,AAAIA,IAAUC,EAAO,aAAa,CAC1B8B,EAAI,GAAG,CAACe,EAAK,QAAQ,EAGtBf,EAAI,GAAG,CAAC/B,EAEjB,GAEAC,EAAO,KAAK,CAAC,0BAA2B,CACvC,MAAM8B,CAAG,EACR,IAAM6D,EAAM7D,EAAI,IAAI,GAEd8D,EAAwBD,CAAG,CAACtH,EAAAA,CAAcA,CAAC,QACjD,AAAKuH,EAEE9D,EAAI,MAAM,CAAC8D,EAAM,aAAa,EAFlB9D,EAAI,MAAM,CAAC6D,EAG/B,CACD,GAEA3F,EAAO,IAAI,CAAC,+BAAgC,CAC3C,IAAI8B,CAAG,EACN,IAAM6D,EAAM7D,EAAI,GAAG,GACnB,GAAI,CAAC6D,EAAK,OAAO,KAEjB,IAAMC,EAAwBD,CAAG,CAACtH,EAAAA,CAAcA,CAAC,QACjD,AAAKuH,EAEEA,EAAM,aAAa,CAFPD,CAGpB,CACD,GAEA3F,EAAO,IAAI,CACV,CACC,4BACA,+BACA,iCACA,6BACA,0CACA,uCACA,yCACA,CACD,CACC,IAAI8B,CAAG,EACN,IAAMP,EAAIO,EAAI,GAAG,GACjB,GAAI,CAAEP,CAAAA,aAAasE,QAAO,EAAI,OAAOtE,EAErC,IAAMqE,EAAwBrE,CAAC,CAAClD,EAAAA,CAAcA,CAAC,QAC/C,AAAKuH,EAEEA,EAAM,aAAa,CAFPrE,CAGpB,CACD,GAGDvB,EAAO,KAAK,CAAC,6BAA8B,CAC1C,MAAM8B,CAAG,EACR,IAAMP,EAAIO,EAAI,IAAI,GAClB,GAAI,CAAEP,CAAAA,aAAasE,QAAO,EAAI,OAAO/D,EAAI,MAAM,CAACP,GAEhD,IAAMqE,EAAwBrE,CAAC,CAAClD,EAAAA,CAAcA,CAAC,QAC/C,AAAKuH,EAEE9D,EAAI,MAAM,CAAC8D,EAAM,aAAa,EAFlB9D,EAAI,MAAM,CAACP,EAG/B,CACD,GAEAvB,EAAO,KAAK,CACX,CACC,sCACA,qCACA,CACD,CACC,MAAM8B,CAAG,EACR,GAAIA,AAAgB,cAAhBA,EAAI,IAAI,CAAC,EAAE,CACd,GAAI,CACHA,EAAI,IAAI,CAAC,EAAE,CAAGiC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACbjC,EAAI,IAAI,CAAC,EAAE,CACX9B,EAAO,WAAW,CAClBA,EAAO,IAAI,CACX,GAEF,CAAE,KAAM,CAAC,CAEX,CACD,EAEF,C,+FCzee,SAAS,EAACA,CAAsB,CAAE+C,CAAW,EAC3D/C,EAAO,KAAK,CAAC,WAAY,CACxB,UAAU8B,CAAG,EACZA,EAAI,IAAI,CAAC,EAAE,CAAG2B,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAW3B,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,CAClD,CACD,EACD,C,wGCLe,SAAS,EAACA,CAAsB,CAAE+C,CAAW,EAC3D/C,EAAO,KAAK,CAAC,8BAA+B,CAC3C,MAAM8B,CAAG,EACJA,CAAAA,EAAI,IAAI,CAAC,EAAE,EAAIA,AAAgB,KAAhBA,EAAI,IAAI,CAAC,EAAE,AAAM,GACnCA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,GAClD8B,EAAI,IAAI,GAER,IAAMb,EAAK,IAAI6E,EAAAA,cAAcA,CAAC9F,EAAO,GAAG,CAAC,IAAI,CACzCA,CAAAA,EAAO,KAAK,EAAEA,EAAO,KAAK,CAAC,aAAa,CAACiB,EAC9C,CACD,GAEAjB,EAAO,KAAK,CAAC,iCAAkC,CAC9C,MAAM8B,CAAG,EACJA,CAAAA,EAAI,IAAI,CAAC,EAAE,EAAIA,AAAgB,KAAhBA,EAAI,IAAI,CAAC,EAAE,AAAM,GACnCA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,GAClD8B,EAAI,IAAI,GAER,IAAMb,EAAK,IAAI6E,EAAAA,cAAcA,CAAC9F,EAAO,GAAG,CAAC,IAAI,CACzCA,CAAAA,EAAO,KAAK,EAAEA,EAAO,KAAK,CAAC,aAAa,CAACiB,EAC9C,CACD,EACD,C,oCC1Be,SAAS,EAACjB,CAAM,CAAE6C,CAAU,EAE1C,OAAOA,EAAK,UAAU,AACvB,C,+JCCe,SAAS,EAAC7C,CAAsB,EAC9CA,EAAO,KAAK,CAAC,cAAe,CAC3B,MAAM8B,CAAG,EACJA,EAAI,IAAI,CAAC,EAAE,EAAEA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,GAE9D,CAAC,UAAW,OAAQ,eAAe,CAAC,QAAQ,CAAC8B,EAAI,IAAI,CAAC,EAAE,GAC3DA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAG,OAAM,EAErB,IAAM2D,EAAU3D,EAAI,IAAI,GAExB,GAAI,CAAC2D,EAAS,OAAO3D,EAAI,MAAM,CAAC2D,GAEhC,GAAIpH,EAAAA,CAAcA,IAAIoH,EACrB,OAAO3D,EAAI,MAAM,CAAC2D,CAAO,CAACpH,EAAAA,CAAcA,CAAC,CAAC,WAAW,CAC/C,EACN,IAAMqH,EAAY,IAAIzH,EAAAA,cAAcA,CAACwH,GAIrC,OAFAC,EAAU,IAAI,GAEP5D,EAAI,MAAM,CAAC4D,EAAU,WAAW,CACxC,CACD,CACD,GAGA1F,EAAO,IAAI,CAAC,SAAU,CACrB,IAAI8B,CAAG,EACN,IAAM2D,EAAU3D,EAAI,GAAG,UAEvB,AAAI2D,GAAWpH,EAAAA,CAAcA,IAAIoH,EACzBA,CAAO,CAACpH,EAAAA,CAAcA,CAAC,CAAC,WAAW,CAG1C,MAEF,CACD,GAEA2B,EAAO,IAAI,CAAC,sBAAuB,CAClC,IAAI8B,CAAG,EACN,IAAMiE,EAAIjE,EAAI,GAAG,UACjB,AAAKiE,EAGDC,AADQD,EAAE,aAAa,CAAC,WAAW,AAChC,CAAC1H,EAAAA,CAAcA,CAAC,CAEf0H,EAGA,KAROA,CAUhB,CACD,EACD,C,oCCvDe,SAAS,EAAC/F,CAAsB,CAAE+C,CAAW,EAC3D/C,EAAO,IAAI,CAAC,SAAU,CACrB,QAEQA,EAAO,GAAG,CAAC,MAAM,CAEzB,QACQ,EAET,GAEAA,EAAO,IAAI,CAAC,yBAA0B,CACrC,QACQA,EAAO,GAAG,CAAC,IAAI,CAEvB,QACQ,EAET,GAEAA,EAAO,IAAI,CAAC,iCAAkC,CAC7C,QACQA,EAAO,GAAG,CAAC,IAAI,CAEvB,QACQ,EAET,GAEAA,EAAO,IAAI,CAAC,4BAA6B,CACxC,QACQA,EAAO,GAAG,CAAC,QAAQ,CAE3B,QACQ,EAET,EACD,C,2ICpCe,SAAS,EAACA,CAAsB,CAAE+C,CAAW,EAC3D/C,EAAO,IAAI,CAAC,kCAAmC,CAC9C,IAAI8B,GACId,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAac,EAAI,GAAG,GAE7B,EACD,C,+LCHO,IAAMmE,EAAQ,EAERC,EAAU,AAAClG,GACvBmG,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAY,iBAAkBnG,EAAO,GAAG,EAElC,SAASoG,EAASC,CAAuB,CAAEtD,CAAW,EAC5DpD,QAAQ,cAAc,CAAC2G,UAAU,SAAS,CAAE,gBAC7C,CAOe,SAAS,EAACtG,CAAsB,CAAE+C,CAAW,EAC3D,IAAMwD,EAGF,IAAIC,QACRxG,EAAO,KAAK,CAAC,yCAA0C,CACtD,MAAM8B,CAAG,EACJyE,EAAgB,GAAG,CAACzE,EAAI,IAAI,GAE/BA,EAAI,MAAM,CAAC1B,KAAAA,EAEb,CACD,GAEAJ,EAAO,KAAK,CAAC,4CAA6C,CACzD,MAAM8B,CAAG,EACJyE,EAAgB,GAAG,CAACzE,EAAI,IAAI,GAE/BA,EAAI,MAAM,CAAC1B,KAAAA,EAEb,CACD,GAEAJ,EAAO,KAAK,CAAC,mDAAoD,CAChE,MAAM8B,CAAG,EACRA,EAAI,MAAM,CAAC,IAAIhD,QAAQ,AAACC,GAAYA,EAAQ0H,eAC7C,CACD,GAEAzG,EAAO,KAAK,CAAC,oDAAqD,CACjE,MAAM8B,CAAG,EACRA,EAAI,MAAM,CAAC,IAAIhD,QAAQ,AAACC,GAAYA,EAAQ,CAAC0H,aAAa,GAC3D,CACD,GAEAzG,EAAO,IAAI,CAAC,yCAA0C,CACrD,IAAI+E,GACI,IAAIjG,QAAQ,AAACC,GAAYA,EAAQ0H,cAE1C,GAEAzG,EAAO,IAAI,CAAC,8CAA+C,CAC1D,IAAI8B,GACI2E,cAAc,MAEvB,GAEAzG,EAAO,KAAK,CAAC,4CAA6C,CACzD,MAAM8B,CAAG,EACR,IAAM4E,EAAmB,IAAIC,YAC7BpE,OAAO,cAAc,CACpBmE,EACA7D,KAAK,yBAAyB,CAAC,SAAS,EAEzC6D,EAAiB,WAAW,CAAG5E,EAAI,EAAE,CACrC,IAAI5B,EAAMiB,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,EAAI,qBAC7C8B,CAAAA,EAAI,IAAI,CAAC,EAAE,EAAIA,AAAqB,WAArBA,EAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAClC5B,CAAAA,GAAO,cAAa,EAIrB,IAAM0G,EAASC,AADA7G,EAAO,OAAO,CAAC,SAAS,CAAC,eAAgBE,GAClC,IAAI,CACpB4G,EAA+B,CACpC,MAAOhF,EAAI,IAAI,CAAC,EAAE,CAClB,OAAQ8E,CACT,EACMpD,EAAaxD,EAAO,WAAW,CAAC,GAAG,CACxC,8CACAA,EAAO,aAAa,EAGrBA,EAAO,OAAO,CAAC,IAAI,CAClB,sCACAwD,EACA,CACC,cAAe,wBACf,KAAMoD,EACN,OAAQ5G,EAAO,GAAG,CAAC,MAAM,AAC1B,EACA,CAAC4G,EAAO,EAGTL,EAAgB,GAAG,CAACG,EAAkBI,GACtChF,EAAI,MAAM,CAAC,IAAIhD,QAAQ,AAACC,GAAYA,EAAQ2H,IAC7C,CACD,EACD,C,oCCxGe,SAAS,EAAC1G,CAAsB,CAAE6C,CAAmB,EACnE,IAAMxB,EAAiC,CACtC,IAAIlC,CAAM,CAAEC,CAAI,EACf,OAAQA,GACP,IAAK,UACJ,OAAO,AAACyB,GACA1B,EAAO,OAAO,CAACa,EAAO,GAAG,CAAC,IAAI,CAAG,IAAMa,EAGhD,KAAK,UACJ,MAAO,CAACA,EAAad,IACbZ,EAAO,OAAO,CAACa,EAAO,GAAG,CAAC,IAAI,CAAG,IAAMa,EAAKd,EAGrD,KAAK,aACJ,OAAO,AAACc,GACA1B,EAAO,UAAU,CAACa,EAAO,GAAG,CAAC,IAAI,CAAG,IAAMa,EAGnD,KAAK,QACJ,MAAO,KACN,IAAK,IAAMA,KAAO0B,OAAO,IAAI,CAACpD,GACzB0B,EAAI,UAAU,CAACb,EAAO,GAAG,CAAC,IAAI,GACjCb,EAAO,UAAU,CAAC0B,EAGrB,CAED,KAAK,MACJ,OAAO,AAACkG,IACP,IAAMxD,EAAOhB,OAAO,IAAI,CAACpD,GAAQ,MAAM,CAAC,AAAC0B,GACxCA,EAAI,UAAU,CAACb,EAAO,GAAG,CAAC,IAAI,GAG/B,OAAOb,EAAO,OAAO,CAACoE,CAAI,CAACwD,EAAM,CAClC,CAED,KAAK,SACJ,OAAOxE,OAAO,IAAI,CAACpD,GAAQ,MAAM,CAAC,AAAC0B,GAClCA,EAAI,UAAU,CAACb,EAAO,GAAG,CAAC,IAAI,GAC7B,MAAM,AAET,SACC,GAAIZ,KAAQmD,OAAO,SAAS,EAAI,AAAgB,UAAhB,OAAOnD,EACtC,OAAOO,QAAQ,GAAG,CAACR,EAAQC,GAI5B,OAFAd,QAAQ,GAAG,CAAC,MAAOc,EAAMD,GAAU6H,GAE5B7H,EAAO,OAAO,CAACa,EAAO,GAAG,CAAC,IAAI,CAAG,IAAOZ,EACjD,CACD,EAEA,KAAID,EAAQC,EAAMW,KACbZ,GAAU6H,GACb1I,QAAQ,GAAG,CAAC,MAAOc,EAAMW,EAAOZ,IAAW6H,GAC5C7H,EAAO,OAAO,CAACa,EAAO,GAAG,CAAC,IAAI,CAAG,IAAOZ,EAAiBW,GAElD,IAGR,QAAQZ,GACAQ,QAAQ,OAAO,CAACR,GACrB,MAAM,CAAC,AAAC4G,GAAM,AAAa,UAAb,OAAOA,GAAkBA,EAAE,UAAU,CAAC/F,EAAO,GAAG,CAAC,IAAI,GACnE,GAAG,CAAC,AAAC+F,GACL,AAAa,UAAb,OAAOA,EAAiBA,EAAE,SAAS,CAAC/F,EAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAG,GAAK+F,GAIrE,0BAAyB5G,EAAQ8H,IACzB,EACN,MAAO9H,EAAO,OAAO,CAACa,EAAO,GAAG,CAAC,IAAI,CAAG,IAAOiH,GAC/C,WAAY,GACZ,aAAc,GACd,SAAU,EACX,GAGD,gBAAe9H,EAAQ8H,EAAUC,KAChC/H,EAAO,OAAO,CACba,EAAO,GAAG,CAAC,IAAI,CAAG,IAAOiH,EACzBC,EAAW,KAAK,EAGV,GAET,EAEMF,EAAmBnE,EAAK,YAAY,CAEpCsE,EAAoB,IAAIjI,MAAM2D,EAAK,YAAY,CAAExB,GACjD+F,EAAsB,IAAIlI,MAAM2D,EAAK,cAAc,CAAExB,EAE3D,QAAOwB,EAAK,YAAY,CACxB,OAAOA,EAAK,cAAc,CAE1BA,EAAK,YAAY,CAAGsE,EACpBtE,EAAK,cAAc,CAAGuE,CACvB,C,+MCnGO,OAAMlG,UAAsBmG,M,GAClC,aAAmBnH,CAAW,CAAE,CAC/B,KAAK,CAAC,iBADYA,GAAG,CAAHA,CAEnB,CACD,CAEO,MAAM4F,UAAuBuB,M,GACnC,aAAmBnH,CAAW,CAAE,CAC/B,KAAK,CAAC,kBADYA,GAAG,CAAHA,CAEnB,CACD,CAEO,MAAMoH,UAA4BD,M,MACxC,aAAmBE,CAAY,CAAE,CAChC,KAAK,CAAC,oBADYA,MAAM,CAANA,CAEnB,CACD,C,2KCTO,IAAMC,EAAiB,CAC7B,SACA,OACA,aACA,OACA,SACA,MACA,WACA,WACA,OACA,SACA,CAEM,SAAS7I,EACfqB,CAAsB,CACtB6C,CAAuB,EAEvB,OAAO,IAAI3D,MAAM2D,EAAM,CACtB,IAAI1D,CAAM,CAAEC,CAAI,EACf,IAAMW,EAAQJ,QAAQ,GAAG,CAACR,EAAQC,GAElC,GACCZ,EAAAA,QAAQA,EACP,CAAgB,UAAhB,OAAOY,GAAqB,AAAgB,UAAhB,OAAOA,CAAgB,GACpD,CAACiE,MAAMC,OAAOlE,KACdW,EACC,CACD,IAAMiG,EAAYjG,EAAM,IAAI,CAG5B,GAAIiG,EAAK,CACR,GAAI3H,EAAAA,CAAcA,IAAI2H,EAErB,OAAOA,CAAG,CAAC3H,EAAAA,CAAcA,CAAC,CAAC,WAAW,AAChC,EAGN,IAAMqH,EAAY,IAAIzH,EAAAA,cAAcA,CAAC+H,GAGrC,OAFAN,EAAU,IAAI,GAEPA,EAAU,WAAW,AAC7B,CACD,CACD,CAEA,GAAItG,AAAS,cAATA,QAEJ,AAAI,AAAgB,UAAhB,OAAOA,GAAqBoI,EAAe,QAAQ,CAACpI,GAChDY,EAAO,MAAM,CAACD,GAEfA,CACR,EAEA,IAAIZ,CAAM,CAAEC,CAAI,CAAEW,CAAK,EACtB,GAAIX,AAAS,aAATA,EAAqB,CACxBY,EAAO,GAAG,CAAGD,EAEb,MACD,CAEA,OAAOJ,QAAQ,GAAG,CAACR,EAAQC,EAAMW,EAClC,EACA,KAAIZ,EAAQC,IACX,AAAa,cAATA,GAEGO,QAAQ,GAAG,CAACR,EAAQC,GAE5B,QAAQD,GACAQ,QAAQ,OAAO,CAACR,GAAQ,MAAM,CAAC,AAAC0B,GAAQA,AAAQ,cAARA,GAEhD,gBAAe1B,EAAQ8H,EAAUC,KAC5B,CAACA,EAAW,GAAG,EAAI,CAACA,EAAW,GAAG,EACrCA,CAAAA,EAAW,QAAQ,CAAG,EAAG,EAE1BA,EAAW,YAAY,CAAG,GAEnBvH,QAAQ,cAAc,CAACR,EAAQ8H,EAAUC,IAEjD,yBAA0B1E,EAAAA,+BAA+BA,AAC1D,EACD,C,oCCvFO,SAASA,EAAgCrD,CAAM,CAAEC,CAAI,EAG3D,OAFuBO,QAAQ,wBAAwB,CAACR,EAAQC,EAGjE,C,gXCIO,IAAMZ,EAAW,WAAYqE,MAAQ0E,kBAAkBE,OACjDC,EAAW,sBAAuB7E,KAClC8E,EAAO,6BAA8B9E,KACrC+E,EAAc,+BAAgC/E,KAC9CgF,EAAW,4BAA6BhF,KACxCiF,EACZ,AAAyD,kBAAzD,IAAIzH,IAAIwC,KAAK,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,QAI9C,GAFAkF,EAAI,GAAG,CAAC,YAEJ,CAAE1J,CAAAA,EAAAA,CAAcA,IAA0BwE,IAAG,EAAI,CACpDmF,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,IAEA,IAAMhI,EAAS,IAAI/B,EAAAA,cAAcA,CAAC4E,KAE9BA,CAAAA,KAAK,MAAM,EAAE7C,EAAO,WAAW,CAAC6C,KAAK,MAAM,EAE/C7C,EAAO,IAAI,GAEP8H,GAEHG,AADgB,IAAIC,EAAAA,4BAA4BA,CAAClI,GACzC,IAAI,GAGb,IAAMiB,EAAK,IAAIqG,EAAAA,mBAAmBA,CAACtH,EAAO,MAAM,CAAC,MAAM,CACvDA,CAAAA,EAAO,KAAK,EAAE,cAAciB,EAC7B,CAEAtB,QAAQ,cAAc,CAACkD,KAAM,QAC7BlD,QAAQ,cAAc,CAACkD,KAAM,UACzB,aAAcA,MAAQsF,UAAU,eACnCA,SAAS,aAAa,CAAC,MAAM,E,yIChCvB,SAASzJ,EACfsB,CAAsB,CACtB6C,CAAuB,EAEvB,IAAMuF,EAAW5J,EAAAA,QAAQA,CAAGqE,EAAK,QAAQ,CAAGA,EAAK,cAAc,CAEzDwF,EAAe,CAAC,EACtB9F,OAAO,cAAc,CAAC8F,EAAcD,EAAS,SAAS,EACtDC,EAAa,WAAW,CAAGD,EAG3B,IAAME,EAAmB9J,EAAAA,QAAQA,CAAGqE,EAAK,QAAQ,CAAGuF,EAAS,SAAS,CAYtE,IAAK,IAAMhJ,IAXM,CAChB,WACA,OACA,OACA,WACA,OACA,SACA,WACA,OACA,SACA,CAC4B,CAC5B,IAAMmJ,EAASzI,AAAAA,GAAAA,EAAAA,8BAAAA,AAAAA,EAA+BwI,EAAkBlJ,GAChE,GAAI,CAACmJ,EAAQ,SAEb,IAAM3F,EAAO,CACZ,aAAc,GACd,WAAY,EACb,CACI2F,CAAAA,EAAO,GAAG,EACb3F,CAAAA,EAAK,GAAG,CAAG,IAAI1D,MAAMqJ,EAAO,GAAG,CAAE,CAChC,UACQvI,EAAO,GAAG,CAACZ,EAAK,AAEzB,EAAC,EAEEmJ,EAAO,GAAG,EACb3F,CAAAA,EAAK,GAAG,CAAG,IAAI1D,MAAMqJ,EAAO,GAAG,CAAE,CAChC,MAAMpJ,CAAM,CAAE8C,CAAO,CAAErC,CAAI,EAC1B,GAAIR,AAAS,SAATA,EAAiB,CAEpBY,EAAO,GAAG,CAAGJ,CAAI,CAAC,EAAE,CAEpB,MACD,CACA,GAAIR,AAAS,SAATA,EAAiB,CACpByD,EAAK,QAAQ,CAAC,IAAI,CAAGjD,CAAI,CAAC,EAAE,CAC5B,IAAMqB,EAAK,IAAI6E,EAAAA,cAAcA,CAAC9F,EAAO,GAAG,CAAC,IAAI,CACzCA,CAAAA,EAAO,KAAK,EAAEA,EAAO,KAAK,CAAC,aAAa,CAACiB,GAE7C,MACD,CACA,IAAMf,EAAM,IAAIG,IAAIL,EAAO,GAAG,CAAC,IAAI,CACnCE,CAAAA,CAAG,CAACd,EAAK,CAAGQ,CAAI,CAAC,EAAE,CACnBI,EAAO,GAAG,CAAGE,CACd,CACD,EAAC,EAEFqC,OAAO,cAAc,CAAC8F,EAAcjJ,EAAMwD,EAC3C,CAoCA,OAjCAyF,EAAa,QAAQ,CAAG,IAAInJ,MAAM2D,EAAK,QAAQ,CAAC,QAAQ,CAAE,CACzD,UACQ7C,EAAO,GAAG,CAAC,IAAI,AAExB,GAEI6C,EAAK,QAAQ,CAAC,OAAO,EACxBwF,CAAAA,EAAa,OAAO,CAAG,IAAInJ,MAAM2D,EAAK,QAAQ,CAAC,OAAO,CAAE,CACvD,UACQ7C,EAAO,GAAG,CAAC,IAAI,AAExB,EAAC,EACE6C,EAAK,QAAQ,CAAC,MAAM,EACvBwF,CAAAA,EAAa,MAAM,CAAG,IAAInJ,MAAM2D,EAAK,QAAQ,CAAC,MAAM,CAAE,CACrD,MAAM1D,CAAM,CAAE8C,CAAO,CAAErC,CAAI,EAC1BA,CAAI,CAAC,EAAE,CAAGuB,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWvB,CAAI,CAAC,EAAE,CAAEI,EAAO,IAAI,EACzCL,QAAQ,KAAK,CAACR,EAAQ0D,EAAK,QAAQ,CAAEjD,EACtC,CACD,EAAC,EACEiD,EAAK,QAAQ,CAAC,MAAM,EACvBwF,CAAAA,EAAa,MAAM,CAAG,IAAInJ,MAAM2D,EAAK,QAAQ,CAAC,MAAM,CAAE,CACrD,MAAM1D,CAAM,CAAE8C,CAAO,CAAErC,CAAI,EAC1BD,QAAQ,KAAK,CAACR,EAAQ0D,EAAK,QAAQ,CAAEjD,EACtC,CACD,EAAC,EACEiD,EAAK,QAAQ,CAAC,OAAO,EACxBwF,CAAAA,EAAa,OAAO,CAAG,IAAInJ,MAAM2D,EAAK,QAAQ,CAAC,OAAO,CAAE,CACvD,MAAM1D,CAAM,CAAE8C,CAAO,CAAErC,CAAI,EAC1BA,CAAI,CAAC,EAAE,CAAGuB,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWvB,CAAI,CAAC,EAAE,CAAEI,EAAO,IAAI,EACzCL,QAAQ,KAAK,CAACR,EAAQ0D,EAAK,QAAQ,CAAEjD,EACtC,CACD,EAAC,EAEKyI,CACR,C,4ICzGO,IAAMG,EAAiB3F,KAAK,QAAQ,CAC9B/C,EACZ+C,KAAK,MAAM,CAAC,wBAAwB,A,oCCAtB,SAAS,EAAC7C,CAAsB,EAC9CA,EAAO,KAAK,CAAC,gBAAiB,CAC7B,MAAM8B,CAAG,EAERA,EAAI,MAAM,CAAC1B,KAAAA,EACZ,CACD,GAEA,IAAMqI,EAAMnK,QAAQ,GAAG,CACvB0B,EAAO,IAAI,CAAC,cAAe,CAC1B,IAAI+E,CAAI,CAAE2D,CAAE,EAEZ,EACA,IAAI3D,GACI0D,CAET,EACD,C,2ICjBe,SAAS,EAACzI,CAAsB,EAE9CA,EAAO,KAAK,CAAC,sBAAuB,CACnC,MAAM8B,CAAG,EACR,IAAM5B,EAAc4B,EAAI,IAAI,GACxB5B,EAAI,UAAU,CAAC,SAClB4B,EAAI,MAAM,CAAC6G,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAYzI,EAAKF,EAAO,IAAI,GAEvC8B,EAAI,MAAM,CAAC5B,EAEb,CACD,GAEAF,EAAO,KAAK,CAAC,sBAAuB,CACnC,MAAM8B,CAAG,EACRA,EAAI,IAAI,CAAC,EAAE,CAAG8G,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAc9G,EAAI,IAAI,CAAC,EAAE,CACxC,CACD,EACD,C,+FCjBe,SAAS,EAAC9B,CAAsB,CAAE+C,CAAW,EAC3D/C,EAAO,KAAK,CAAC,8BAA+B,CAC3C,MAAM8B,CAAG,EACRA,EAAI,IAAI,CAAC,EAAE,CAAG,CAAC,EAAE9B,EAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE8B,EAAI,IAAI,CAAC,EAAE,CAAC,CAAC,AACpD,CACD,GAEA9B,EAAO,KAAK,CAAC,6BAA8B,CAC1C,MAAM8B,CAAG,EACRA,EAAI,IAAI,CAAC,EAAE,CAAG,CAAC,EAAE9B,EAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE8B,EAAI,IAAI,CAAC,EAAE,CAAC,CAAC,AACpD,CACD,GAEA9B,EAAO,KAAK,CAAC,+BAAgC,CAC5C,MAAM8B,CAAG,EACJ,CAAuB,UAAvB,OAAOA,EAAI,IAAI,CAAC,EAAE,EAAiBA,EAAI,IAAI,CAAC,EAAE,WAAYzB,GAAE,GAC/DyB,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,EAEnD,CACD,GAEAA,EAAO,KAAK,CAAC,gCAAiC,CAC7C,MAAM8B,CAAG,EACRA,EAAI,IAAI,CAAC,EAAE,CAAG,CAAC,EAAE9B,EAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE8B,EAAI,IAAI,CAAC,EAAE,CAAC,CAAC,AACpD,CACD,GAEA9B,EAAO,KAAK,CAAC,sBAAuB,CACnC,MAAM8B,CAAG,EACJ,CAAuB,UAAvB,OAAOA,EAAI,IAAI,CAAC,EAAE,EAAiBA,EAAI,IAAI,CAAC,EAAE,WAAYzB,GAAE,GAC/DyB,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,EAEnD,CACD,GAEAA,EAAO,KAAK,CAAC,yBAA0B,CACtC,MAAM8B,CAAG,EACR,IAAK,IAAIyC,EAAI,EAAGA,EAAIzC,EAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAEyC,IAEtC,CAA0B,UAA1B,OAAOzC,EAAI,IAAI,CAAC,EAAE,CAACyC,EAAE,EACrBzC,EAAI,IAAI,CAAC,EAAE,CAACyC,EAAE,WAAYlE,GAAE,GAE5ByB,CAAAA,EAAI,IAAI,CAAC,EAAE,CAACyC,EAAE,CAAGpD,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAACyC,EAAE,CAAEvE,EAAO,IAAI,EAG1D,CACD,GAEAA,EAAO,KAAK,CAAC,sBAAuB,CACnC,MAAM8B,CAAG,EACJ,CAAuB,UAAvB,OAAOA,EAAI,IAAI,CAAC,EAAE,EAAiBA,EAAI,IAAI,CAAC,EAAE,WAAYzB,GAAE,GAC/DyB,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,EAEnD,CACD,GAEAA,EAAO,KAAK,CAAC,wBAAyB,CACrC,MAAM8B,CAAG,EACJ,CAAuB,UAAvB,OAAOA,EAAI,IAAI,CAAC,EAAE,EAAiBA,EAAI,IAAI,CAAC,EAAE,WAAYzB,GAAE,GAC/DyB,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,EAEnD,CACD,GAEAA,EAAO,KAAK,CAAC,2BAA4B,CACxC,MAAM8B,CAAG,EAENA,CAAAA,EAAI,IAAI,CAAC,EAAE,EAAI,AAAuB,UAAvB,OAAOA,EAAI,IAAI,CAAC,EAAE,EACjCA,EAAI,IAAI,CAAC,EAAE,EAAIA,EAAI,IAAI,CAAC,EAAE,WAAYzB,GAAE,GAEzCyB,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,EAEnD,CACD,GAEAA,EAAO,KAAK,CAAC,uBAAwB,CACpC,MAAM8B,CAAG,EAENA,CAAAA,EAAI,IAAI,CAAC,EAAE,EAAI,AAAuB,UAAvB,OAAOA,EAAI,IAAI,CAAC,EAAE,EACjCA,EAAI,IAAI,CAAC,EAAE,EAAIA,EAAI,IAAI,CAAC,EAAE,WAAYzB,GAAE,GAEzCyB,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,EAEnD,CACD,GAEAA,EAAO,KAAK,CAAC,yBAA0B,CACtC,MAAM8B,CAAG,EACJ,CAAuB,UAAvB,OAAOA,EAAI,IAAI,CAAC,EAAE,EAAiBA,EAAI,IAAI,CAAC,EAAE,WAAYzB,GAAE,GAC/DyB,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,EAEnD,CACD,EACD,C,wJC7FO,IAAMkG,EAAU,AAAClG,GACvBmG,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAY,gBAAiBnG,EAAO,GAAG,EACjC,SAAS6I,EAAOC,CAAG,CAAEC,EAAU,EAAE,EACvC,OAAQ,OAAOD,GACd,IAAK,SACJ,KACD,KAAK,SACJ,GACCA,GACAA,CAAG,CAACE,OAAO,QAAQ,CAAC,EACpB,AAAgC,YAAhC,OAAOF,CAAG,CAACE,OAAO,QAAQ,CAAC,CAE3B,IAAK,IAAM5J,KAAQ0J,EAAK,CAEvB,IAAMlG,EAAOL,OAAO,wBAAwB,CAACuG,EAAK1J,GAClD,GAAIwD,GAAQA,EAAK,GAAG,CAAE,SAEtB,IAAMqG,EAAKH,CAAG,CAAC1J,EAAK,EAChB2J,EAAQ,QAAQ,CAACE,KACrBF,EAAQ,IAAI,CAACE,GACbJ,EAAOI,EAAIF,GACZ,CAEH,CACD,CAEe,SAAS,EAAC/I,CAAsB,CAAE6C,CAAuB,EACvEA,EAAK,SAAS,CAAG,SAAkBqG,CAAC,EACnC5K,QAAQ,IAAI,CAAC,eAAgB4K,EAC9B,EAEArG,EAAK,SAAS,CAAG,SAAkBjD,CAAI,CAAEgE,CAAC,EAIzC,OAHIhE,GAAQ,AAAgB,UAAhB,OAAOA,GAAqBA,EAAK,MAAM,CAAG,GAAGiJ,EAAOjJ,GAChEiJ,EAAOjF,GAEAA,CACR,EAEA5D,EAAO,KAAK,CAAC,0BAA2B,CACvC,MAAM8B,CAAG,EACJA,EAAI,IAAI,CAAC,EAAE,EACdA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAG,IAAI5C,MAAM4C,EAAI,IAAI,CAAC,EAAE,CAAE,CACpC,MAAM3C,CAAM,CAAE8C,CAAO,CAAEP,CAAQ,EAE9B/B,QAAQ,KAAK,CAACR,EAAQ8C,EAASP,EAChC,CACD,EAAC,CACH,CACD,EACD,C,sIChDO,IAAMwE,EAAU,AAAClG,GACvBmG,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAY,cAAenG,EAAO,GAAG,EAEvB,SAAS,EAACA,CAAsB,CAAE+C,CAAW,EAE3D,IAAMoG,EAAU,CAACC,EAAOC,KACvB,IAAIC,EAAWF,EAAM,KAAK,CAE1B,IAAK,IAAI7E,EAAI,EAAGA,EAAI8E,EAAM,MAAM,CAAE9E,IAAK,CACtC,IAAMrE,EAAMmJ,CAAK,CAAC9E,EAAE,CAAC,WAAW,GAEhC,GAAIrE,EAAI,QAAQ,CAACoC,EAAAA,EAAAA,CAAAA,KAAAA,CAAAA,MAAmB,EAAG,CAEtC,IAAMiH,EAAQD,EAAS,KAAK,CAAC,MACvBE,EAAOD,EAAM,IAAI,CAAC,AAACE,GAAMA,EAAE,QAAQ,CAACvJ,IAC1CqJ,EAAM,MAAM,CAACC,EAAM,GACnBF,EAAWC,EAAM,IAAI,CAAC,MACtB,QACD,CAEA,GAAI,CACHD,EAAWA,EAAS,UAAU,CAACpJ,EAAKc,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAad,GAClD,CAAE,KAAM,CAAC,CACV,CAEA,OAAOoJ,CACR,EACAtJ,EAAO,IAAI,CAAC,0BAA2B,CACtC,IAAI+E,GAEIoE,EAER,IAAIO,CAAM,EAEV,CACD,EACD,C,iICrCe,SAAS,EAAC1J,CAAsB,CAAE6C,CAAU,EAG1DN,OAAO,cAAc,CAACM,EAAMP,EAAAA,EAAAA,CAAAA,OAAAA,CAAAA,SAAwB,CAAE,CACrD,MAAO,SAAUqH,CAAO,QACvB,AAAI,AAAc,UAAd,OAAOA,EAAwBA,EAEjBzE,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAUyE,EAAI,sBAAuB3J,EAAO,IAAI,CAGnE,EACA,SAAU,GACV,aAAc,EACf,EACD,CAEO,SAAS4J,EAAmCD,CAAO,QAEzD,AAAI,AAAc,UAAd,OAAOA,EAAwBA,EAI5BE,AAFa,OAAI,CAAC,MAAM,CAAC,IAAI,AAAD,EAGlC3E,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAUyE,EAAI,wBAAyB,IAAI,CAAC,IAAI,EAElD,C,uICrBA,IAAMG,EAAcd,OAAO,GAAG,CAAC,sCAEhB,SAAS,EAAChJ,CAAsB,CAAE6C,CAAU,EAC1D,IAAMkH,EAAW,CAChB,QAAS,CACR,cACC,AAAI,CAAqB,UAArB,OAAO,IAAI,CAAC,IAAI,GAAiB,oBAAoB,IAAI,CAAC,IAAI,AAAD,IAK1D,EACR,EACA,QAEC,OAAO,IAAI,CAAC,KAAK,AAClB,EACA,SACC,GAAI,AAAgB,OAAhB,IAAI,CAAC,MAAM,CAAW,OAAO,KAEjC,IAAMnE,EAAwB,IAAI,CAAC,MAAM,CAACvH,EAAAA,CAAcA,CAAC,QAEzD,AAAIuH,EAAcA,EAAM,WAAW,CAE5B,IAAI,CAAC,MAAM,AACnB,EACA,eACC,AAAI,AAAqB,UAArB,OAAO,IAAI,CAAC,IAAI,EAAiB,qBAAsB,IAAI,CAAC,IAAI,CAC5D,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAE3B5F,EAAO,GAAG,CAAC,MAAM,AACzB,EACA,aACC,AAAI,AAAqB,UAArB,OAAO,IAAI,CAAC,IAAI,EAAiB,mBAAoB,IAAI,CAAC,IAAI,CAC1D,IAAI,CAAC,IAAI,CAAC,cAAc,CAEzB,IAAI,CAAC,IAAI,AACjB,CACD,CACD,EAIA,SAASgK,EAAaC,CAA+B,EACpD,OAAO,IAAI/K,MAAM+K,EAAU,CAC1B,MAAM9K,CAAM,CAAE8C,CAAO,CAAEP,CAAQ,EAC9B,IAAMwI,EAAmBxI,CAAQ,CAAC,EAAE,CAGpC,GAAIwI,EAAU,SAAS,CAAE,CACxB,IAAMC,EAAOD,EAAU,IAAI,CAE3B,GAAIC,KAAQJ,EAAU,CACrB,IAAM1I,EAAU0I,CAAQ,CAACI,EAAK,CAE9B,GAAI9I,EAAQ,KAAK,EACZA,AAAkC,KAAlCA,EAAQ,KAAK,CAAC,IAAI,CAAC6I,GAAsB,MAG9CxI,CAAAA,CAAQ,CAAC,EAAE,CAAG,IAAIxC,MAAMgL,EAAW,CAClC,KAAIE,EAAShL,EAAMiL,IAClB,AAAIjL,KAAQiC,EACJA,CAAO,CAACjC,EAAK,CAAC,IAAI,CAACgL,GAGpBzK,QAAQ,GAAG,CAACR,EAAQC,EAAMiL,GAElC,yBAA0B7H,EAAAA,+BAA+BA,AAC1D,EACD,CACD,CAaA,MAXI,CAACK,EAAK,KAAK,EACdN,OAAO,cAAc,CAACM,EAAM,QAAS,CACpC,QACQnB,CAAQ,CAAC,EAAE,CAEnB,aAAc,EACf,GAGU/B,QAAQ,KAAK,CAACR,EAAQ8C,EAASP,EAG3C,EACA,yBAA0Bc,EAAAA,+BAA+BA,AAC1D,EACD,CAEAxC,EAAO,KAAK,CAAC,yCAA0C,CACtD,MAAM8B,CAAG,EAER,GADAwI,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAQxI,EAAK9B,GACT,AAAuB,YAAvB,OAAO8B,EAAI,IAAI,CAAC,EAAE,CAAiB,OAEvC,IAAMyI,EAAezI,EAAI,IAAI,CAAC,EAAE,CAC1B0I,EAAgBR,EAAaO,EAEnCzI,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAG0I,EAEd,IAAIC,EAAMzK,EAAO,cAAc,CAAC,GAAG,CAAC8B,EAAI,IAAI,EAE5C2I,AADAA,CAAAA,IAAQ,EAAE,AAAD,EACL,IAAI,CAAC,CACR,MAAO3I,EAAI,IAAI,CAAC,EAAE,CAClB,iBAAkByI,EAClB,gBAAiBC,CAClB,GACAxK,EAAO,cAAc,CAAC,GAAG,CAAC8B,EAAI,IAAI,CAAE2I,EACrC,CACD,GAEAzK,EAAO,KAAK,CAAC,4CAA6C,CACzD,MAAM8B,CAAG,EAER,GADAwI,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAQxI,EAAK9B,GACT,AAAuB,YAAvB,OAAO8B,EAAI,IAAI,CAAC,EAAE,CAAiB,OAEvC,IAAM2I,EAAMzK,EAAO,cAAc,CAAC,GAAG,CAAC8B,EAAI,IAAI,EAC9C,GAAI,CAAC2I,EAAK,OAEV,IAAMlG,EAAIkG,EAAI,SAAS,CACtB,AAACvB,GAAMA,EAAE,KAAK,GAAKpH,EAAI,IAAI,CAAC,EAAE,EAAIoH,EAAE,gBAAgB,GAAKpH,EAAI,IAAI,CAAC,EAAE,EAErE,GAAIyC,AAAM,KAANA,EAAU,OAEd,IAAMxC,EAAI0I,EAAI,MAAM,CAAClG,EAAG,GACxBvE,EAAO,cAAc,CAAC,GAAG,CAAC8B,EAAI,IAAI,CAAE2I,GAEpC3I,EAAI,IAAI,CAAC,EAAE,CAAGC,CAAC,CAAC,EAAE,CAAC,eAAe,AACnC,CACD,GAEA/B,EAAO,KAAK,CAAC,sCAAuC,CACnD,MAAM8B,CAAG,EACRwI,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAQxI,EAAK9B,EACd,CACD,GAEA,IAAM0K,EAAU,CAAC7H,EAAK,IAAI,CAAEA,EAAK,WAAW,CAAC,SAAS,CAAC,CAIvD,IAAK,IAAM1D,KAHPX,EAAAA,QAAQA,EAAEkM,EAAQ,IAAI,CAAC7H,EAAK,WAAW,CAAC,SAAS,EACjDA,EAAK,MAAM,EAAE6H,EAAQ,IAAI,CAAC7H,EAAK,MAAM,CAAC,SAAS,EAE9B6H,GAGpB,IAAK,IAAM7J,KAFElB,QAAQ,OAAO,CAACR,GAG5B,GACC,AAAe,UAAf,OAAO0B,GACPA,EAAI,UAAU,CAAC,OACfkJ,CAAQ,CAAClJ,EAAI,KAAK,CAAC,GAAG,CACrB,CACD,IAAM4B,EAAa3C,AAAAA,GAAAA,EAAAA,8BAAAA,AAAAA,EAA+BX,EAAQ0B,GAC1D,GAAI,CAAC4B,EAAW,GAAG,EAAI,CAACA,EAAW,GAAG,EAAI,CAACA,EAAW,YAAY,CACjE,SAGDzC,EAAO,OAAO,CAACb,EAAQ0B,EAAK,CAC3B,IAAIiB,CAAG,SACN,AAAI,IAAI,CAACgI,EAAY,CAAS,IAAI,CAACA,EAAY,CAExChI,EAAI,GAAG,EACf,EACA,IAAIA,CAAG,CAAE/B,CAAU,EAGlB,GAFA,IAAI,CAAC+J,EAAY,CAAG/J,EAEhB,AAAiB,YAAjB,OAAOA,EAAsB,OAAO+B,EAAI,GAAG,CAAC/B,GAEhD+B,EAAI,GAAG,CAACkI,EAAajK,GACtB,CACD,EACD,CAGH,C,+FC/KA,SAAS4K,EAAgB7I,CAAa,CAAE9B,CAAsB,EAC7D,IAAM4K,EAAsB9I,EAAI,IAAI,GAAG,QAAQ,GAEzC+I,EAAU3F,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACf,CAAC,OAAO,EAAE0F,EAAoB,CAAC,CAC/B,mBACA5K,EAAO,IAAI,EAEZ8B,EAAI,MAAM,CAACA,EAAI,EAAE,CAAC+I,KACnB,CAEe,SAAS,EAAC7K,CAAsB,CAAE+C,CAAW,EAU3D/C,EAAO,KAAK,CAAC,WATU,CACtB,MAAM8B,CAAa,EAClB6I,EAAgB7I,EAAK9B,EACtB,EACA,UAAU8B,CAAG,EACZ6I,EAAgB7I,EAAK9B,EACtB,CACD,EAsBD,C,wCC1CI,E,0DAEJ,SAAS8K,EAAqBC,CAAG,EAC7B,IAAMC,EAAM,EAAK,uBAAuB,GAExC,OADA,EAAK,mBAAmB,CAAC,GAAG,CAACA,EAAKD,GAC3BC,CACX,CAEA,SAASC,EAAYlF,CAAC,CAAEnG,CAAI,EACxB,GAAI,CACA,OAAOmG,EAAE,KAAK,CAAC,IAAI,CAAEnG,EACzB,CAAE,MAAOsJ,EAAG,CACR,IAAM8B,EAAMF,EAAqB5B,GACjC,EAAK,oBAAoB,CAAC8B,EAC9B,CACJ,CAEA,IAAME,EAAqB,AAAuB,aAAvB,OAAOC,YAA8B,IAAIA,YAAY,QAAS,CAAE,UAAW,GAAM,MAAO,EAAK,GAAK,CAAE,OAAQ,KAAQ,MAAM5M,MAAM,4BAA6B,CAAE,CAE/J,cAAvB,OAAO4M,aAA+BD,EAAkB,MAAM,GAElE,IAAIE,EAA0B,KAE9B,SAASC,IAIL,MAHID,CAAAA,AAA4B,OAA5BA,GAAoCA,EAAwB,MAAM,GAAK,EAAK,MAAM,CAAC,MAAM,AAAD,GACxFA,CAAAA,EAA0B,IAAIE,WAAW,EAAK,MAAM,CAAC,MAAM,GAExDF,CACX,CAEA,SAASG,EAAmBC,CAAG,CAAEC,CAAG,EAEhC,OADAD,KAAc,EACPN,EAAkB,MAAM,CAACG,IAAuB,KAAK,CAACG,EAAKA,EAAMC,GAC5E,CAEA,IAAIC,EAAkB,EAEhBC,EAAqB,AAAuB,aAAvB,OAAO1H,YAA8B,IAAIA,YAAY,SAAW,CAAE,OAAQ,KAAQ,MAAM1F,MAAM,4BAA6B,CAAE,EAElJqN,EAAe,SAAU9C,CAAG,CAAE+C,CAAI,EACpC,IAAMC,EAAMH,EAAkB,MAAM,CAAC7C,GAErC,OADA+C,EAAK,GAAG,CAACC,GACF,CACH,KAAMhD,EAAI,MAAM,CAChB,QAASgD,EAAI,MAAM,AACvB,CACJ,EAEA,SAASC,EAAkBjD,CAAG,CAAEkD,CAAM,CAAEC,CAAO,EAE3C,GAAIA,AAAY7L,KAAAA,IAAZ6L,EAAuB,CACvB,IAAMH,EAAMH,EAAkB,MAAM,CAAC7C,GAC/B0C,EAAMQ,EAAOF,EAAI,MAAM,CAAE,KAAO,EAGtC,OAFAT,IAAuB,QAAQ,CAACG,EAAKA,EAAMM,EAAI,MAAM,EAAE,GAAG,CAACA,GAC3DJ,EAAkBI,EAAI,MAAM,CACrBN,CACX,CAEA,IAAIC,EAAM3C,EAAI,MAAM,CAChB0C,EAAMQ,EAAOP,EAAK,KAAO,EAEvBS,EAAMb,IAERc,EAAS,EAEb,KAAOA,EAASV,EAAKU,IAAU,CAC3B,IAAMC,EAAOtD,EAAI,UAAU,CAACqD,GAC5B,GAAIC,EAAO,IAAM,KACjBF,CAAAA,CAAG,CAACV,EAAMW,EAAO,CAAGC,CACxB,CAEA,GAAID,IAAWV,EAAK,CACD,IAAXU,GACArD,CAAAA,EAAMA,EAAI,KAAK,CAACqD,EAAM,EAE1BX,EAAMS,EAAQT,EAAKC,EAAKA,EAAMU,EAASrD,AAAa,EAAbA,EAAI,MAAM,CAAM,KAAO,EAE9D,IAAMuD,EAAMT,EAAa9C,EADZuC,IAAuB,QAAQ,CAACG,EAAMW,EAAQX,EAAMC,IAGjEU,GAAUE,EAAI,OAAO,CACrBb,EAAMS,EAAQT,EAAKC,EAAKU,EAAQ,KAAO,CAC3C,CAGA,OADAT,EAAkBS,EACXX,CACX,CAEA,IAAIc,EAAwB,KAE5B,SAASC,IAIL,MAHID,CAAAA,AAA0B,OAA1BA,GAAkCA,EAAsB,MAAM,GAAK,EAAK,MAAM,CAAC,MAAM,AAAD,GACpFA,CAAAA,EAAwB,IAAIE,SAAS,EAAK,MAAM,CAAC,MAAM,GAEpDF,CACX,CAEA,SAASG,EAAWC,CAAC,EACjB,OAAOA,MAAAA,CACX,CAOA,SAASC,EAAwB3B,CAAG,EAChC,IAAMjL,EAAQ,EAAK,mBAAmB,CAAC,GAAG,CAACiL,GAE3C,OADA,EAAK,yBAAyB,CAACA,GACxBjL,CACX,CAiDA,eAAe6M,EAAW9L,CAAM,CAAE+L,CAAO,EACrC,GAAI,AAAoB,YAApB,OAAOC,UAA2BhM,aAAkBgM,SAAU,CAC9D,GAAI,AAA4C,YAA5C,OAAOC,YAAY,oBAAoB,CACvC,GAAI,CACA,OAAO,MAAMA,YAAY,oBAAoB,CAACjM,EAAQ+L,EAE1D,CAAE,MAAO3D,EAAG,CACR,GAAIpI,AAAsC,oBAAtCA,EAAO,OAAO,CAAC,GAAG,CAAC,gBACnBxC,QAAQ,IAAI,CAAC,oMAAqM4K,QAGlN,MAAMA,CAEd,CAGJ,IAAM8D,EAAQ,MAAMlM,EAAO,WAAW,GACtC,OAAO,MAAMiM,YAAY,WAAW,CAACC,EAAOH,EAEhD,CAAO,CACH,IAAMI,EAAW,MAAMF,YAAY,WAAW,CAACjM,EAAQ+L,UAEvD,AAAII,aAAoBF,YAAY,QAAQ,CACjC,CAAEE,SAAAA,EAAUnM,OAAAA,CAAO,EAGnBmM,CAEf,CACJ,CAEA,SAASC,IACL,IAAML,EAAU,CAAC,EAkIjB,OAjIAA,EAAQ,GAAG,CAAG,CAAC,EACfA,EAAQ,GAAG,CAAC,2BAA2B,CAAG,WAAa,OAAO5B,EAAY,SAAUkC,CAAI,CAAEC,CAAI,CAAEC,CAAI,CAAEC,CAAI,EAEtG,OADYH,EAAK,IAAI,CAACC,EAAMC,EAAMC,EAEtC,EAAGC,UAAW,EACdV,EAAQ,GAAG,CAAC,2BAA2B,CAAG,WAAa,OAAO5B,EAAY,SAAUkC,CAAI,CAAEC,CAAI,CAAEC,CAAI,EAEhG,OADYF,EAAK,IAAI,CAACC,EAAMC,EAEhC,EAAGE,UAAW,EACdV,EAAQ,GAAG,CAAC,2BAA2B,CAAG,WAAa,OAAO5B,EAAY,SAAUkC,CAAI,CAAEC,CAAI,EAE1F,OADYD,EAAK,IAAI,CAACC,EAE1B,EAAGG,UAAW,EACdV,EAAQ,GAAG,CAAC,0BAA0B,CAAG,WAAa,OAAO5B,EAAY,SAAUkC,CAAI,CAAEC,CAAI,EAEzF,OADYzN,QAAQ,GAAG,CAACwN,EAAMC,EAElC,EAAGG,UAAW,EACdV,EAAQ,GAAG,CAAC,0BAA0B,CAAG,WAAa,OAAO5B,EAAY,SAAUkC,CAAI,CAAEC,CAAI,EAEzF,OADY,IAAI/M,IAAIkL,EAAmB4B,EAAMC,GAEjD,EAAGG,UAAW,EACdV,EAAQ,GAAG,CAAC,0BAA0B,CAAG,WAErC,MADY,EAAW,AAE3B,EACAA,EAAQ,GAAG,CAAC,0BAA0B,CAAG,WAErC,MADY,CAAW,CAE3B,EACAA,EAAQ,GAAG,CAAC,gCAAgC,CAAG,SAASM,CAAI,CAAEC,CAAI,EAE9D,OADY,AAAII,SAASjC,EAAmB4B,EAAMC,GAEtD,EACAP,EAAQ,GAAG,CAAC,kCAAkC,CAAG,WAAa,OAAO5B,EAAY,SAAUkC,CAAI,CAAEC,CAAI,CAAEC,CAAI,CAAEC,CAAI,EAE7G,OADY,IAAIjN,IAAIkL,EAAmB4B,EAAMC,GAAO7B,EAAmB8B,EAAMC,GAEjF,EAAGC,UAAW,EACdV,EAAQ,GAAG,CAAC,0BAA0B,CAAG,SAASM,CAAI,EAElD,OADYA,EAAK,GAAG,EAExB,EACAN,EAAQ,GAAG,CAAC,+BAA+B,CAAG,SAASM,CAAI,EAEvD,IAAMM,EAAO1B,ECzOV,AAAC,cAAS,OAAO,CAAC,SACvB2B,GAAK,AAACA,CAAAA,EAAIC,OAAO,eAAe,CAAC,IAAIrC,WAAW,GAAG,CAAC,EAAE,CAAG,IAAMoC,EAAI,GAAG,QAAQ,CAAC,KDwOzC,EAAK,iBAAiB,CAAE,EAAK,kBAAkB,EAC7EE,EAAOlC,EACba,IAAqB,QAAQ,CAACY,EAAO,EAAOS,EAAM,IAClDrB,IAAqB,QAAQ,CAACY,EAAO,EAAOM,EAAM,GACtD,EACAZ,EAAQ,GAAG,CAAC,0BAA0B,CAAG,WAAa,OAAO5B,EAAY,SAAUkC,CAAI,CAAEC,CAAI,CAAEC,CAAI,EAE/F,OADY1N,QAAQ,GAAG,CAACwN,EAAMC,EAAMC,EAExC,EAAGE,UAAW,EACdV,EAAQ,GAAG,CAAC,6CAA6C,CAAG,WACxD,IAAMR,EAAM,AAAkB,aAAlB,OAAOnO,OAAyB,KAAOA,OACnD,OAAOuO,EAAWJ,GAAO,EAAIvB,EAAqBuB,EACtD,EACAQ,EAAQ,GAAG,CAAC,kDAAkD,CAAG,WAC7D,IAAMR,EAAM,AAAsB,aAAtB,OAAOwB,WAA6B,KAAOA,WACvD,OAAOpB,EAAWJ,GAAO,EAAIvB,EAAqBuB,EACtD,EACAQ,EAAQ,GAAG,CAAC,2CAA2C,CAAG,WACtD,IAAMR,EAAM,AAAgB,aAAhB,OAAOxJ,KAAuB,KAAOA,KACjD,OAAO4J,EAAWJ,GAAO,EAAIvB,EAAqBuB,EACtD,EACAQ,EAAQ,GAAG,CAAC,6CAA6C,CAAG,WACxD,IAAMR,EAAM,AAAkB,aAAlB,OAAO9E,OAAyB,KAAOA,OACnD,OAAOkF,EAAWJ,GAAO,EAAIvB,EAAqBuB,EACtD,EACAQ,EAAQ,GAAG,CAAC,+BAA+B,CAAG,SAASM,CAAI,EAEvD,OADYA,EAAK,QAAQ,EAE7B,EACAN,EAAQ,GAAG,CAAC,+BAA+B,CAAG,SAASM,CAAI,EAEvD,OADYA,EAAK,QAAQ,EAE7B,EACAN,EAAQ,GAAG,CAAC,sBAAsB,CAAG,SAASM,CAAI,EAG9C,MADY,AAAc,WAAd,OADFA,EAC6BxK,AAD7BwK,EACiC,EAAI,EAAK,CAExD,EACAN,EAAQ,GAAG,CAAC,oBAAoB,CAAG,SAASM,CAAI,CAAEC,CAAI,EAElD,OADY,AAAI7O,MAAMgN,EAAmB4B,EAAMC,GAEnD,EACAP,EAAQ,GAAG,CAAC,+BAA+B,CAAG,WAC1C,IAAMiB,EAAQ,EAAK,mBAAmB,CAChC3B,EAAS2B,EAAM,IAAI,CAAC,GAC1BA,EAAM,GAAG,CAAC,EAAG1N,KAAAA,GACb0N,EAAM,GAAG,CAAC3B,EAAS,EAAG/L,KAAAA,GACtB0N,EAAM,GAAG,CAAC3B,EAAS,EAAG,MACtB2B,EAAM,GAAG,CAAC3B,EAAS,EAAG,IACtB2B,EAAM,GAAG,CAAC3B,EAAS,EAAG,GAE1B,EACAU,EAAQ,GAAG,CAAC,sBAAsB,CAAG,SAASM,CAAI,EAE9C,MADY,AAAiB,YAAjB,OAAOA,CAEvB,EACAN,EAAQ,GAAG,CAAC,uBAAuB,CAAG,SAASM,CAAI,EAE/C,OADYA,AAAS/M,KAAAA,IAAT+M,CAEhB,EACAN,EAAQ,GAAG,CAAC,qBAAqB,CAAG,SAASM,CAAI,EAE7C,OADYA,CAEhB,EACAN,EAAQ,GAAG,CAAC,qBAAqB,CAAG,SAASM,CAAI,CAAEC,CAAI,EAEnD,IAAMf,EAAM,AAAgB,UAAhB,OADAe,EAAAA,EACiChN,KAAAA,EAC7C,IAAIqN,EAAOhB,EAAWJ,GAAO,EAAIN,EAAkBM,EAAK,EAAK,iBAAiB,CAAE,EAAK,kBAAkB,EACnGuB,EAAOlC,EACXa,IAAqB,QAAQ,CAACY,EAAO,EAAOS,EAAM,IAClDrB,IAAqB,QAAQ,CAACY,EAAO,EAAOM,EAAM,GACtD,EACAZ,EAAQ,GAAG,CAAC,qBAAqB,CAAG,SAASM,CAAI,CAAEC,CAAI,EAEnD,OADY7B,EAAmB4B,EAAMC,EAEzC,EACAP,EAAQ,GAAG,CAAC,gBAAgB,CAAG,SAASM,CAAI,CAAEC,CAAI,EAC9C,MAAM,AAAI7O,MAAMgN,EAAmB4B,EAAMC,GAC7C,EACAP,EAAQ,GAAG,CAAC,0BAA0B,CAAG,SAASM,CAAI,CAAEC,CAAI,EACxD,IAtNqB5B,EAAKC,EAsNtBsC,EAAKC,CAtNYxC,EAsNQ2B,EAtNH1B,EAsNS2B,EArNvC5B,KAAc,EACPH,IAAuB,QAAQ,CAACG,EAAM,EAAGA,EAAM,EAAIC,IAoNb,KAAK,UAC9C,EAAK,eAAe,CAAC0B,EAAMC,AAAO,EAAPA,EAAU,GACzBW,CAEhB,EAEOlB,CACX,CAEA,SAASoB,EAAkBpB,CAAO,CAAEqB,CAAM,EACtCrB,EAAQ,GAAG,CAAC,MAAM,CAAGqB,GAAU,IAAInB,YAAY,MAAM,CAAC,CAAC,QAAQ,GAAG,QAAQ,MAAM,OAAO,EAAI,EAC/F,CAEA,SAASoB,EAAoBlB,CAAQ,CAAEnM,CAAM,CAAEsN,CAAiB,EAM5D,GALA,EAAOnB,EAAS,OAAO,CACvBoB,EAAW,sBAAsB,CAAGvN,EACpCwL,EAAwB,KACxBlB,EAA0B,KAEtB,AAA6B,SAAtBgD,GAAsC,CAA6B,UAA7B,OAAOA,GAAkCA,AAAsB,IAAtBA,GAA2BA,EAAoB,OAAU,GAAM,KAAM,qBAE/J,OADA,EAAK,gBAAgB,CAACA,GACf,CACX,CA2BA,eAAeC,EAAWC,CAAc,CAAEJ,CAAM,MAGxCE,EAFJ,GAAI,AAAShO,KAAAA,IAAT,EAAoB,OAAO,CAGD,UAAnBkO,IACH/L,OAAO,cAAc,CAAC+L,KAAoB/L,OAAO,SAAS,CACzD,CAAC+L,eAAAA,CAAc,CAAEJ,OAAAA,CAAM,CAAEE,kBAAAA,CAAiB,CAAC,CAAGE,EAE/ChQ,QAAQ,IAAI,CAAC,8FAIS,SAAnBgQ,GACPA,CAAAA,EAAiB,IAAIjO,IAAI,eAAgB,GAAE,EAE/C,IAAMwM,EAAUK,IAEZ,CAA0B,UAA1B,OAAOoB,GAAgC,AAAmB,YAAnB,OAAOC,SAA0BD,aAA0BC,SAAa,AAAe,YAAf,OAAOlO,KAAsBiO,aAA0BjO,GAAG,GACzKiO,CAAAA,EAAiBE,MAAMF,EAAc,EAGzCL,EAAkBpB,EAASqB,GAE3B,GAAM,CAAEjB,SAAAA,CAAQ,CAAEnM,OAAAA,CAAM,CAAE,CAAG,MAAM8L,EAAW,MAAM0B,EAAgBzB,GAEpE,OAAOsB,EAAoBlB,EAAUnM,EAAQsN,EACjD,EE5XAK,AFyUA,SAAkB3N,CAAM,CAAEoN,CAAM,MAGxBE,EAFJ,GAAI,AAAShO,KAAAA,IAAT,EAAoB,MAGF,UAAXU,IACHyB,OAAO,cAAc,CAACzB,KAAYyB,OAAO,SAAS,CACjD,CAACzB,OAAAA,CAAM,CAAEoN,OAAAA,CAAM,CAAEE,kBAAAA,CAAiB,CAAC,CAAGtN,EAEvCxC,QAAQ,IAAI,CAAC,+EAIrB,IAAMuO,EAAUK,IAEhBe,EAAkBpB,EAASqB,GAEvB,CAAEpN,CAAAA,aAAkBiM,YAAY,MAAM,AAAD,GACrCjM,CAAAA,EAAS,IAAIiM,YAAY,MAAM,CAACjM,EAAM,EAKnCqN,EAFU,IAAIpB,YAAY,QAAQ,CAACjM,EAAQ+L,GAEb/L,EAAQsN,EACjD,EEhWS,CACR,OAAQ,IAAIrB,YAAY,MAAM,CAC7BzB,WAAW,IAAI,CAAC/F,KAAK1C,KAAK,IAAI,EAAG,AAAC6K,GAAMA,EAAE,UAAU,CAAC,IAEvD,GAEAnP,MAAM,eAAe,CAAG,GAExB,IAAMmQ,EAAU,IAAIvD,YCXpB,SAASwD,EAAezO,CAAW,CAAE0O,CAAqB,EACzD,GAAI,CACH,OAAO,IAAIvO,IAAIH,EAAK0O,EACrB,CAAE,KAAM,CACP,OAAO,IACR,CACD,CCVe,SAAS,EAAC5O,CAAsB,CAAE6C,CAAU,EAC1D,IAAM2K,EAAWxN,EAAO,OAAO,CAAC,KAAK,CAAC,QAAW,AAEjD6C,CAAAA,CAAI,CAACP,EAAAA,EAAAA,CAAAA,OAAAA,CAAAA,QAAuB,CAAC,CAAG,SAAUrC,CAAY,EACrD,OAAO,SAAUC,CAAW,EAC3B,IAAM2O,EAAW,IAAIxO,IAAIH,EAAKD,GAAM,IAAI,CAExC,OAAOuN,EACN,CAAC,eAAe,EAAErM,ADgBf,SAAoBjB,CAAiB,CAAE4O,CAAa,EAK1D,GAJI5O,aAAeG,KAClBH,CAAAA,EAAMA,EAAI,QAAQ,EAAC,EAGhBA,EAAI,UAAU,CAAC,eAClB,MACC,cACAgF,ADoCI,SACNyE,CAAwB,CACxBzJ,CAAkB,CAClB4O,CAAa,EAEb,GAAI3I,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAY,iBAAkB2I,EAAK,MAAM,EAAG,CAC/C,IAAMC,EAAO,AAAc,UAAd,OAAOpF,EAAkBA,EAAK,IAAIwB,cAAc,MAAM,CAACxB,GAIpE,OAFArL,QAAQ,GAAG,CAAC,UAEL0Q,AAcF,SAAyBrF,CAAwB,EAKvD,MAJkB,UAAd,OAAOA,GACVA,CAAAA,EAAK,IAAIwB,cAAc,MAAM,CAACxB,EAAE,EAG1B;QACA,EAAEsF,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,OAAAA,CAAAA,MAA+B,CAAC;;GAEvC,EAAEtF;;;CAGJ,CAAC,AACF,EA1ByBoF,EACxB,CAIA,OAFApF,EAAKuF,AAhEN,SACCC,CAA2B,CAC3BjP,CAAkB,CAClB4O,CAAa,MAETM,EACJ,IAAMC,EAASC,YAAY,GAAG,GAC9B,GAAI,CAEFF,EADG,AAAiB,UAAjB,OAAOD,EACJI,AFyFF,SAAoB5F,CAAE,CAAEzJ,CAAG,CAAEsP,CAAU,CAAEC,CAAQ,EACpD,IAAMC,EAAO3D,EAAkBpC,EAAI,EAAK,iBAAiB,CAAE,EAAK,kBAAkB,EAC5EgG,EAAOjE,EACP+B,EAAO1B,EAAkB7L,EAAK,EAAK,iBAAiB,CAAE,EAAK,kBAAkB,EAC7E0N,EAAOlC,EACPkE,EAAO7D,EAAkByD,EAAY,EAAK,iBAAiB,CAAE,EAAK,kBAAkB,EACpFK,EAAOnE,EACPW,EAAM,EAAK,UAAU,CAACqD,EAAMC,EAAMlC,EAAMG,EAAMgC,EAAMC,EAAMJ,GAChE,GAAIpD,CAAG,CAAC,EAAE,CACN,MAAMM,EAAwBN,CAAG,CAAC,EAAE,EAExC,OAAOM,EAAwBN,CAAG,CAAC,EAAE,CACzC,EErGoB8C,EAAOL,EAAK,IAAI,CAAC,IAAI,CAAE5O,GAAO,YAAa+O,EAAAA,EAASA,EAE/Da,AFkHF,SAAqCnG,CAAE,CAAEzJ,CAAG,CAAEsP,CAAU,CAAEC,CAAQ,EACrE,IAAMC,EAAOK,AAdjB,SAA2BjH,CAAG,CAAEkD,CAAM,EAClC,IAAMR,EAAMQ,EAAOlD,AAAa,EAAbA,EAAI,MAAM,CAAM,KAAO,EAG1C,OAFAuC,IAAuB,GAAG,CAACvC,EAAK0C,EAAM,GACtCE,EAAkB5C,EAAI,MAAM,CACrB0C,CACX,EASmC7B,EAAI,EAAK,iBAAiB,EACnDgG,EAAOjE,EACP+B,EAAO1B,EAAkB7L,EAAK,EAAK,iBAAiB,CAAE,EAAK,kBAAkB,EAC7E0N,EAAOlC,EACPkE,EAAO7D,EAAkByD,EAAY,EAAK,iBAAiB,CAAE,EAAK,kBAAkB,EACpFK,EAAOnE,EACPW,EAAM,EAAK,2BAA2B,CAACqD,EAAMC,EAAMlC,EAAMG,EAAMgC,EAAMC,EAAMJ,GACjF,GAAIpD,CAAG,CAAC,EAAE,CACN,MAAMM,EAAwBN,CAAG,CAAC,EAAE,EAExC,OAAOM,EAAwBN,CAAG,CAAC,EAAE,CACzC,EE7HI,IAAIf,WAAW6D,GACfL,EAAK,IAAI,CAAC,IAAI,CACd5O,GAAO,YACP+O,EAAAA,EAASA,CAGZ,CAAE,MAAO9M,EAAK,CAIb,MAFA7D,QAAQ,KAAK,CAAC,0BAA2B4B,EAD9BiC,EACyCgN,GACpDa,AAFW7N,EAEN,OAAO,CAAG,CAAC,yBAAyB,EAAEjC,EAAI,GAAG,EAAE8P,AAFzC7N,EAE8C,OAAO,CAAC,CAAC,CAFvDA,CAIZ,CACA,IAAM8N,EAAQX,YAAY,GAAG,GACvB,CAAE3F,GAAAA,CAAE,CAAEuG,OAAAA,CAAM,CAAEC,SAAAA,CAAQ,CAAE,CAAGf,EAEjC,GAAIjJ,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAY,eAAgB2I,EAAK,IAAI,EACxC,IAAK,IAAM1F,KAAS8G,EACnB5R,QAAQ,KAAK,CAAC,kBAAmB8K,GAInC,GAAIjD,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAY,eAAgB2I,EAAK,IAAI,EAAG,KACvCsB,EAEHA,EADGD,EAAW,CAAE,AAAF,CAAE,CACL,iBACDA,EAAW,GAAI,AAAJ,CAAI,CACd,eAEA,cAEZ,IAAME,EAAYJ,AAAAA,CAAAA,EAAQZ,EAAS/L,OAAO6M,EAAQ,EAAG,OAAO,CAAC,GAC7D7R,QAAQ,GAAG,CACV,CAAC,iBAAiB,EAAE4B,GAAO,YAAY,MAAM,EAAEkQ,EAAS,EAAE,EAAED,EAAS,IAAI,EAAEE,EAAS,YAAY,CAAC,CAEnG,CAEA,MAAO,AAAiB,UAAjB,OAAOlB,EAAqBT,EAAQ,MAAM,CAAC/E,GAAMA,CACzD,EAeuBA,EAAIzJ,EAAK4O,EAGhC,ECpDa5O,EAAI,KAAK,CAAC,IAAuB,oBAAqB4O,GAE3D,GAAI5O,EAAI,UAAU,CAAC,SACzB,OAAOmC,SAAS,MAAM,CAAG4M,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,MAAuB,CAAG/O,EAC7C,GAAIA,EAAI,UAAU,CAAC,SACzB,OAAOmC,SAAS,MAAM,CAAG4M,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,MAAuB,CAAG/O,MAG7C,CAFA,GAAIA,EAAI,UAAU,CAAC,YAAcA,EAAI,UAAU,CAAC,UACtD,OAAOA,EAEP,IAAID,EAAO6O,EAAK,IAAI,CAAC,IAAI,CAErB7O,EAAK,UAAU,CAAC,WAAWA,CAAAA,EAAOe,AAYjC,SAAsBd,CAAiB,EACzCA,aAAeG,KAClBH,CAAAA,EAAMA,EAAI,QAAQ,EAAC,EAGpB,IAAMoQ,EAAWjO,SAAS,MAAM,CAAG4M,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,MAAuB,CAE1D,GAAI/O,EAAI,UAAU,CAAC,eAElB,OAAOA,EACD,GAAIA,EAAI,UAAU,CAAC,SAEzB,OAAOA,EACD,GAAIA,EAAI,UAAU,CAACoQ,EAAW,SACpC,OAAOpQ,EAAI,SAAS,CAACoQ,EAAS,MAAM,OAC9B,GAAIpQ,EAAI,UAAU,CAACoQ,EAAW,SACpC,OAAOpQ,EAAI,SAAS,CAACoQ,EAAS,MAAM,OAC9B,GAAIpQ,EAAI,UAAU,CAAC,YAAcA,EAAI,UAAU,CAAC,UACtD,OAAOA,OACD,GAAIyO,EAAezO,GACzB,OAAO+O,EAAAA,EAAAA,CAAAA,KAAAA,CAAAA,MAAsB,CAC5B/O,EAAI,KAAK,CAAEmC,AAAAA,CAAAA,SAAS,MAAM,CAAG4M,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,MAAsB,AAAtBA,EAAyB,MAAM,QAG7D,OAAO/O,CAET,EAtCqD2C,KAAK,QAAQ,CAAC,IAAI,GACrE,IAAM0N,EAAU5B,EAAezO,EAAKD,UACpC,AAAKsQ,EAGJlO,SAAS,MAAM,CACf4M,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,MAAuB,CACvBA,EAAAA,EAAAA,CAAAA,KAAAA,CAAAA,MAAsB,CAACsB,EAAQ,IAAI,EALfrQ,CAOtB,CACD,EC7CiC2O,EAAU7O,EAAO,IAAI,EAAE,EAAE,CAAC,GAEzD,CACD,EAEA6C,CAAI,CAACP,EAAAA,EAAAA,CAAAA,OAAAA,CAAAA,MAAqB,CAAC,CAAG,SAAUrC,CAAY,EACnD,MAAO,CACN,IAAKA,EACL,QAAS,SAAUC,CAAW,EAC7B,OAAO,IAAIG,IAAIH,EAAKD,GAAM,IAAI,AAC/B,CACD,CACD,CACD,C,oCCvBe,SAAS,EAACD,CAAsB,EAC9CA,EAAO,KAAK,CAAC,4BAA6B,CACzC,MAAM8B,CAAG,EACRA,EAAI,IAAI,CAAC,EAAE,CAAG,CAAC,EAAE9B,EAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE8B,EAAI,IAAI,CAAC,EAAE,CAAC,CAAC,AACpD,CACD,GAEA9B,EAAO,IAAI,CAAC,6BAA8B,CACzC,IAAI8B,CAAG,EACN,IAAMV,EAAOU,EAAI,GAAG,GAEpB,OAAOV,EAAK,SAAS,CAACA,EAAK,OAAO,CAAC,KAAO,EAC3C,CACD,EACD,C,+JCXe,SAAS,EAACpB,CAAsB,EAC1CxB,EAAAA,QAAQA,EACXwB,EAAO,KAAK,CAAC,qBAAsB,CAClC,MAAM8B,CAAG,MAOJ0O,EAkBJ,GAAM,CACL,YAAa,CAAE,YAAahD,CAAQ,CAAE,CACtC,CAjBAgD,EADG,AAAuB,UAAvB,OAAO1O,EAAI,IAAI,CAAC,EAAE,EAAiBA,AAAgB,OAAhBA,EAAI,IAAI,CAAC,EAAE,CACrCA,EAAI,IAAI,CAAC,EAAE,CACb,AAAuB,UAAvB,OAAOA,EAAI,IAAI,CAAC,EAAE,EAAiBA,AAAgB,OAAhBA,EAAI,IAAI,CAAC,EAAE,CAC5CA,EAAI,IAAI,CAAC,EAAE,CAEvBA,EAAI,IAAI,EACR2O,EAAAA,SAASA,IAAI3O,EAAI,IAAI,EACrB,AAA+B,UAA/B,OAAOA,EAAI,IAAI,CAAC2O,EAAAA,SAASA,CAAC,EAC1B3O,AAAwB,OAAxBA,EAAI,IAAI,CAAC2O,EAAAA,SAASA,CAAC,CAEP3O,EAAI,IAAI,CAAC2O,EAAAA,SAASA,CAAC,CAEnB,CAAC,EAURC,EAAeC,AADiBnD,EAAS,sBACH,CAACnP,EAAAA,CAAcA,CAAC,CAKtDuS,EAAqBpD,EAAS,UAAW,gBAE/C1L,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAG,CACb,sBAAuB,SACvB,iBAAkB4O,EAAa,GAAG,CAAC,MAAM,CACzC,eAAgB5O,EAAI,IAAI,CAAC,EAAE,AAC5B,EAG2B,UAAvB,OAAOA,EAAI,IAAI,CAAC,EAAE,EAAeA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAG,GAAE,EAC1B,UAAvB,OAAOA,EAAI,IAAI,CAAC,EAAE,EAAeA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAC,YAAY,CAAG,GAAE,EAElEA,EAAI,MAAM,CAAC8O,EAAmB,IAAI,CAAC9O,EAAI,EAAE,IAAKA,EAAI,IAAI,EACvD,CACD,GAED,IAAM+O,EAAU,CAAC,oCAAoC,AAEjDhO,CAAAA,KAAK,MAAM,EAAEgO,EAAQ,IAAI,CAAC,gCAC1B,CAACrS,EAAAA,QAAQA,EAAEqS,EAAQ,IAAI,CAAC,oBAE5B7Q,EAAO,KAAK,CAAC6Q,EAAS,CACrB,MAAM/O,CAAG,EAGRA,EAAI,IAAI,CAAC,EAAE,CAAG,CACb,sBAAuB,SACvB,eAAgBA,EAAI,IAAI,CAAC,EAAE,AAC5B,CACD,CACD,EACD,C,8HCxEO,IAAM2O,EAAYzH,OAAO,GAAG,CAAC,4BAErB,SAAS,EAAChJ,CAAsB,CAAE6C,CAAuB,EAIvEN,OAAO,cAAc,CAACM,EAAK,MAAM,CAAC,SAAS,CAAEP,EAAAA,EAAAA,CAAAA,OAAAA,CAAAA,UAAyB,CAAE,CACvE,MAAMwO,CAAiB,EAStB,OAPAvO,OAAO,cAAc,CAAC,IAAI,CAAEkO,EAAW,CACtC,MAAOK,EACP,SAAU,GACV,aAAc,GACd,WAAY,EACb,GAEO,IAAI,AACZ,EACA,SAAU,GACV,aAAc,GACd,WAAY,EACb,EACD,C,+FCtBe,SAAS,EAAC9Q,CAAsB,EAC9CA,EAAO,KAAK,CAAC,cAAe,CAC3B,UAAU8B,CAAG,EACZA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,CAClD,CACD,GAEAA,EAAO,IAAI,CAAC,4BAA6B,CACxC,IAAI8B,CAAG,EACNd,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAac,EAAI,GAAG,GACrB,CACD,EACD,C,wGCRe,SAAS,EAAC9B,CAAsB,CAAE+C,CAAwB,EACxE/C,EAAO,KAAK,CAAC,QAAS,CACrB,MAAM8B,CAAG,EACJ,CAAuB,UAAvB,OAAOA,EAAI,IAAI,CAAC,EAAE,EAAiBA,EAAI,IAAI,CAAC,EAAE,WAAYzB,GAAE,IAC/DyB,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,EAE7C8H,EAAAA,YAAYA,EAAEhG,CAAAA,EAAI,IAAI,CAAC,EAAE,EAAI,iBAAgB,EAEnD,CACD,GAEA9B,EAAO,KAAK,CAAC,UAAW,CACvB,UAAU8B,CAAG,EACR,CAAuB,UAAvB,OAAOA,EAAI,IAAI,CAAC,EAAE,EAAiBA,EAAI,IAAI,CAAC,EAAE,WAAYzB,GAAE,IAC/DyB,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,EAE7C8H,EAAAA,YAAYA,EAAEhG,CAAAA,EAAI,IAAI,CAAC,EAAE,EAAI,iBAAgB,EAEnD,CACD,GAEA9B,EAAO,IAAI,CAAC,yBAA0B,CACrC,IAAI8B,GACId,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAac,EAAI,GAAG,GAE7B,GAEA9B,EAAO,IAAI,CAAC,wBAAyB,CACpC,IAAI8B,GACId,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAac,EAAI,GAAG,GAE7B,EACD,C,oCCxBe,SAAS,EAAC9B,CAAsB,CAAE6C,CAAuB,EACvE,IAAMkO,EAAoD,IAAIvK,QAC9DxG,EAAO,KAAK,CAAC,YAAa,CACzB,UAAU8B,CAAG,EACZ,IAAMkP,EAAgB,IAAIrK,YAC1BpE,OAAO,cAAc,CAACyO,EAAelP,EAAI,EAAE,CAAC,SAAS,EACrDkP,EAAc,WAAW,CAAGlP,EAAI,EAAE,CAElC,IAAMmP,EAAa,AAAChQ,GACnB,IAAI/B,MAAM+B,EAAI,CACb,KAAI9B,EAAQC,IACX,AAAa,cAATA,GAEGO,QAAQ,GAAG,CAACR,EAAQC,EAE7B,GAEK8R,EAASlR,EAAO,IAAI,CAAC,eAAe,CACzC8B,EAAI,IAAI,CAAC,EAAE,CACXA,EAAI,IAAI,CAAC,EAAE,CACX,KACA,CACC,aAAce,EAAK,SAAS,CAAC,SAAS,CACtC,OAAQ7C,EAAO,GAAG,CAAC,MAAM,AAC1B,GAGK8G,EAA4B,CACjC,WAAY,GACZ,SAAU,GACV,IAAKhF,EAAI,IAAI,CAAC,EAAE,CAChB,WAAY,OACZoP,OAAAA,EAEA,QAAS,KACT,QAAS,KACT,UAAW,KACX,OAAQ,IACT,EAEA,SAASC,EAAcC,CAAa,EACnCtK,CAAK,CAAC,KAAOsK,EAAO,IAAI,CAAC,GAAGH,EAAWG,IACvCJ,EAAc,aAAa,CAACI,EAC7B,CAEAF,EAAO,gBAAgB,CAAC,OAAQ,KAC/BC,EAAc,IAAI9J,MAAM,QACzB,GACA6J,EAAO,gBAAgB,CAAC,QAAS,AAACjQ,IACjCkQ,EAAc,IAAIE,WAAW,QAASpQ,GACvC,GACAiQ,EAAO,gBAAgB,CAAC,UAAW,MAAOjQ,IACzC,IAAIqQ,EAAUrQ,EAAG,IAAI,AACE,WAAnB,OAAOqQ,IAEA,eAAgBA,EAEtBxK,AAAqB,SAArBA,EAAM,UAAU,CACnBwK,EAAU,IAAIC,KAAK,CAACD,EAAQ,EAE5B/O,OAAO,cAAc,CAAC+O,EAASE,YAAY,SAAS,EAE3C,gBAAiBF,GAEF,gBAArBxK,EAAM,UAAU,EAEnBvE,OAAO,cAAc,CADrB+O,EAAU,MAAMA,EAAQ,WAAW,GACJE,YAAY,SAAS,GAYtDL,EARe,IAAIM,aAAa,UAAW,CAC1C,KAAMH,EACN,OAAQrQ,EAAG,MAAM,CACjB,YAAaA,EAAG,WAAW,CAC3B,OAAQA,EAAG,MAAM,CACjB,MAAOA,EAAG,KAAK,AAChB,GAGD,GACAiQ,EAAO,gBAAgB,CAAC,QAAS,KAChCC,EAAc,IAAI9J,MAAM,SACzB,GAEA0J,EAAU,GAAG,CAACC,EAAelK,GAC7BhF,EAAI,MAAM,CAACkP,EACZ,CACD,GACAhR,EAAO,IAAI,CAAC,iCAAkC,CAC7C,IAAI8B,GAGI4P,AAFIX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAEvB,UAAU,CAErB,IAAIA,CAAG,CAAEa,CAAS,EACjB,IAAM+O,EAAKX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAC7Ba,CAAAA,AAAM,SAANA,GAAgBA,AAAM,gBAANA,CAAkB,GAAG+O,CAAAA,EAAG,UAAU,CAAG/O,CAAAA,CAC1D,CACD,GAEA3C,EAAO,IAAI,CAAC,qCAAsC,CACjD,QACQ,CAET,GAEAA,EAAO,IAAI,CAAC,iCAAkC,CAC7C,IAAI8B,GAGI4P,AAFIX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAEvB,UAAU,AAEtB,GAEA9B,EAAO,IAAI,CAAC,8BAA+B,CAC1C,IAAI8B,GAGI4P,AAFIX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAEvB,OAAO,CAElB,IAAIA,CAAG,CAAEa,CAA0B,EAElC+O,AADWX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAC9B,OAAO,CAAGa,CACd,CACD,GAEA3C,EAAO,IAAI,CAAC,8BAA+B,CAC1C,IAAI8B,GAGI4P,AAFIX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAEvB,OAAO,CAElB,IAAIA,CAAG,CAAEa,CAAqB,EAE7B+O,AADWX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAC9B,OAAO,CAAGa,CACd,CACD,GAEA3C,EAAO,IAAI,CAAC,gCAAiC,CAC5C,IAAI8B,GAGI4P,AAFIX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAEvB,SAAS,CAEpB,IAAIA,CAAG,CAAEa,CAA4B,EAEpC+O,AADWX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAC9B,SAAS,CAAGa,CAChB,CACD,GAEA3C,EAAO,IAAI,CAAC,6BAA8B,CACzC,IAAI8B,GAGI4P,AAFIX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAEvB,MAAM,CAEjB,IAAIA,CAAG,CAAEa,CAAqB,EAE7B+O,AADWX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAC9B,MAAM,CAAGa,CACb,CACD,GAEA3C,EAAO,IAAI,CAAC,0BAA2B,CACtC,IAAI8B,GAGI4P,AAFIX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAEvB,GAAG,AAEf,GAEA9B,EAAO,IAAI,CAAC,+BAAgC,CAC3C,IAAI8B,GAGI4P,AAFIX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAEvB,QAAQ,AAEpB,GAEA9B,EAAO,IAAI,CAAC,iCAAkC,CAC7C,IAAI8B,GAGI4P,AAFIX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAEvB,MAAM,CAAC,UAAU,AAE7B,GAEA9B,EAAO,KAAK,CAAC,2BAA4B,CACxC,MAAM8B,CAAG,EACR,IAAM4P,EAAKX,EAAU,GAAG,CAACjP,EAAI,IAAI,EAEjCA,EAAI,MAAM,CAAC4P,EAAG,MAAM,CAAC,IAAI,CAAC5P,EAAI,IAAI,CAAC,EAAE,EACtC,CACD,GAEA9B,EAAO,KAAK,CAAC,4BAA6B,CACzC,MAAM8B,CAAG,EACR,IAAM4P,EAAKX,EAAU,GAAG,CAACjP,EAAI,IAAI,CACb1B,MAAAA,IAAhB0B,EAAI,IAAI,CAAC,EAAE,EAAgBA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAG,GAAG,EAC5B1B,KAAAA,IAAhB0B,EAAI,IAAI,CAAC,EAAE,EAAgBA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAG,EAAC,EAC9CA,EAAI,MAAM,CAAC4P,EAAG,MAAM,CAAC,KAAK,CAAC5P,EAAI,IAAI,CAAC,EAAE,CAAEA,EAAI,IAAI,CAAC,EAAE,EACpD,CACD,EACD,C,qJCrNe,SAAS,EAAC9B,CAAsB,CAAE6C,CAAU,MACtDgE,CACAhE,CAAAA,EAAK,MAAM,EAAIsD,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAY,UAAWnG,EAAO,GAAG,GACnD6G,CAAAA,EAAS7G,EAAO,OAAO,CAAC,SAAS,CAAC,SAAUsC,EAAAA,EAAAA,CAAAA,KAAAA,CAAAA,IAAiB,GAE9D,IAAMqP,EAAO3I,OAAO,qBACd4I,EAAU5I,OAAO,eAEvBhJ,EAAO,KAAK,CAAC,gCAAiC,CAC7C,MAAM8B,CAAG,EACJA,EAAI,IAAI,CAAC,EAAE,EAAEA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,GAC9CI,KAAAA,IAAhB0B,EAAI,IAAI,CAAC,EAAE,EAAgBA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAG,EAAG,EAChDA,EAAI,IAAI,CAAC6P,EAAK,CAAG7P,EAAI,IAAI,AAC1B,CACD,GAEA9B,EAAO,KAAK,CAAC,4CAA6C,CACzD,MAAM8B,CAAG,EAER+P,AADgB/P,CAAAA,EAAI,IAAI,CAAC8P,EAAQ,EAAK9P,CAAAA,EAAI,IAAI,CAAC8P,EAAQ,CAAG,CAAC,EAAC,CACrD,CAAC9P,EAAI,IAAI,CAAC,EAAE,CAAC,CAAGA,EAAI,IAAI,CAAC,EAAE,AACnC,CACD,GAEA9B,EAAO,KAAK,CAAC,gCAAiC,CAC7C,MAAM8B,CAAG,EACR,IAAMlC,EAAOkC,EAAI,IAAI,CAAC6P,EAAK,CAC3B,GAAI,CAAC/R,GAAQA,CAAI,CAAC,EAAE,CAAE,OAEtB,GAAI,CAACuG,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAY,UAAWnG,EAAO,GAAG,EAGrC,OAFA1B,QAAQ,IAAI,CAAC,iDAENwD,EAAI,MAAM,CAAC1B,KAAAA,GAQnB,IAAM0R,EAAM,IAAIC,kBAAkB,KAAM,CAAE,cAAe,UAAW,GAC9DlG,EAAO,IAAIW,SAASsF,GAE1B9R,EAAO,OAAO,CAAC,IAAI,CAAC,+BAAgC6G,EAAQ,CAC3DiL,IAAAA,EACAlS,KAAAA,EACA,QAASkC,EAAI,IAAI,CAAC8P,EAAQ,CAC1B,KAAM9P,EAAI,IAAI,CAAC,EAAE,AAClB,GAEA,IAAMkQ,EAAM1C,YAAY,GAAG,GAC3B,KAAOzD,AAAqB,IAArBA,EAAK,QAAQ,CAAC,IACpB,GAAIyD,YAAY,GAAG,GAAK0C,EAAM,IAC7B,MAAM,AAAIzT,MAAM,eAKlB,IAAM0T,EAASpG,EAAK,SAAS,CAAC,GACxBqG,EAAgBrG,EAAK,SAAS,CAAC,GAE/BsG,EAAY,IAAI7G,WAAW4G,GACjCC,EAAU,GAAG,CAAC,IAAI7G,WAAWwG,EAAI,KAAK,CAAC,EAAG,EAAII,KAC9C,IAAML,EAAU,IAAI1G,cAAc,MAAM,CAACgH,GAEnCC,EAAavG,EAAK,SAAS,CAAC,EAAIqG,GAChCG,EAAS,IAAI/G,WAAW8G,GAC9BC,EAAO,GAAG,CACT,IAAI/G,WACHwG,EAAI,KAAK,CAAC,GAAKI,EAAe,GAAKA,EAAgBE,KAGrD,IAAME,EAAO,IAAInH,cAAc,MAAM,CAACkH,GAGtCrS,EAAO,OAAO,CAAC8B,EAAI,IAAI,CAAE,SAAU,CAClC,QACQmQ,CAET,GACAjS,EAAO,OAAO,CAAC8B,EAAI,IAAI,CAAE,eAAgB,CACxC,QACQwQ,CAET,GACAtS,EAAO,OAAO,CAAC8B,EAAI,IAAI,CAAE,WAAY,CACpC,QACC,AAAIA,AAA0B,gBAA1BA,EAAI,IAAI,CAAC,YAAY,CAA2BuQ,EAAO,MAAM,CAE1DC,CAET,GACAtS,EAAO,OAAO,CAAC8B,EAAI,IAAI,CAAE,cAAe,CACvC,QAGQyQ,AAFQ,IAAIC,YAEL,eAAe,CAACF,EAAM,WAEtC,GACAtS,EAAO,OAAO,CAAC8B,EAAI,IAAI,CAAE,wBAAyB,CACjD,QACQ,IAAM+P,CAEf,GACA7R,EAAO,OAAO,CAAC8B,EAAI,IAAI,CAAE,oBAAqB,CAC7C,QACQ,AAAC2Q,IAEP,IAAMC,EAAQC,AADH,AAAIC,OAAO,CAAC,CAAC,EAAEH,EAAO,OAAO,CAAC,CAAE,KAC1B,IAAI,CAACZ,GAEtB,OAAOa,EAAQA,CAAK,CAAC,EAAE,CAAG,IAC3B,CAEF,GAGA5Q,EAAI,MAAM,CAAC1B,KAAAA,EACZ,CACD,GAEAJ,EAAO,IAAI,CAAC,uCAAwC,CACnD,IAAI8B,GACId,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAac,EAAI,GAAG,GAE7B,EACD,C,4HClGA,IAAM+Q,EAAwC,CAAC,EAElC3M,EAAU,AAAClG,GACvBmG,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAY,aAAcnG,EAAO,GAAG,EAEtB,SAAS,EAACA,CAAsB,CAAE6C,CAAU,EAE1DN,OAAO,cAAc,CAACM,EAAMoM,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,OAAAA,CAAAA,eAAwC,CAAE,CACrE,MAAO,CAACnD,EAAoBgH,KAC3B,IAAMC,EAAYzH,WAAW,IAAI,CAACQ,GAC5BD,EAAO,IAAIW,SAASuG,EAAU,MAAM,EACpCrE,EAAU,IAAIvD,YAAY,SAE1B6H,EAAW,EAAE,CAEbC,EAAapH,EAAK,SAAS,CAAC,EAAG,IACjCqH,EAAS,EACb,IAAK,IAAI3O,EAAI,EAAGA,EAAI0O,EAAY1O,IAAK,CACpC,IAAM4F,EAAO0B,EAAK,QAAQ,CAACqH,GAG3B,GAFAA,GAAU,EAEN/I,AAAQ,GAARA,EAA4B,CAC/B,IAAMgC,EAASN,EAAK,SAAS,CAACqH,EAAQ,IACtCA,GAAU,EACV,IAAMC,EAAQtH,EAAK,SAAS,CAACqH,EAAQ,IACrCA,GAAU,EACV,IAAME,EAAOvH,EAAK,SAAS,CAACqH,EAAQ,IACpCA,GAAU,EAEVF,EAAS,IAAI,CAAC,CAAE7I,KAAAA,EAAMgC,OAAAA,EAAQgH,MAAAA,EAAOC,KAAAA,CAAK,EAC3C,MAAO,GAAIjJ,AAAQ,GAARA,EAA6B,CACvC,IAAMgC,EAASN,EAAK,SAAS,CAACqH,EAAQ,IACtCA,GAAU,EACV,IAAMC,EAAQtH,EAAK,SAAS,CAACqH,EAAQ,IACrCA,GAAU,EACV,IAAMG,EAAMxH,EAAK,SAAS,CAACqH,EAAQ,IACnCA,GAAU,EAEV,IAAMI,EAAM5E,EAAQ,MAAM,CAACqE,EAAU,QAAQ,CAACI,EAAOE,IAErDL,EAAS,IAAI,CAAC,CAAE7I,KAAAA,EAAMgC,OAAAA,EAAQgH,MAAAA,EAAOE,IAAAA,EAAKC,IAAAA,CAAI,EAC/C,CACD,CAEAT,CAAU,CAACC,EAAI,CAAGE,CACnB,EACA,WAAY,GACZ,SAAU,GACV,aAAc,EACf,GAEA,IAAMO,EAAiB,cAIvBvT,EAAO,KAAK,CAAC,8BAA+B,CAC3C,MAAM8B,CAAG,EACR,IAAI0R,EAAsB1R,EAAI,EAAE,CAAC,IAAI,CAACA,EAAI,IAAI,EAC1C2R,EAAY,GAKVC,EAAgBF,EAAY,OAAO,CAAC,OAE1C,GAAIE,AAAkB,KAAlBA,EAAsB,OAAO5R,EAAI,MAAM,CAAC0R,GAE5C,IAAMG,EAAaH,EAAY,OAAO,CACrC,IACAE,EAAgBH,EAAe,MAAM,EAGlBK,SACnBJ,EAAY,SAAS,CAACE,EAAgBH,EAAe,MAAM,CAAEI,IAM9D,IAAME,EAAcL,EAAY,OAAO,CAAC,KAAME,GACxCZ,EAAMU,EAAY,SAAS,CAACG,EAAa,EAAGE,GAGlDL,EAAcA,EAAY,OAAO,CAAC,uBAAwB,IAE1D,IAAMM,EAAOjB,CAAU,CAACC,EAAI,CAM5B,KAAOiB,AADC,EACGD,EAAK,MAAM,GAqBtB,OAFAL,GAAaD,EAAY,KAAK,CAvBtB,GAyBD1R,EAAI,MAAM,CAAC2R,EACnB,CACD,EACD,C,oCCjJe,SAAS,EAACzT,CAAM,CAAE6C,CAAI,EACpC,OAAOA,EAAK,WAAW,CACvB,OAAOA,EAAK,aAAa,CACzB,OAAOA,EAAK,gBAAgB,CAC5B,OAAOA,EAAK,iBAAiB,CAC7B,OAAOA,EAAK,wBAAwB,CACpCA,EAAK,gBAAgB,CAAC,eAAgB,IAAMzC,KAAAA,EAC7C,C,mMCHO,IAAM6F,EAAQ,EAEN,SAAS,EAACjG,CAAsB,CAAE6C,CAAmB,EAKnE,IAAK,IAAM1D,IAAU,CAAC0D,EAAK,CAC1B,IAAK,IAAMzD,KAAQD,EAClB,GAAI,CACyB,YAAxB,OAAOA,CAAM,CAACC,EAAK,EACtBY,EAAO,QAAQ,CAACb,EAAQC,EAAM,CAC7B,MAAM0C,CAAG,EACRwI,EAAQxI,EAAK9B,EACd,CACD,EAEF,CAAE,KAAM,CAAC,CAIX,GAAKxB,EAAAA,QAAQA,EAEb,IAAK,IAAMW,IAAU,CACpB0D,EAAK,IAAI,CAAC,SAAS,CACnBA,EAAK,gBAAgB,CAAC,SAAS,CAC/BA,EAAK,QAAQ,CACbA,EAAK,UAAU,CAAC,SAAS,CACzBA,EAAK,KAAK,CAAC,SAAS,CACpB,CACA,IAAK,IAAMzD,KAAQD,EAClB,GAAI,CACyB,YAAxB,OAAOA,CAAM,CAACC,EAAK,EACtBY,EAAO,QAAQ,CAACb,EAAQC,EAAM,CAC7B,MAAM0C,CAAG,EACRwI,EAAQxI,EAAK9B,EACd,CACD,EAEF,CAAE,KAAM,CAAC,CAIXA,EAAO,KAAK,CAAC,uBAAwB,CACpC,UAAU8B,CAAG,EACRA,EAAI,IAAI,CAAC,EAAE,EAAIA,EAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAEA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAGe,EAAK,QAAQ,AAAD,CACrE,CACD,GAGA7C,EAAO,KAAK,CAAC,wBAAyB,CACrC,MAAM8B,CAAG,EACRwI,EAAQxI,EAAK9B,EACd,CACD,GAEAA,EAAO,KAAK,CAAC,kCAAmC,CAC/C,MAAM8B,CAAG,EACR,IAAMc,EAAOd,EAAI,IAAI,GAEhBc,IAEDA,EAAK,GAAG,EACX5C,EAAO,QAAQ,CAAC4C,EAAM,MAAO,CAC5B,MAAMoR,CAAM,EAEX1J,EAAQ0J,EAAQhU,EACjB,CACD,GAGG4C,EAAK,GAAG,EACX5C,EAAO,QAAQ,CAAC4C,EAAM,MAAO,CAC5B,MAAMqR,CAAM,EACX3J,EAAQ2J,EAAQjU,EACjB,CACD,GAKD8B,EAAI,MAAM,CAACc,GACZ,CACD,GACD,CAEO,SAAS0H,EAAQxI,CAAa,CAAE9B,CAAsB,EAC5D,IAAM6C,EAAO7C,EAAO,MAAM,CAI1B,IAAK,IAAMuE,KAHPzC,EAAI,IAAI,GAAK9B,EAAO,WAAW,EAAE8B,CAAAA,EAAI,IAAI,CAAGe,CAAG,EAC/Cf,EAAI,IAAI,GAAK9B,EAAO,aAAa,EAAE8B,CAAAA,EAAI,IAAI,CAAGe,EAAK,QAAQ,AAAD,EAE9Cf,EAAI,IAAI,CACnBA,EAAI,IAAI,CAACyC,EAAE,GAAKvE,EAAO,aAAa,EAAE8B,CAAAA,EAAI,IAAI,CAACyC,EAAE,CAAG1B,EAAK,QAAQ,AAAD,EAChEf,EAAI,IAAI,CAACyC,EAAE,GAAKvE,EAAO,WAAW,EAAE8B,CAAAA,EAAI,IAAI,CAACyC,EAAE,CAAG1B,CAAG,CAE3D,C,+FC/Fe,SAAS,EAAC7C,CAAsB,CAAE+C,CAAwB,EACxE/C,EAAO,KAAK,CAAC,SAAU,CACtB,UAAU,CAAEJ,KAAAA,CAAI,CAAEsU,KAAAA,CAAI,CAAE,EACvBtU,CAAI,CAAC,EAAE,CAAGuB,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWvB,CAAI,CAAC,EAAE,CAAEI,EAAO,IAAI,EAAI,eAEzCJ,CAAI,CAAC,EAAE,EAAIA,AAAiB,WAAjBA,CAAI,CAAC,EAAE,CAAC,IAAI,EAC1BA,CAAAA,CAAI,CAAC,EAAE,EAAI,cAAa,EAGzB,IAAMiH,EAASqN,IACTC,EAAO,IAAIC,EAAAA,EAAiBA,CAEjC,WACA,IAAMC,EAAO,MAAMF,EAAK,YAAY,GACpCnU,EAAO,OAAO,CAAC,IAAI,CAClB,+BACA6G,EACA,CACC,eAAgB,cAChBwN,KAAAA,CACD,EACA,CAACA,EAAK,CAER,IACD,CACD,GAGArU,EAAO,KAAK,CAAC,eAAgB,CAC5B,UAAU,CAAEJ,KAAAA,CAAI,CAAEsU,KAAAA,CAAI,CAAE,EACvBtU,CAAI,CAAC,EAAE,CAAGuB,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWvB,CAAI,CAAC,EAAE,CAAEI,EAAO,IAAI,EAAI,eAEzCJ,CAAI,CAAC,EAAE,EAAI,AAAmB,UAAnB,OAAOA,CAAI,CAAC,EAAE,EAC5BA,CAAAA,CAAI,CAAC,EAAE,CAAG,CAAC,EAAEI,EAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAEJ,CAAI,CAAC,EAAE,CAAC,CAAC,AAAD,EAEvCA,CAAI,CAAC,EAAE,EAAI,AAAmB,UAAnB,OAAOA,CAAI,CAAC,EAAE,GACP,WAAjBA,CAAI,CAAC,EAAE,CAAC,IAAI,EACfA,CAAAA,CAAI,CAAC,EAAE,EAAI,cAAa,EAGrBA,CAAI,CAAC,EAAE,CAAC,IAAI,EACfA,CAAAA,CAAI,CAAC,EAAE,CAAC,IAAI,CAAG,CAAC,EAAEI,EAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAEJ,CAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,AAAD,GAItD,IAAMiH,EAASqN,IACTC,EAAO,IAAIC,EAAAA,EAAiBA,CAEjC,WACA,IAAMC,EAAO,MAAMF,EAAK,YAAY,GACpCnU,EAAO,OAAO,CAAC,IAAI,CAClB,oCACA6G,EAAO,IAAI,CACX,CACC,eAAgB,cAChBwN,KAAAA,CACD,EACA,CAACA,EAAK,CAER,IACD,CACD,GAEArU,EAAO,KAAK,CAAC,8BAA+B,CAC3C,MAAM8B,CAAG,EACJA,EAAI,IAAI,CAAC,EAAE,EAAEA,CAAAA,EAAI,IAAI,CAAC,EAAE,CAAGX,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAAC,EAAE,CAAE9B,EAAO,IAAI,EACnE,CACD,EACD,C,0LCjEO,SAASpB,EAAaoB,CAAsB,CAAE6C,CAAuB,EAC3E,OAAO,SAAUyR,CAAe,EAC/B,GAAIA,IAAezR,EAAM,OAAO7C,EAAO,WAAW,CAClD,GAAIsU,IAAezR,EAAK,QAAQ,CAAE,OAAO7C,EAAO,aAAa,CAC7D,GAAIsU,IAAeC,KAAM,OAAO3K,EAAAA,YAAAA,CAAAA,IAAiB,CAAC5J,GAElD,GAAIxB,EAAAA,QAAQA,CAAE,CACb,GAAI8V,IAAezR,EAAK,MAAM,QAC7B,AAAIxE,EAAAA,CAAcA,IAAIwE,EAAK,MAAM,CAEzBA,EAAK,MAAM,CAACxE,EAAAA,CAAcA,CAAC,CAAC,WAAW,CAGvC2B,EAAO,WAAW,CAEpB,GAAIsU,IAAezR,EAAK,QAAQ,CACtC,OAAO7C,EAAO,aAAa,MACrB,GAAIsU,IAAezR,EAAK,GAAG,CAAE,CAEnC,IAAI2R,EAAU3R,EAEd,OAAS,CACR,IAAM4R,EAAOD,EAAQ,MAAM,CAAC,IAAI,CAChC,GAAIC,IAASD,GAGT,CAAEnW,CAAAA,EAAAA,CAAcA,IAAIoW,CAAG,EAHL,MAMtBD,EAAUC,CACX,CAEA,OAAOD,CAAO,CAACnW,EAAAA,CAAcA,CAAC,CAAC,WAAW,AAC3C,CACD,CAEA,OAAOiW,CACR,CACD,CAEO,IAAMrO,EAAQ,EACN,SAAS,EAACjG,CAAsB,CAAE6C,CAAuB,EAIvEN,OAAO,cAAc,CAACM,EAAMP,EAAAA,EAAAA,CAAAA,OAAAA,CAAAA,MAAqB,CAAE,CAClD,MAAOtC,EAAO,MAAM,CACpB,SAAU,GACV,aAAc,EACf,GACAuC,OAAO,cAAc,CAACM,EAAMP,EAAAA,EAAAA,CAAAA,OAAAA,CAAAA,UAAyB,CAAE,CACtD,MAAO,SAAUiC,CAAC,SACjB,AAAIA,IAAM1B,EAAa7C,EAAO,WAAW,CAElCuE,CACR,EACA,SAAU,GACV,aAAc,EACf,GAEA1B,EAAK,WAAW,CAAG,SAAUF,CAAC,EAiB7B,MAhBI,AAAa,UAAb,OAAOA,GAAkBA,EAAE,QAAQ,CAAC,YAIpC,AAAa,UAAb,OAAOA,GAAkBA,EAAE,QAAQ,CAACN,SAAS,MAAM,EAInDM,IAAME,GAAQF,GAAG,UAIjBnE,EAAAA,QAAQA,EAAImE,aAAakD,UAAYlD,EAAE,WAAW,EAAE,UAIjDA,CACR,EAMAJ,OAAO,cAAc,CAACM,EAAMP,EAAAA,EAAAA,CAAAA,OAAAA,CAAAA,QAAuB,CAAE,CACpD,MAAO,SAAUoS,CAAQ,CAAEC,CAAU,CAAEC,CAAQ,EAC9C,GAAIF,aAAetM,SAIlB,OAFAyM,cAAc,IAAI,CAAGD,EAEd,EAET,EACA,SAAU,GACV,aAAc,EACf,EACD,C,8HCpGO,OAAM1M,E,MACZ,SAAsB,AACtB,aAAmBlI,CAAsB,CAAE,C,KAAxBA,MAAM,CAANA,EAElB6C,KAAK,SAAS,CAAG,AAACiS,IACjB,IAAMT,EAAOS,EAAO,KAAK,CAAC,EAAE,CAC5B/M,EAAI,GAAG,CAAC,KAAM,aAEdsM,EAAK,gBAAgB,CAAC,UAAW,AAACU,IACjCzW,QAAQ,GAAG,CAAC,KAAMyW,EAAM,IAAI,EACxB,kBAAmBA,EAAM,IAAI,GAC5BA,AAA6B,SAA7BA,EAAM,IAAI,CAAC,aAAa,EAC3B,IAAI,CAAC,QAAQ,CAAGA,EAAM,IAAI,CAAC,aAAa,CACxC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAE,cAAe,MAAO,IAElDC,EAAc,IAAI,CAAC,IAAI,CAAEhV,EAAQ+U,EAAM,IAAI,EAG9C,GAEAV,EAAK,KAAK,EACX,CACD,CAEA,MAAO,CACN,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAG,CAEjC,MAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC3B,OAAQ,CACP,UAAW,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC/B,MAAO,YACP,cAAe,KACf,QAAS,KAET,YAAa,KAAO,EACpB,iBAAkB,KAAO,EACzB,oBAAqB,KAAO,EAC5B,cAAe,AAACY,IAAe,CAChC,EACA,iBAAkB,UAAa,EAC/B,WAAY,SAAY,GACxB,OAAQ,UAAa,EACrB,WAAY,KACZ,QAAS,IACV,EAGA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAG,IAAI,CAAC,MAAM,CAAC,MAAM,AACjE,CACD,CAEA,SAASD,EAERhV,CAAsB,CACtBf,CAAgB,EAEhB,IAAMoV,EAAO,IAAI,CAAC,QAAQ,CACpBlK,EAAOlL,EAAK,aAAa,CACzBiW,EAAQjW,EAAK,cAAc,CAC3B8K,EAAW/J,EAAO,cAAc,CAAC,GAAG,CAAC6C,MAE3C,GAAIsH,AAAS,UAATA,EAAkB,CACrBpC,EAAI,GAAG,CAAC,KAAM9I,GACd,IAAMkW,EAAgBpL,EAAS,MAAM,CAAC,AAACgL,GAAUA,AAAgB,UAAhBA,EAAM,KAAK,EAC5D,GAAI,CAACI,EAAe,OAEpB,IAAK,IAAM9T,KAAW8T,EAAe,CACpC,IAAMC,EAAUnW,EAAK,gBAAgB,CAG/BoW,EAAc,IADJrV,EAAO,OAAO,CAAC,OAAU,CACTgB,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAaoU,EAAQ,GAAG,EAAG,CAC1D,KAAMA,EAAQ,IAAI,CAClB,QAAS,IAAIE,QAAQF,EAAQ,OAAO,EACpC,OAAQA,EAAQ,MAAM,CACtB,KAAM,aACP,GAEA7S,OAAO,cAAc,CAAC8S,EAAa,cAAe,CACjD,MAAOD,EAAQ,aAAa,AAC7B,GAGA,IAAMG,EAAsB,IAAIlO,MAAM,QACtCkO,CAAAA,EAAe,OAAO,CAAGF,EACzB,IAAIG,EAAY,EAChBD,CAAAA,EAAe,WAAW,CAAG,AAACE,IAC7BD,EAAY,GACX,WAEA,IAAME,EAAsB,CAC3B,cAAe,QACf,eAAgBR,EAChB,kBAAmB,CAClB,KAAMO,AALRA,CAAAA,EAAW,MAAMA,CAAO,EAKP,IAAI,CACnB,QAASnU,MAAM,IAAI,CAACmU,EAAS,OAAO,CAAC,OAAO,IAC5C,OAAQA,EAAS,MAAM,CACvB,WAAYA,EAAS,UAAU,AAChC,CACD,EAEA1N,EAAI,GAAG,CAAC,KAAM,aAAc2N,GAC5BrB,EAAK,WAAW,CAACqB,EAAS,CAACD,EAAS,IAAI,CAAC,CAC1C,IACD,EAEA1N,EAAI,GAAG,CAAC,QAASwN,GACjBlU,EAAQ,eAAe,CAAC4P,AAa3B,SAAoB8D,CAAY,EAC/B,OAAO,IAAI7V,MAAM6V,EAAO,CACvB,KAAI5V,EAAQC,EAAMuW,IACjB,AAAa,cAATvW,GAEGO,QAAQ,GAAG,CAACR,EAAQC,EAE7B,EACD,EArBsCmW,IAC/B,CAACC,IACJlX,QAAQ,GAAG,CAAC,KAAM,eAClB+V,EAAK,WAAW,CAAC,CAChB,cAAe,QACf,eAAgBa,EAChB,kBAAmB,EACpB,GAEF,CACD,CACD,C,+FCrHe,SAAS,EAAClV,CAAsB,CAAE+C,CAAW,EAC3D/C,EAAO,KAAK,CAAC,gBAAiB,CAC7B,MAAM8B,CAAG,EACR,IAAK,IAAMyC,KAAKzC,EAAI,IAAI,CACvBA,EAAI,IAAI,CAACyC,EAAE,CAAGpD,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAWW,EAAI,IAAI,CAACyC,EAAE,CAAEvE,EAAO,IAAI,CAEnD,CACD,EACD,C,oECXA,MAAe,CACd,IAAK,SAAU4V,CAAgB,CAAEF,CAAe,CAAE,GAAG9V,CAAW,EAC/D,IAAMiW,EAAMtX,MAAM,iBAAiB,AAEnCA,CAAAA,MAAM,iBAAiB,CAAG,CAACuX,EAAGzM,KAC7BA,EAAM,KAAK,GACXA,EAAM,KAAK,GACXA,EAAM,KAAK,GAEX,IAAI0M,EAAM,GACV,IAAK,IAAIxR,EAAI,EAAGA,EAAIyR,KAAK,GAAG,CAAC,EAAG3M,EAAM,MAAM,EAAG9E,IAC1C8E,CAAK,CAAC9E,EAAE,CAAC,eAAe,IAG3BwR,CAAAA,GAAO,CAAC,EAAE1M,CAAK,CAAC9E,EAAE,CAAC,eAAe,GAAG,IAAI,CAAC,CAAGwR,CAAE,EAKjD,OAFAA,GAAO1M,CAAK,CAAC,EAAE,CAAC,eAAe,IAAM,WAGtC,EAEA,IAAM0M,EAAO,WACZ,GAAI,CACH,MAAM,AAAIxX,OACX,CAAE,MAAO2K,EAAG,CACX,OAAOA,EAAE,KAAK,AACf,CACD,GAEA3K,CAAAA,MAAM,iBAAiB,CAAGsX,EAE1B,IAAM7T,EAAK1D,OAAO,CAACsX,EAAS,EAAItX,QAAQ,GAAG,CAoB3C0D,EACC,CAAC,EAAE,EAAE+T,EAAI,GAAG,EAAEL,EAAQ,CAAC,CACvB;oBACiB,EAtBP,CACV,IAAK,OACL,KAAM,OACN,MAAO,OACP,MAAO,aACR,CAAC,CAACE,EAAS,CAiBY;SAChB,EAjBI,CACV,IAAK,OACL,KAAM,OACN,MAAO,OACP,MAAO,MACR,CAAC,CAACA,EAAS,CAYC;WACH,EAZO,CACf,IAAK,EACL,KAAM,EACN,MAAO,EACP,MAAO,CACR,CAAC,CAACA,EAAS,CAOQ;;;;CAIpB,CAAC,CACC,CAAC,EAAEA,AAAa,UAAbA,EAAuB,cAAgB,GAAG,CAAC,IAC3ChW,EAEL,EACA,IAAK,SAAU8V,CAAe,CAAE,GAAG9V,CAAW,EAC7C,IAAI,CAAC,GAAG,CAAC,MAAO8V,KAAY9V,EAC7B,EACA,KAAM,SAAU8V,CAAe,CAAE,GAAG9V,CAAW,EAC9C,IAAI,CAAC,GAAG,CAAC,OAAQ8V,KAAY9V,EAC9B,EACA,MAAO,SAAU8V,CAAe,CAAE,GAAG9V,CAAW,EAC/C,IAAI,CAAC,GAAG,CAAC,QAAS8V,KAAY9V,EAC/B,EACA,MAAO,SAAU8V,CAAe,CAAE,GAAG9V,CAAW,EAC/C,IAAI,CAAC,GAAG,CAAC,QAAS8V,KAAY9V,EAC/B,CACD,C,qHC5EI,CAAE,eAAeiD,IAAG,GAEvBA,CAAAA,KAAK,SAAS,CAAG,CAChB,QAAS,CACR,MAAOoT,UACP,QAASC,WACV,EACA,MAAO,CAAC,EACR/P,YAAAA,CACD,GAGM,IAAM8I,EAAYpM,KAAK,SAAS,CAEjC2F,EAAiBgF,SAChB,SAASxF,IACfiH,EAAU,KAAK,CAAC,MAAM,CAAGzG,EACxB,MACAyG,EAAU,MAAM,CAAC,KAAK,CAAC,MAAM,EAE9BA,EAAU,KAAK,CAAC,MAAM,CAAGzG,EACxB,MACAyG,EAAU,MAAM,CAAC,KAAK,CAAC,MAAM,CAE/B,CAEO,SAAS9I,EAAYgQ,CAAyB,CAAEjW,CAAQ,EAC9D,IAAMH,EAAQkP,EAAU,MAAM,CAAC,KAAK,CAACkH,EAAK,CAC1C,IAAK,IAAMC,KAASnH,EAAU,MAAM,CAAC,SAAS,CAAE,CAC/C,IAAMoH,EAAepH,EAAU,MAAM,CAAC,SAAS,CAACmH,EAAM,CACtD,GAAI,IAAIxD,OAAOwD,GAAO,IAAI,CAAClW,EAAI,IAAI,GAAKiW,KAAQE,EAC/C,OAAOA,CAAY,CAACF,EAAK,AAE3B,CAEA,OAAOpW,CACR,C,2YCpCO,GAAM,CACZ,KAAM,CAAElB,WAAAA,CAAU,CAAEyX,gBAAAA,CAAe,CAAElC,kBAAAA,CAAiB,CAAE,CACxD,IAAK,CAAEjT,WAAAA,CAAU,CAAEH,aAAAA,CAAY,CAAE2H,YAAAA,CAAW,CAAEC,cAAAA,CAAa,CAAE,CAC7D,QAAS,CACRnF,WAAAA,CAAU,CACVC,aAAAA,CAAY,CACZK,YAAAA,CAAW,CACXyB,cAAAA,CAAa,CACb+Q,cAAAA,CAAa,CACbrR,UAAAA,CAAS,CACTsR,eAAAA,CAAc,CACdC,eAAAA,CAAc,CACd5R,UAAAA,CAAS,CACT,CACD1G,YAAAA,CAAW,CACX,CAAG8Q,EAAAA,EAAAA,CAAAA,MAAgB,CAEP3M,EAAS2M,EAAAA,EAAAA,CAAAA,MAAgB,A,2FClB/B,IAAM5Q,EAAiB2K,OAAO,GAAG,CAAC,0BAC5BxI,EAAgBwI,OAAO,GAAG,CAAC,wB"}
\ No newline at end of file
diff --git a/views/scram/scramjet.controller.js b/views/scram/scramjet.controller.js
new file mode 100644
index 00000000..2888d040
--- /dev/null
+++ b/views/scram/scramjet.controller.js
@@ -0,0 +1,11 @@
+(()=>{"use strict";var e={1762:function(e,r,t){t.d(r,{Z:function(){return o}});let o={fmt:function(e,r,...t){let o=Error.prepareStackTrace;Error.prepareStackTrace=(e,r)=>{r.shift(),r.shift(),r.shift();let t="";for(let e=1;e `+t);return t+=r[0].getFunctionName()||"Anonymous"};let n=function(){try{throw Error()}catch(e){return e.stack}}();Error.prepareStackTrace=o;let c=console[e]||console.log;c(`%c${n}%c ${r}`,`
+ background-color: ${{log:"#000",warn:"#f80",error:"#f00",debug:"transparent"}[e]};
+ color: ${{log:"#fff",warn:"#fff",error:"#fff",debug:"gray"}[e]};
+ padding: ${{log:2,warn:4,error:4,debug:0}[e]}px;
+ font-weight: bold;
+ font-family: monospace;
+ font-size: 0.9em;
+ `,`${"debug"===e?"color: gray":""}`,...t)},log:function(e,...r){this.fmt("log",e,...r)},warn:function(e,...r){this.fmt("warn",e,...r)},error:function(e,...r){this.fmt("error",e,...r)},debug:function(e,...r){this.fmt("debug",e,...r)}}}},r={};function t(o){var n=r[o];if(void 0!==n)return n.exports;var c=r[o]={exports:{}};return e[o](c,c.exports,t),c.exports}t.d=function(e,r){for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)};let o=Symbol.for("scramjet client global"),n=Symbol.for("scramjet frame handle");var c=t(1762).Z;class s extends EventTarget{controller;frame;constructor(e,r){super(),this.controller=e,this.frame=r,r[n]=this}get client(){return this.frame.contentWindow.window[o]}get url(){return this.client.url}go(e){e instanceof URL&&(e=e.toString()),c.log("navigated to",e),this.frame.src=this.controller.encodeUrl(e)}back(){this.frame.contentWindow?.history.back()}forward(){this.frame.contentWindow?.history.forward()}reload(){this.frame.contentWindow?.location.reload()}}!("$scramjet"in self)&&(self.$scramjet={version:{build:"1efcf85",version:"1.0.2-dev"},codec:{},flagEnabled:function(e,r){let t=i.config.flags[e];for(let t in i.config.siteFlags){let o=i.config.siteFlags[t];if(new RegExp(t).test(r.href)&&e in o)return o[e]}return t}});let i=self.$scramjet,a=Function;function f(){i.codec.encode=a("url",i.config.codec.encode),i.codec.decode=a("url",i.config.codec.decode)}var l=t(1762).Z;window.ScramjetController=class e{db;constructor(e){let r={prefix:"/scramjet/",globals:{wrapfn:"$scramjet$wrap",wrapthisfn:"$scramjet$wrapthis",trysetfn:"$scramjet$tryset",importfn:"$scramjet$import",rewritefn:"$scramjet$rewrite",metafn:"$scramjet$meta",setrealmfn:"$scramjet$setrealm",pushsourcemapfn:"$scramjet$pushsourcemap"},files:{wasm:"/scramjet.wasm.js",shared:"/scramjet.shared.js",worker:"/scramjet.worker.js",client:"/scramjet.client.js",sync:"/scramjet.sync.js"},flags:{serviceworkers:!1,syncxhr:!1,naiiveRewriter:!1,strictRewrites:!0,rewriterLogs:!0,captureErrors:!0,cleanErrors:!1,scramitize:!1,sourcemaps:!1},siteFlags:{},codec:{encode:`if (!url) return url;
+ return encodeURIComponent(url);`,decode:`if (!url) return url;
+ return decodeURIComponent(url);`}},t=(e,r)=>{for(let o in r)r[o]instanceof Object&&o in e&&Object.assign(r[o],t(e[o],r[o]));return Object.assign(e||{},r)};i.config=t(r,e)}async init(e){f(),await this.openIDB();let r=await navigator.serviceWorker.register(e);return l.log("service worker registered"),r}createFrame(e){return!e&&(e=document.createElement("iframe")),new s(this,e)}encodeUrl(e){return e instanceof URL&&(e=e.toString()),i.config.prefix+i.codec.encode(e)}decodeUrl(e){return e instanceof URL&&(e=e.toString()),i.codec.decode(e)}async openIDB(){let e=indexedDB.open("$scramjet",1);return new Promise((r,t)=>{e.onsuccess=async()=>{this.db=e.result,await this.#e(),r(e.result)},e.onupgradeneeded=()=>{let r=e.result;!r.objectStoreNames.contains("config")&&r.createObjectStore("config"),!r.objectStoreNames.contains("cookies")&&r.createObjectStore("cookies")},e.onerror=()=>t(e.error)})}async #e(){if(!this.db){console.error("Store not ready!");return}let e=this.db.transaction("config","readwrite").objectStore("config").put(i.config,"config");return new Promise((r,t)=>{e.onsuccess=r,e.onerror=t})}async modifyConfig(e){i.config=Object.assign({},i.config,e),f(),await this.#e()}}})();
+//# sourceMappingURL=scramjet.controller.js.map
\ No newline at end of file
diff --git a/views/scram/scramjet.controller.js.map b/views/scram/scramjet.controller.js.map
new file mode 100644
index 00000000..a7301eae
--- /dev/null
+++ b/views/scram/scramjet.controller.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"scramjet.controller.js","sources":["webpack://@mercuryworkshop/scramjet/./src/log.ts","webpack://@mercuryworkshop/scramjet/./src/symbols.ts","webpack://@mercuryworkshop/scramjet/./src/controller/frame.ts","webpack://@mercuryworkshop/scramjet/./src/scramjet.ts","webpack://@mercuryworkshop/scramjet/./src/controller/index.ts"],"sourcesContent":["export 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\tconst fn = console[severity] || console.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${fmt}%c ${message}`,\n\t\t\t`\n\t\tbackground-color: ${bg};\n\t\tcolor: ${fg};\n\t\tpadding: ${padding}px;\n\t\tfont-weight: bold;\n\t\tfont-family: monospace;\n\t\tfont-size: 0.9em;\n\t`,\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};\n","// see types.d.ts for what these mean\nexport const SCRAMJETCLIENT = Symbol.for(\"scramjet client global\");\nexport const SCRAMJETFRAME = Symbol.for(\"scramjet frame handle\");\n","import { ScramjetController } from \".\";\nimport type { ScramjetClient } from \"../client/client\";\nimport { SCRAMJETCLIENT, SCRAMJETFRAME } from \"../symbols\";\n\nexport class ScramjetFrame extends EventTarget {\n\tconstructor(\n\t\tprivate controller: ScramjetController,\n\t\tpublic frame: HTMLIFrameElement\n\t) {\n\t\tsuper();\n\t\tframe[SCRAMJETFRAME] = this;\n\t}\n\n\tget client(): ScramjetClient {\n\t\treturn this.frame.contentWindow.window[SCRAMJETCLIENT];\n\t}\n\n\tget url(): URL {\n\t\treturn this.client.url;\n\t}\n\n\tgo(url: string | URL) {\n\t\tif (url instanceof URL) url = url.toString();\n\n\t\tdbg.log(\"navigated to\", url);\n\n\t\tthis.frame.src = this.controller.encodeUrl(url);\n\t}\n\n\tback() {\n\t\tthis.frame.contentWindow?.history.back();\n\t}\n\n\tforward() {\n\t\tthis.frame.contentWindow?.history.forward();\n\t}\n\n\treload() {\n\t\tthis.frame.contentWindow?.location.reload();\n\t}\n}\n","import { ScramjetFlags } from \"./types\";\n\nif (!(\"$scramjet\" in self)) {\n\t// @ts-expect-error ts stuff\n\tself.$scramjet = {\n\t\tversion: {\n\t\t\tbuild: COMMITHASH,\n\t\t\tversion: VERSION,\n\t\t},\n\t\tcodec: {},\n\t\tflagEnabled,\n\t};\n}\n\nexport const $scramjet = self.$scramjet;\n\nconst nativeFunction = Function;\nexport function loadCodecs() {\n\t$scramjet.codec.encode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.encode\n\t) as any;\n\t$scramjet.codec.decode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.decode\n\t) as any;\n}\n\nexport function flagEnabled(flag: keyof ScramjetFlags, url: URL): boolean {\n\tconst value = $scramjet.config.flags[flag];\n\tfor (const regex in $scramjet.config.siteFlags) {\n\t\tconst partialflags = $scramjet.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}\n","import { ScramjetConfig } from \"../types\";\nimport { ScramjetFrame } from \"./frame\";\nimport { $scramjet, loadCodecs } from \"../scramjet\";\n\nexport class ScramjetController {\n\tprivate db: IDBDatabase;\n\n\tconstructor(config: Partial) {\n\t\t// sane ish defaults\n\t\tconst defaultConfig: ScramjetConfig = {\n\t\t\tprefix: \"/scramjet/\",\n\t\t\tglobals: {\n\t\t\t\twrapfn: \"$scramjet$wrap\",\n\t\t\t\twrapthisfn: \"$scramjet$wrapthis\",\n\t\t\t\ttrysetfn: \"$scramjet$tryset\",\n\t\t\t\timportfn: \"$scramjet$import\",\n\t\t\t\trewritefn: \"$scramjet$rewrite\",\n\t\t\t\tmetafn: \"$scramjet$meta\",\n\t\t\t\tsetrealmfn: \"$scramjet$setrealm\",\n\t\t\t\tpushsourcemapfn: \"$scramjet$pushsourcemap\",\n\t\t\t},\n\t\t\tfiles: {\n\t\t\t\twasm: \"/scramjet.wasm.js\",\n\t\t\t\tshared: \"/scramjet.shared.js\",\n\t\t\t\tworker: \"/scramjet.worker.js\",\n\t\t\t\tclient: \"/scramjet.client.js\",\n\t\t\t\tsync: \"/scramjet.sync.js\",\n\t\t\t},\n\t\t\tflags: {\n\t\t\t\tserviceworkers: false,\n\t\t\t\tsyncxhr: false,\n\t\t\t\tnaiiveRewriter: false,\n\t\t\t\tstrictRewrites: true,\n\t\t\t\trewriterLogs: true,\n\t\t\t\tcaptureErrors: true,\n\t\t\t\tcleanErrors: false,\n\t\t\t\tscramitize: false,\n\t\t\t\tsourcemaps: false,\n\t\t\t},\n\t\t\tsiteFlags: {},\n\t\t\tcodec: {\n\t\t\t\tencode: `if (!url) return url;\n\t\t\t\t\treturn encodeURIComponent(url);`,\n\t\t\t\tdecode: `if (!url) return url;\n\t\t\t\t\treturn decodeURIComponent(url);`,\n\t\t\t},\n\t\t};\n\n\t\tconst deepMerge = (target: any, source: any): any => {\n\t\t\tfor (const key in source) {\n\t\t\t\tif (source[key] instanceof Object && key in target) {\n\t\t\t\t\tObject.assign(source[key], deepMerge(target[key], source[key]));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn Object.assign(target || {}, source);\n\t\t};\n\n\t\t$scramjet.config = deepMerge(defaultConfig, config);\n\t}\n\n\tasync init(serviceWorkerPath: string): Promise {\n\t\tloadCodecs();\n\n\t\tawait this.openIDB();\n\n\t\tconst reg = await navigator.serviceWorker.register(serviceWorkerPath);\n\t\tdbg.log(\"service worker registered\");\n\n\t\treturn reg;\n\t}\n\n\tcreateFrame(frame?: HTMLIFrameElement): ScramjetFrame {\n\t\tif (!frame) {\n\t\t\tframe = document.createElement(\"iframe\");\n\t\t}\n\n\t\treturn new ScramjetFrame(this, frame);\n\t}\n\n\tencodeUrl(url: string | URL): string {\n\t\tif (url instanceof URL) url = url.toString();\n\n\t\treturn $scramjet.config.prefix + $scramjet.codec.encode(url);\n\t}\n\n\tdecodeUrl(url: string | URL) {\n\t\tif (url instanceof URL) url = url.toString();\n\n\t\treturn $scramjet.codec.decode(url);\n\t}\n\n\tasync openIDB(): Promise {\n\t\tconst db = indexedDB.open(\"$scramjet\", 1);\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tdb.onsuccess = async () => {\n\t\t\t\tthis.db = db.result;\n\t\t\t\tawait this.#saveConfig();\n\t\t\t\tresolve(db.result);\n\t\t\t};\n\t\t\tdb.onupgradeneeded = () => {\n\t\t\t\tconst res = db.result;\n\t\t\t\tif (!res.objectStoreNames.contains(\"config\")) {\n\t\t\t\t\tres.createObjectStore(\"config\");\n\t\t\t\t}\n\t\t\t\tif (!res.objectStoreNames.contains(\"cookies\")) {\n\t\t\t\t\tres.createObjectStore(\"cookies\");\n\t\t\t\t}\n\t\t\t};\n\t\t\tdb.onerror = () => reject(db.error);\n\t\t});\n\t}\n\n\tasync #saveConfig() {\n\t\tif (!this.db) {\n\t\t\tconsole.error(\"Store not ready!\");\n\n\t\t\treturn;\n\t\t}\n\t\tconst tx = this.db.transaction(\"config\", \"readwrite\");\n\t\tconst store = tx.objectStore(\"config\");\n\t\tconst req = store.put($scramjet.config, \"config\");\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\treq.onsuccess = resolve;\n\t\t\treq.onerror = reject;\n\t\t});\n\t}\n\n\tasync modifyConfig(config: ScramjetConfig) {\n\t\t$scramjet.config = Object.assign({}, $scramjet.config, config);\n\t\tloadCodecs();\n\n\t\tawait this.#saveConfig();\n\t}\n}\n\nwindow.ScramjetController = ScramjetController;\n"],"names":["severity","message","args","old","Error","_","stack","fmt","i","Math","e","fn","console","SCRAMJETCLIENT","Symbol","SCRAMJETFRAME","ScramjetFrame","EventTarget","controller","frame","url","URL","dbg","self","COMMITHASH","VERSION","flagEnabled","flag","value","$scramjet","regex","partialflags","RegExp","nativeFunction","Function","loadCodecs","window","ScramjetController","config","defaultConfig","deepMerge","target","source","key","Object","serviceWorkerPath","reg","navigator","document","db","indexedDB","Promise","resolve","reject","res","req","store","tx"],"mappings":"+EAAA,MAAe,CACd,IAAK,SAAUA,CAAgB,CAAEC,CAAe,CAAE,GAAGC,CAAW,EAC/D,IAAMC,EAAMC,MAAM,iBAAiB,AAEnCA,CAAAA,MAAM,iBAAiB,CAAG,CAACC,EAAGC,KAC7BA,EAAM,KAAK,GACXA,EAAM,KAAK,GACXA,EAAM,KAAK,GAEX,IAAIC,EAAM,GACV,IAAK,IAAIC,EAAI,EAAGA,EAAIC,KAAK,GAAG,CAAC,EAAGH,EAAM,MAAM,EAAGE,IAC1CF,CAAK,CAACE,EAAE,CAAC,eAAe,IAG3BD,CAAAA,GAAO,CAAC,EAAED,CAAK,CAACE,EAAE,CAAC,eAAe,GAAG,IAAI,CAAC,CAAGD,CAAE,EAKjD,OAFAA,GAAOD,CAAK,CAAC,EAAE,CAAC,eAAe,IAAM,WAGtC,EAEA,IAAMC,EAAO,WACZ,GAAI,CACH,MAAM,AAAIH,OACX,CAAE,MAAOM,EAAG,CACX,OAAOA,EAAE,KAAK,AACf,CACD,GAEAN,CAAAA,MAAM,iBAAiB,CAAGD,EAE1B,IAAMQ,EAAKC,OAAO,CAACZ,EAAS,EAAIY,QAAQ,GAAG,CAoB3CD,EACC,CAAC,EAAE,EAAEJ,EAAI,GAAG,EAAEN,EAAQ,CAAC,CACvB;oBACiB,EAtBP,CACV,IAAK,OACL,KAAM,OACN,MAAO,OACP,MAAO,aACR,CAAC,CAACD,EAAS,CAiBY;SAChB,EAjBI,CACV,IAAK,OACL,KAAM,OACN,MAAO,OACP,MAAO,MACR,CAAC,CAACA,EAAS,CAYC;WACH,EAZO,CACf,IAAK,EACL,KAAM,EACN,MAAO,EACP,MAAO,CACR,CAAC,CAACA,EAAS,CAOQ;;;;CAIpB,CAAC,CACC,CAAC,EAAEA,AAAa,UAAbA,EAAuB,cAAgB,GAAG,CAAC,IAC3CE,EAEL,EACA,IAAK,SAAUD,CAAe,CAAE,GAAGC,CAAW,EAC7C,IAAI,CAAC,GAAG,CAAC,MAAOD,KAAYC,EAC7B,EACA,KAAM,SAAUD,CAAe,CAAE,GAAGC,CAAW,EAC9C,IAAI,CAAC,GAAG,CAAC,OAAQD,KAAYC,EAC9B,EACA,MAAO,SAAUD,CAAe,CAAE,GAAGC,CAAW,EAC/C,IAAI,CAAC,GAAG,CAAC,QAASD,KAAYC,EAC/B,EACA,MAAO,SAAUD,CAAe,CAAE,GAAGC,CAAW,EAC/C,IAAI,CAAC,GAAG,CAAC,QAASD,KAAYC,EAC/B,CACD,C,4SC7EO,IAAMW,EAAiBC,OAAO,GAAG,CAAC,0BAC5BC,EAAgBD,OAAO,GAAG,CAAC,yB,eCEjC,OAAME,UAAsBC,Y,gBAClC,aACSC,CAA8B,CAC/BC,CAAwB,CAC9B,CACD,KAAK,QAHGD,UAAU,CAAVA,EAAAA,IAAAA,CACDC,KAAK,CAALA,EAGPA,CAAK,CAACJ,EAAc,CAAG,IAAI,AAC5B,CAEA,IAAI,QAAyB,CAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAACF,EAAe,AACvD,CAEA,IAAI,KAAW,CACd,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,AACvB,CAEA,GAAGO,CAAiB,CAAE,CACjBA,aAAeC,KAAKD,CAAAA,EAAMA,EAAI,QAAQ,EAAC,EAE3CE,EAAI,GAAG,CAAC,eAAgBF,GAExB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAACA,EAC5C,CAEA,MAAO,CACN,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,MACnC,CAEA,SAAU,CACT,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,SACnC,CAEA,QAAS,CACR,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,QACpC,CACD,CCtCI,CAAE,eAAeG,IAAG,GAEvBA,CAAAA,KAAK,SAAS,CAAG,CAChB,QAAS,CACR,MAAOC,UACP,QAASC,WACV,EACA,MAAO,CAAC,EACRC,YAkBK,SAAqBC,CAAyB,CAAEP,CAAQ,EAC9D,IAAMQ,EAAQC,EAAU,MAAM,CAAC,KAAK,CAACF,EAAK,CAC1C,IAAK,IAAMG,KAASD,EAAU,MAAM,CAAC,SAAS,CAAE,CAC/C,IAAME,EAAeF,EAAU,MAAM,CAAC,SAAS,CAACC,EAAM,CACtD,GAAI,IAAIE,OAAOF,GAAO,IAAI,CAACV,EAAI,IAAI,GAAKO,KAAQI,EAC/C,OAAOA,CAAY,CAACJ,EAAK,AAE3B,CAEA,OAAOC,CACR,CA3BC,GAGM,IAAMC,EAAYN,KAAK,SAAS,CAEjCU,EAAiBC,SAChB,SAASC,IACfN,EAAU,KAAK,CAAC,MAAM,CAAGI,EACxB,MACAJ,EAAU,MAAM,CAAC,KAAK,CAAC,MAAM,EAE9BA,EAAU,KAAK,CAAC,MAAM,CAAGI,EACxB,MACAJ,EAAU,MAAM,CAAC,KAAK,CAAC,MAAM,CAE/B,C,eCgHAO,CAAAA,OAAO,kBAAkB,CAtIlB,MAAMC,EACJ,EAAgB,AAExB,aAAYC,CAA+B,CAAE,CAE5C,IAAMC,EAAgC,CACrC,OAAQ,aACR,QAAS,CACR,OAAQ,iBACR,WAAY,qBACZ,SAAU,mBACV,SAAU,mBACV,UAAW,oBACX,OAAQ,iBACR,WAAY,qBACZ,gBAAiB,yBAClB,EACA,MAAO,CACN,KAAM,oBACN,OAAQ,sBACR,OAAQ,sBACR,OAAQ,sBACR,KAAM,mBACP,EACA,MAAO,CACN,eAAgB,GAChB,QAAS,GACT,eAAgB,GAChB,eAAgB,GAChB,aAAc,GACd,cAAe,GACf,YAAa,GACb,WAAY,GACZ,WAAY,EACb,EACA,UAAW,CAAC,EACZ,MAAO,CACN,OAAQ,CAAC;oCACuB,CAAC,CACjC,OAAQ,CAAC;oCACuB,CAAC,AAClC,CACD,EAEMC,EAAY,CAACC,EAAaC,KAC/B,IAAK,IAAMC,KAAOD,EACbA,CAAM,CAACC,EAAI,WAAYC,QAAUD,KAAOF,GAC3CG,OAAO,MAAM,CAACF,CAAM,CAACC,EAAI,CAAEH,EAAUC,CAAM,CAACE,EAAI,CAAED,CAAM,CAACC,EAAI,GAI/D,OAAOC,OAAO,MAAM,CAACH,GAAU,CAAC,EAAGC,EACpC,CAEAb,CAAAA,EAAU,MAAM,CAAGW,EAAUD,EAAeD,EAC7C,CAEA,MAAM,KAAKO,CAAyB,CAAsC,CACzEV,IAEA,MAAM,IAAI,CAAC,OAAO,GAElB,IAAMW,EAAM,MAAMC,UAAU,aAAa,CAAC,QAAQ,CAACF,GAGnD,OAFAvB,EAAI,GAAG,CAAC,6BAEDwB,CACR,CAEA,YAAY3B,CAAyB,CAAiB,CAKrD,MAJI,CAACA,GACJA,CAAAA,EAAQ6B,SAAS,aAAa,CAAC,SAAQ,EAGjC,IAAIhC,EAAc,IAAI,CAAEG,EAChC,CAEA,UAAUC,CAAiB,CAAU,CAGpC,OAFIA,aAAeC,KAAKD,CAAAA,EAAMA,EAAI,QAAQ,EAAC,EAEpCS,EAAU,MAAM,CAAC,MAAM,CAAGA,EAAU,KAAK,CAAC,MAAM,CAACT,EACzD,CAEA,UAAUA,CAAiB,CAAE,CAG5B,OAFIA,aAAeC,KAAKD,CAAAA,EAAMA,EAAI,QAAQ,EAAC,EAEpCS,EAAU,KAAK,CAAC,MAAM,CAACT,EAC/B,CAEA,MAAM,SAAgC,CACrC,IAAM6B,EAAKC,UAAU,IAAI,CAAC,YAAa,GAEvC,OAAO,IAAIC,QAAqB,CAACC,EAASC,KACzCJ,EAAG,SAAS,CAAG,UACd,IAAI,CAAC,EAAE,CAAGA,EAAG,MAAM,CACnB,MAAM,IAAI,CAAC,EAAW,GACtBG,EAAQH,EAAG,MAAM,CAClB,EACAA,EAAG,eAAe,CAAG,KACpB,IAAMK,EAAML,EAAG,MAAM,AACjB,EAACK,EAAI,gBAAgB,CAAC,QAAQ,CAAC,WAClCA,EAAI,iBAAiB,CAAC,UAEnB,CAACA,EAAI,gBAAgB,CAAC,QAAQ,CAAC,YAClCA,EAAI,iBAAiB,CAAC,UAExB,EACAL,EAAG,OAAO,CAAG,IAAMI,EAAOJ,EAAG,KAAK,CACnC,EACD,CAEA,MAAM,EAAW,GAChB,GAAI,CAAC,IAAI,CAAC,EAAE,CAAE,CACbrC,QAAQ,KAAK,CAAC,oBAEd,MACD,CAGA,IAAM2C,EAAMC,AADEC,AADH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,SAAU,aACxB,WAAW,CAAC,UACX,GAAG,CAAC5B,EAAU,MAAM,CAAE,UAExC,OAAO,IAAIsB,QAAQ,CAACC,EAASC,KAC5BE,EAAI,SAAS,CAAGH,EAChBG,EAAI,OAAO,CAAGF,CACf,EACD,CAEA,MAAM,aAAaf,CAAsB,CAAE,CAC1CT,EAAU,MAAM,CAAGe,OAAO,MAAM,CAAC,CAAC,EAAGf,EAAU,MAAM,CAAES,GACvDH,IAEA,MAAM,IAAI,CAAC,EAAW,EACvB,CACD,C"}
\ No newline at end of file
diff --git a/views/scram/scramjet.shared.js b/views/scram/scramjet.shared.js
new file mode 100644
index 00000000..fe771e6b
--- /dev/null
+++ b/views/scram/scramjet.shared.js
@@ -0,0 +1,30 @@
+(()=>{"use strict";let e,a,t;var i,s,o,n,r,c,l,u,d,m,h,g,p,b,k,f,y={799:function(e){var a={decodeValues:!0,map:!1,silent:!1};function t(e){return"string"==typeof e&&!!e.trim()}function i(e,i){var s=e.split(";").filter(t),o=function(e){var a="",t="",i=e.split("=");return i.length>1?(a=i.shift(),t=i.join("=")):t=e,{name:a,value:t}}(s.shift()),n=o.name,r=o.value;i=i?Object.assign({},a,i):a;try{r=i.decodeValues?decodeURIComponent(r):r}catch(e){console.error("set-cookie-parser encountered an error while decoding a cookie with value '"+r+"'. Set options.decodeValues to false to disable this feature.",e)}var c={name:n,value:r};return s.forEach(function(e){var a=e.split("="),t=a.shift().trimLeft().toLowerCase(),i=a.join("=");"expires"===t?c.expires=new Date(i):"max-age"===t?c.maxAge=parseInt(i,10):"secure"===t?c.secure=!0:"httponly"===t?c.httpOnly=!0:"samesite"===t?c.sameSite=i:"partitioned"===t?c.partitioned=!0:c[t]=i}),c}function s(e,s){if(s=s?Object.assign({},a,s):a,!e)return s.map?{}:[];if(e.headers){if("function"==typeof e.headers.getSetCookie)e=e.headers.getSetCookie();else if(e.headers["set-cookie"])e=e.headers["set-cookie"];else{var o=e.headers[Object.keys(e.headers).find(function(e){return"set-cookie"===e.toLowerCase()})];!o&&e.headers.cookie&&!s.silent&&console.warn("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."),e=o}}return(!Array.isArray(e)&&(e=[e]),s.map)?e.filter(t).reduce(function(e,a){var t=i(a,s);return e[t.name]=t,e},{}):e.filter(t).map(function(e){return i(e,s)})}e.exports=s,e.exports.parse=s,e.exports.parseString=i,e.exports.splitCookiesString=function(e){if(Array.isArray(e))return e;if("string"!=typeof e)return[];var a,t,i,s,o,n=[],r=0;function c(){for(;r=e.length)&&n.push(e.substring(a,e.length))}return n}}},w={};function v(e){var a=w[e];if(void 0!==a)return a.exports;var t=w[e]={exports:{}};return y[e](t,t.exports,v),t.exports}v.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return v.d(a,{a:a}),a},v.d=function(e,a){for(var t in a)v.o(a,t)&&!v.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},v.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},!("$scramjet"in self)&&(self.$scramjet={version:{build:"1efcf85",version:"1.0.2-dev"},codec:{},flagEnabled:z});let x=self.$scramjet;function z(e,a){let t=x.config.flags[e];for(let t in x.config.siteFlags){let i=x.config.siteFlags[t];if(new RegExp(t).test(a.href)&&e in i)return i[e]}return t}function j(a){let t=e.__externref_table_alloc();return e.__wbindgen_export_2.set(t,a),t}function S(a,t){try{return a.apply(this,t)}catch(t){let a=j(t);e.__wbindgen_exn_store(a)}}let q="undefined"!=typeof TextDecoder?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};"undefined"!=typeof TextDecoder&&q.decode();let A=null;function E(){return(null===A||A.buffer!==e.memory.buffer)&&(A=new Uint8Array(e.memory.buffer)),A}function T(e,a){return e>>>=0,q.decode(E().slice(e,e+a))}let I=0,N="undefined"!=typeof TextEncoder?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},C=function(e,a){let t=N.encode(e);return a.set(t),{read:e.length,written:t.length}};function _(e,a,t){if(void 0===t){let t=N.encode(e),i=a(t.length,1)>>>0;return E().subarray(i,i+t.length).set(t),I=t.length,i}let i=e.length,s=a(i,1)>>>0,o=E(),n=0;for(;n127)break;o[s+n]=a}if(n!==i){0!==n&&(e=e.slice(n)),s=t(s,i,i=n+3*e.length,1)>>>0;let a=C(e,E().subarray(s+n,s+i));n+=a.written,s=t(s,i,n,1)>>>0}return I=n,s}let L=null;function D(){return(null===L||L.buffer!==e.memory.buffer)&&(L=new DataView(e.memory.buffer)),L}function R(e){return null==e}function B(a){let t=e.__wbindgen_export_2.get(a);return e.__externref_table_dealloc(a),t}async function M(e,a){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,a)}catch(a){if("application/wasm"!=e.headers.get("Content-Type"))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",a);else throw a}let t=await e.arrayBuffer();return await WebAssembly.instantiate(t,a)}{let t=await WebAssembly.instantiate(e,a);return t instanceof WebAssembly.Instance?{instance:t,module:e}:t}}function O(){let a={};return a.wbg={},a.wbg.__wbg_call_3b770f0d6eb4720e=function(){return S(function(e,a,t,i){return e.call(a,t,i)},arguments)},a.wbg.__wbg_call_500db948e69c7330=function(){return S(function(e,a,t){return e.call(a,t)},arguments)},a.wbg.__wbg_call_b0d8e36992d9900d=function(){return S(function(e,a){return e.call(a)},arguments)},a.wbg.__wbg_get_bbccf8970793c087=function(){return S(function(e,a){return Reflect.get(e,a)},arguments)},a.wbg.__wbg_new_17f755666e48d1d8=function(){return S(function(e,a){return new URL(T(e,a))},arguments)},a.wbg.__wbg_new_254fa9eac11932ae=function(){return[]},a.wbg.__wbg_new_688846f374351c92=function(){return{}},a.wbg.__wbg_newnoargs_fd9e4bf8be2bc16d=function(e,a){return Function(T(e,a))},a.wbg.__wbg_newwithbase_aa2c471fe3eacc2b=function(){return S(function(e,a,t,i){return new URL(T(e,a),T(t,i))},arguments)},a.wbg.__wbg_now_62a101fe35b60230=function(e){return e.now()},a.wbg.__wbg_scramtag_bd98edaa0eaec45e=function(a){let t=_("10000000000".replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)),e.__wbindgen_malloc,e.__wbindgen_realloc),i=I;D().setInt32(a+4,i,!0),D().setInt32(a+0,t,!0)},a.wbg.__wbg_set_4e647025551483bd=function(){return S(function(e,a,t){return Reflect.set(e,a,t)},arguments)},a.wbg.__wbg_static_accessor_GLOBAL_0be7472e492ad3e3=function(){let e="undefined"==typeof global?null:global;return R(e)?0:j(e)},a.wbg.__wbg_static_accessor_GLOBAL_THIS_1a6eb482d12c9bfb=function(){let e="undefined"==typeof globalThis?null:globalThis;return R(e)?0:j(e)},a.wbg.__wbg_static_accessor_SELF_1dc398a895c82351=function(){let e="undefined"==typeof self?null:self;return R(e)?0:j(e)},a.wbg.__wbg_static_accessor_WINDOW_ae1c80c7eea8d64a=function(){let e="undefined"==typeof window?null:window;return R(e)?0:j(e)},a.wbg.__wbg_toString_a491ccf7be1ca5c9=function(e){return e.toString()},a.wbg.__wbg_toString_cbcf95f260c441ae=function(e){return e.toString()},a.wbg.__wbindgen_boolean_get=function(e){return"boolean"==typeof e?e?1:0:2},a.wbg.__wbindgen_error_new=function(e,a){return Error(T(e,a))},a.wbg.__wbindgen_init_externref_table=function(){let a=e.__wbindgen_export_2,t=a.grow(4);a.set(0,void 0),a.set(t+0,void 0),a.set(t+1,null),a.set(t+2,!0),a.set(t+3,!1)},a.wbg.__wbindgen_is_function=function(e){return"function"==typeof e},a.wbg.__wbindgen_is_undefined=function(e){return void 0===e},a.wbg.__wbindgen_number_new=function(e){return e},a.wbg.__wbindgen_string_get=function(a,t){let i="string"==typeof t?t:void 0;var s=R(i)?0:_(i,e.__wbindgen_malloc,e.__wbindgen_realloc),o=I;D().setInt32(a+4,o,!0),D().setInt32(a+0,s,!0)},a.wbg.__wbindgen_string_new=function(e,a){return T(e,a)},a.wbg.__wbindgen_throw=function(e,a){throw Error(T(e,a))},a.wbg.__wbindgen_uint8_array_new=function(a,t){var i,s,o=(i=a,s=t,i>>>=0,E().subarray(i/1,i/1+s)).slice();return e.__wbindgen_free(a,1*t,1),o},a}function $(e,a){e.wbg.memory=a||new WebAssembly.Memory({initial:18,maximum:16384,shared:!0})}function U(a,t,i){if(e=a.exports,V.__wbindgen_wasm_module=t,L=null,A=null,void 0!==i&&("number"!=typeof i||0===i||i%65536!=0))throw"invalid stack size";return e.__wbindgen_start(i),e}async function V(a,t){let i;if(void 0!==e)return e;void 0!==a&&(Object.getPrototypeOf(a)===Object.prototype?{module_or_path:a,memory:t,thread_stack_size:i}=a:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),void 0===a&&(a=new URL("wasm_bg.wasm",""));let s=O();("string"==typeof a||"function"==typeof Request&&a instanceof Request||"function"==typeof URL&&a instanceof URL)&&(a=fetch(a)),$(s,t);let{instance:o,module:n}=await M(await a,s);return U(o,n,i)}!function(a,t){let i;if(void 0!==e)return;void 0!==a&&(Object.getPrototypeOf(a)===Object.prototype?{module:a,memory:t,thread_stack_size:i}=a:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));let s=O();$(s,t),!(a instanceof WebAssembly.Module)&&(a=new WebAssembly.Module(a)),U(new WebAssembly.Instance(a,s),a,i)}({module:new WebAssembly.Module(Uint8Array.from(atob(self.WASM),e=>e.charCodeAt(0)))}),Error.stackTraceLimit=50;let P=new TextDecoder;function W(a,t,i){if(z("naiiveRewriter",i.origin)){let e="string"==typeof a?a:new TextDecoder().decode(a);return console.log("naiive"),function(e){return"string"!=typeof e&&(e=new TextDecoder().decode(e)),`
+ with (${x.config.globals.wrapfn}(globalThis)) {
+
+ ${e}
+
+ }
+ `}(e)}return a=function(a,t,i){let s;let o=performance.now();try{s="string"==typeof a?function(a,t,i,s){let o=_(a,e.__wbindgen_malloc,e.__wbindgen_realloc),n=I,r=_(t,e.__wbindgen_malloc,e.__wbindgen_realloc),c=I,l=_(i,e.__wbindgen_malloc,e.__wbindgen_realloc),u=I,d=e.rewrite_js(o,n,r,c,l,u,s);if(d[2])throw B(d[1]);return B(d[0])}(a,i.base.href,t||"(unknown)",x):function(a,t,i,s){let o=function(e,a){let t=a(1*e.length,1)>>>0;return E().set(e,t/1),I=e.length,t}(a,e.__wbindgen_malloc),n=I,r=_(t,e.__wbindgen_malloc,e.__wbindgen_realloc),c=I,l=_(i,e.__wbindgen_malloc,e.__wbindgen_realloc),u=I,d=e.rewrite_js_from_arraybuffer(o,n,r,c,l,u,s);if(d[2])throw B(d[1]);return B(d[0])}(new Uint8Array(a),i.base.href,t||"(unknown)",x)}catch(e){throw console.error("failed rewriting js for",t,e,a),e.message=`failed rewriting js for "${t}": ${e.message}`,e}let n=performance.now(),{js:r,errors:c,duration:l}=s;if(z("rewriterLogs",i.base))for(let e of c)console.error("oxc parse error",e);if(z("rewriterLogs",i.base)){let e;e=l<1n?"BLAZINGLY FAST":l<500n?"decent speed":"really slow";let a=(n-o-Number(l)).toFixed(2);console.log(`oxc rewrite for "${t||"(unknown)"}" was ${e} (${l}ms; ${a}ms overhead)`)}return"string"==typeof a?P.decode(r):r}(a,t,i)}function F(e,a){try{return new URL(e,a)}catch{return null}}function G(e){let a=new URL(e.substring(5));return"blob:"+location.origin+a.pathname}function H(e,a){if(e instanceof URL&&(e=e.toString()),e.startsWith("javascript:"))return"javascript:"+W(e.slice(11),"(javascript: url)",a);if(e.startsWith("blob:"))return location.origin+x.config.prefix+e;if(e.startsWith("data:"))return location.origin+x.config.prefix+e;else{if(e.startsWith("mailto:")||e.startsWith("about:"))return e;let t=a.base.href;t.startsWith("about:")&&(t=Q(self.location.href));let i=F(e,t);return i?location.origin+x.config.prefix+x.codec.encode(i.href):e}}function Q(e){e instanceof URL&&(e=e.toString());let a=location.origin+x.config.prefix;if(e.startsWith("javascript:"))return e;if(e.startsWith("blob:"))return e;if(e.startsWith(a+"blob:"))return e.substring(a.length);else if(e.startsWith(a+"data:"))return e.substring(a.length);else if(e.startsWith("mailto:")||e.startsWith("about:"))return e;else if(F(e))return x.codec.decode(e.slice((location.origin+x.config.prefix).length));else return e}function Z(e,a){return J("rewrite",e,a)}function J(e,a,t){return a=(a=(a=new String(a).toString()).replace(/url\(['"]?(.+?)['"]?\)/gm,(a,i)=>{let s="rewrite"===e?H(i.trim(),t):Q(i.trim());return a.replace(i,s)})).replace(/@import\s+(url\s*?\(.{0,9999}?\)|['"].{0,9999}?['"]|.{0,9999}?)($|\s|;)/gm,(a,i)=>a.replace(i,i.replace(/^(url\(['"]?|['"]|)(.+?)(['"]|['"]?\)|)$/gm,(a,i,s,o)=>{if(i.startsWith("url"))return a;let n="rewrite"===e?H(s.trim(),t):Q(s.trim());return`${i}${n}${o}`})))}let X=new Uint16Array('ᵁ<\xd5ıʊҝջאٵ۞ޢߖࠏઑඡ༉༦ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig耻\xc6䃆P耻&䀦cute耻\xc1䃁reve;䄂Āiyx}rc耻\xc2䃂;䐐r;쀀\ud835\udd04rave耻\xc0䃀pha;䎑acr;䄀d;橓Āgp\x9d\xa1on;䄄f;쀀\ud835\udd38plyFunction;恡ing耻\xc5䃅Ācs\xbe\xc3r;쀀\ud835\udc9cign;扔ilde耻\xc3䃃ml耻\xc4䃄Ѐaceforsu\xe5\xfb\xfeėĜĢħĪĀcr\xea\xf2kslash;或Ŷ\xf6\xf8;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀\ud835\udd05pf;쀀\ud835\udd39eve;䋘c\xf2ēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻\xa9䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻\xc7䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷\xf2ſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀\ud835\udc9epĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀\ud835\udd07Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀\ud835\udd3bƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲϏϢϸontourIntegra\xecȹoɴ\0\0ͻ\xbb͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔e\xe5ˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀\ud835\udc9frok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻\xd0䃐cute耻\xc9䃉ƀaiyӒӗӜron;䄚rc耻\xca䃊;䐭ot;䄖r;쀀\ud835\udd08rave耻\xc8䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀\ud835\udd3csilon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՚r;愰m;橳a;䎗ml耻\xcb䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲy;䐤r;쀀\ud835\udd09lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀\ud835\udd3dAll;戀riertrf;愱c\xf2JTabcdfgorstרׯؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀\ud835\udd0a;拙pf;쀀\ud835\udd3eeater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀\ud835\udca2;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅ\xf2کrok;䄦mpńېۘownHum\xf0įqual;扏܀EJOacdfgmnostuۺ۾܃܇ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻\xcd䃍Āiyܓܘrc耻\xce䃎;䐘ot;䄰r;愑rave耻\xcc䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lie\xf3ϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀\ud835\udd40a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻\xcf䃏ʀcfosuެ߂ߐĀiyޱrc;䄴;䐙r;쀀\ud835\udd0dpf;쀀\ud835\udd41ǣ߇\0ߌr;쀀\ud835\udca5rcy;䐈kcy;䐄HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶dil;䄶;䐚r;쀀\ud835\udd0epf;쀀\ud835\udd42cr;쀀\ud835\udca6րJTaceflmostࠥࠩࠬࡐࡣসে্ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४ĀnrࢃgleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ight\xe1Μs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀\ud835\udd0fĀ;eঽা拘ftarrow;懚idot;䄿ƀnpwਖਛgȀLRlr৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊight\xe1οight\xe1ϊf;쀀\ud835\udd43erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂ\xf2ࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼અઋp;椅y;䐜Ādl੯iumSpace;恟lintrf;愳r;쀀\ud835\udd10nusPlus;戓pf;쀀\ud835\udd44c\xf2੶;䎜ҀJacefostuણધભીଔଙඑඞcy;䐊cute;䅃ƀaeyહાron;䅇dil;䅅;䐝ƀgswે૰ativeƀMTV૨ediumSpace;怋hiĀcn૦\xeberyThi\xeetedĀGLଆreaterGreate\xf2ٳessLes\xf3ੈLine;䀊r;쀀\ud835\udd11ȀBnptଢନଷreak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪௫ఄ಄ದൡඅ櫬Āoungruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater;EFGLSTஶஷ扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨setĀ;Eೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀\ud835\udca9ilde耻\xd1䃑;䎝܀Eacdfgmoprstuvලෂෛ෧ขภยา฿ไlig;䅒cute耻\xd3䃓Āiyීrc耻\xd4䃔;䐞blac;䅐r;쀀\ud835\udd12rave耻\xd2䃒ƀaei෮ෲcr;䅌ga;䎩cron;䎟pf;쀀\ud835\udd46enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀\ud835\udcaaash耻\xd8䃘iŬืde耻\xd5䃕es;樷ml耻\xd6䃖erĀBP๋Āar๐๓r;怾acĀek๚;揞et;掴arenthesis;揜ҀacfhilorsງຊຏຒດຝະrtialD;戂y;䐟r;쀀\ud835\udd13i;䎦;䎠usMinus;䂱Āipຢອncareplan\xe5ڝf;愙Ȁ;eio຺ູ檻cedesȀ;EST່້扺qual;檯lantEqual;扼ilde;找me;怳Ādpuct;戏ortionĀ;aȥl;戝Āci༁༆r;쀀\ud835\udcab;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀\ud835\udd14pf;愚cr;쀀\ud835\udcacBEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻\xae䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r\xbbཹo;䎡ghtЀACDFTUVa࿁ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL憒ar;懥eftArrow;懄eiling;按oǵ\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀\ud835\udd16ortȀDLRUᄪᄴᄾᅉownArrow\xbbОeftArrow\xbb࢚ightArrow\xbbpArrow;憑gma;䎣allCircle;战pf;쀀\ud835\udd4aɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀\ud835\udcaear;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Th\xe1ྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et\xbbሓրHRSacfhiorsሾቄቕቱቶኟዂወዑORN耻\xde䃞ADE;愢ĀHcቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀\ud835\udd17ĀeiቻDzኀ\0ኇefore;戴a;䎘ĀcnኘkSpace;쀀 Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀\ud835\udd4bipleDot;惛Āctዖዛr;쀀\ud835\udcafrok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0ᐄᐊᐐĀcrዻጁute耻\xda䃚rĀ;oጇገ憟cir;楉rǣጓ\0y;䐎ve;䅬Āiyጞጣrc耻\xdb䃛;䐣blac;䅰r;쀀\ud835\udd18rave耻\xd9䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻on;䅲f;쀀\ud835\udd4cЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥own\xe1ϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀\ud835\udcb0ilde;䅨ml耻\xdc䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀\ud835\udd19pf;쀀\ud835\udd4dcr;쀀\ud835\udcb1dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀\ud835\udd1apf;쀀\ud835\udd4ecr;쀀\ud835\udcb2Ȁfiosᓋᓐᓒᓘr;쀀\ud835\udd1b;䎞pf;쀀\ud835\udd4fcr;쀀\ud835\udcb3ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻\xdd䃝Āiyᔉᔍrc;䅶;䐫r;쀀\ud835\udd1cpf;쀀\ud835\udd50cr;쀀\ud835\udcb4ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidt\xe8a;䎖r;愨pf;愤cr;쀀\ud835\udcb5ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻\xe1䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻\xe2䃢te肻\xb4̆;䐰lig耻\xe6䃦Ā;r\xb2ᖺ;쀀\ud835\udd1erave耻\xe0䃠ĀepᗊᗖĀfpᗏᗔsym;愵\xe8ᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e\xbbᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢\xbb\xb9arr;捼Āgpᙣᙧon;䄅f;쀀\ud835\udd52;Eaeiopᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;eᚒ\xf1ᚃing耻\xe5䃥ƀctyᚡᚦᚨr;쀀\ud835\udcb6;䀪mpĀ;eᚯ\xf1ʈilde耻\xe3䃣ml耻\xe4䃤Āciᛂᛈonin\xf4ɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰᝃᝈ០៦ᠹᡐᜍ᥈ᥰot;櫭ĀcrᛶkȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e\xbbᜭrkĀ;tbrk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓᝡᝤᝨausĀ;eĊĉptyv;榰s\xe9ᜌno\xf5ēƀahwᝯᝳ;䎲;愶een;扬r;쀀\ud835\udd1fgcostuvwឍឝឳេ៕៛ƀaiuបពរ\xf0ݠrc;旯p\xbb፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄e\xe5ᑄ\xe5ᒭarow;植ƀakoᠦᠵĀcn៲ᠣkƀlst֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀\ud835\udd53Ā;tᏋᡣom\xbbᏌtie;拈DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ;敛;敘;攘;攔;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģbar耻\xa6䂦Ȁceioᥑᥖᥚᥠr;쀀\ud835\udcb7mi;恏mĀ;elƀ;bhᥨᥩᥫ䁜;槅sub;柈ŬᥴlĀ;e怢t\xbbpƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭒\0᯽\0ᰌƀcprᦲute;䄇̀;abcdsᦿᧀᧄ᧕᧙戩nd;橄rcup;橉Āau᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁\xeeړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻\xe7䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻\xb8ƭptyv;榲t脀\xa2;eᨭᨮ䂢r\xe4Ʋr;쀀\ud835\udd20ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark\xbbᩈ;䏇r;Ecefms᩠ᩢᩫ᪤᪪旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖\xbbཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it\xbb᪼ˬ᫇\0ᬊonĀ;eᫍᫎ䀺Ā;q\xc7\xc6ɭ\0\0aĀ;t䀬;䁀ƀ;fl戁\xeeᅠeĀmxent\xbbe\xf3ɍǧ\0ᬇĀ;dኻᬂot;橭n\xf4Ɇƀfryᬐᬔᬗ;쀀\ud835\udd54o\xe4ɔ脀\xa9;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀\ud835\udcb8Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯delprvw᭠᭬᭷ᮂᮬᯔarrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;pᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒre\xe3᭳u\xe3᭵ee;拎edge;拏en耻\xa4䂤earrowĀlrᯮ᯳eft\xbbᮀight\xbbᮽe\xe4ᯝĀciᰁᰇonin\xf4Ƿnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰻᰿ᱝᱩᱵᲞᲬᲷᴍᵻᶑᶫᶻ᷆᷍r\xf2ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸\xf2ᄳhĀ;vᱚᱛ怐\xbbऊūᱡᱧarow;椏a\xe3̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻\xb0䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀\ud835\udd21arĀlrᲳᲵ\xbbࣜ\xbbသʀaegsv᳂᳖᳜᳠mƀ;oș᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀\xf7;o᳧ᳰntimes;拇n\xf8᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀\ud835\udd55ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedg\xe5\xfanƀadhᄮᵝᵧownarrow\xf3ᲃarpoonĀlrᵲᵶef\xf4Ჴigh\xf4ᲶŢᵿᶅkaro\xf7གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀\ud835\udcb9;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃r\xf2Щa\xf2ྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄĀDoḆᴴo\xf4ĀcsḎḔute耻\xe9䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻\xea䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀\ud835\udd22ƀ;rsṐṑṗ檚ave耻\xe8䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et\xbbẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀\ud835\udd56ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on\xbbớ;䏵ȀcsuvỪỳἋἣĀioữḱrc\xbbḮɩỹ\0\0ỻ\xedՈantĀglἂἆtr\xbbṝess\xbbṺƀaeiἒἚls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯o\xf4͒ĀahὉὋ;䎷耻\xf0䃰Āmrὓὗl耻\xeb䃫o;悬ƀcipὡὤὧl;䀡s\xf4ծĀeoὬὴctatio\xeeՙnential\xe5չৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotse\xf1Ṅy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀\ud835\udd23lig;耀filig;쀀fjƀaltῙῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀\ud835\udd57ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧\0耻\xbd䂽;慓耻\xbc䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻\xbe䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀\ud835\udcbbࢀEabcdefgijlnorstv₂₉₥₰₴⃰℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽ƀ;qsؾٌlan\xf4٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀\ud835\udd24Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox\xbbℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀\ud835\udd58Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqrⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0pro\xf8r;楸qĀlqؿ↖les\xf3₈i\xed٫Āen↣↭rtneqq;쀀≩︀\xc5↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽r\xf2ΠȀilmr⇐⇔⇗⇛rs\xf0ᒄf\xbb․il\xf4کĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it\xbb∊lip;怦con;抹r;쀀\ud835\udd25sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀\ud835\udd59bar;怕ƀclt≯≴≸r;쀀\ud835\udcbdas\xe8⇴rok;䄧Ābp⊂⊇ull;恃hen\xbbᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻\xed䃭ƀ;iyݱ⊰⊵rc耻\xee䃮;䐸Ācx⊼⊿y;䐵cl耻\xa1䂡ĀfrΟ⋉;쀀\ud835\udd26rave耻\xec䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓in\xe5ގar\xf4ܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝do\xf4⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙er\xf3ᕣ\xe3⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀\ud835\udd5aa;䎹uest耻\xbf䂿Āci⎊⎏r;쀀\ud835\udcbenʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻\xef䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀\ud835\udd27ath;䈷pf;쀀\ud835\udd5bǣ⏬\0⏱r;쀀\ud835\udcbfrcy;䑘kcy;䑔Ѐacfghjos␋␖␢ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀\ud835\udd28reen;䄸cy;䑅cy;䑜pf;쀀\ud835\udd5ccr;쀀\ud835\udcc0ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼r\xf2\xf2Εail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴ra\xeeࡌbda;䎻gƀ;dlࢎⓁⓃ;榑\xe5ࢎ;檅uo耻\xab䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝\xeb≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼\xecࢰ\xe2┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□a\xe9⓶arpoonĀdu▯▴own\xbbњp\xbb०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoon\xf3quigarro\xf7⇰hreetimes;拋ƀ;qs▋ও◺lan\xf4বʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋ppro\xf8Ⓠot;拖qĀgq♃♅\xf4উgt\xf2⒌\xf4ছi\xedলƀilr♕࣡♚sht;楼;쀀\ud835\udd29Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖r\xf2◁orne\xf2ᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che\xbb⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox\xbb⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽r\xebࣁgƀlmr⛿✍✔eftĀar০✇ight\xe1৲apsto;柼ight\xe1৽parrowĀlr✥✩ef\xf4⓭ight;憬ƀafl✶✹✽r;榅;쀀\ud835\udd5dus;樭imes;樴š❋❏st;戗\xe1ፎƀ;ef❗❘᠀旊nge\xbb❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇r\xf2ࢨorne\xf2ᶌarĀ;d➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀\ud835\udcc1mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹re\xe5◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀\xc5⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻\xaf䂯Āet⡗⡙;時Ā;e⡞⡟朠se\xbb⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻ow\xeeҌef\xf4ए\xf0Ꮡker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle\xbbᘦr;쀀\ud835\udd2ao;愧ƀcdn⢯⢴⣉ro耻\xb5䂵Ȁ;acdᑤ⢽⣀⣄s\xf4ᚧir;櫰ot肻\xb7Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛\xf2−\xf0ઁĀdp⣩⣮els;抧f;쀀\ud835\udd5eĀct⣸⣽r;쀀\ud835\udcc2pos\xbbᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la\xbb˞ute;䅄g;쀀∠⃒ʀ;Eiop⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉ro\xf8urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻\xa0ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸ui\xf6ୣĀei⩊⩎ar;椨\xedistĀ;sடr;쀀\ud835\udd2bȀEest⩦⩹⩼ƀ;qs⩭ƀ;qs⩴lan\xf4i\xed௪Ā;rஶ⪁\xbbஷƀAap⪊⪍⪑r\xf2⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚AEadest⪷⪺⪾⫂⫅⫶⫹r\xf2⥦;쀀≦̸rr;憚r;急Ȁ;fqs⫎⫣⫯tĀar⫔⫙rro\xf7⫁ightarro\xf7⪐ƀ;qs⪺⫪lan\xf4ౕĀ;sౕ⫴\xbbశi\xedౝĀ;rవ⫾iĀ;eచథi\xe4ඐĀpt⬌⬑f;쀀\ud835\udd5f膀\xac;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast⭕⭚⭟lle\xecl;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳u\xe5ಥĀ;cಘ⭸Ā;eಒ⭽\xf1ಘȀAait⮈⮋⮝⮧r\xf2⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow\xbb⮕riĀ;eೋೖchimpqu⮽⯍⯙⬄⯤⯯Ȁ;cerല⯆ഷ⯉u\xe5;쀀\ud835\udcc3ortɭ⬅\0\0⯖ar\xe1⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭\xe5\xe5ഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗ\xf1സȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇ\xecௗlde耻\xf1䃱\xe7ృiangleĀlrⱒⱜeftĀ;eచⱚ\xf1దightĀ;eೋⱥ\xf1Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻\xf3䃳ĀiyⴼⵅrĀ;cⵂ耻\xf4䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācrir;榿;쀀\ud835\udd2cͯ\0\0\0ⶂn;䋛ave耻\xf2䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕⶥⶨr\xf2᪀Āirⶠr;榾oss;榻n\xe5๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀\ud835\udd60ƀaelⷔǒr;榷rp;榹;adiosvⷪⷫⷮ⸈⸍⸐⸖戨r\xf2᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f\xbbⷿ耻\xaa䂪耻\xba䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧\xf2⸁ash耻\xf8䃸l;折iŬⸯ⸴de耻\xf5䃵esĀ;aǛ⸺s;樶ml耻\xf6䃶bar;挽ૡ\0\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ脀\xb6;l䂶le\xecЃɩ\0\0m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀\ud835\udd2dƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕ma\xf4੶ne;明ƀ;tv⺿⻀⻈䏀chfork\xbb´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎\xf6⇴sҀ;abcdemst⻳ᤈ⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻\xb1ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀\ud835\udd61nd耻\xa3䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷u\xe5໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾ppro\xf8⽃urlye\xf1໙\xf1໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨i\xedໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺\xf0⽵ƀdfp⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t⾴\xefrel;抰Āci⿀⿅r;쀀\ud835\udcc5;䏈ncsp;怈̀fiopsu⋢⿱r;쀀\ud835\udd2epf;쀀\ud835\udd62rime;恗cr;쀀\ud835\udcc6ƀaeo⿸〉〓tĀei々rnion\xf3ڰnt;樖stĀ;e【】䀿\xf1Ἑ\xf4༔ABHabcdefhilmnoprstuxけさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがr\xf2Ⴓ\xf2ϝail;検ar\xf2ᱥar;楤cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕i\xe3ᅮmptyv;榳gȀ;del࿑らるろ;榒;榥\xe5࿑uo耻\xbb䂻rր;abcfhlpstwガクシスゼゾダッデナp;極Ā;fゴs;椠;椳s;椞\xeb≝\xf0✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶al\xf3༞ƀabrョリヮr\xf2៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗\xec\xe2ヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜn\xe5Ⴛar\xf4ྩt;断ƀilrㅩဣㅮsht;楽;쀀\ud835\udd2fĀaoㅷㆆrĀduㅽㅿ\xbbѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘rrowĀ;tㆭa\xe9トarpoonĀduㆻㆿow\xeeㅾp\xbb႒eftĀah㇊㇐rrow\xf3arpoon\xf3Ցightarrows;應quigarro\xf7ニhreetimes;拌g;䋚ingdotse\xf1ἲƀahm㈍㈐㈓r\xf2a\xf2Ց;怏oustĀ;a㈞掱che\xbbmid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾r\xebဃƀafl㉇㉊㉎r;榆;쀀\ud835\udd63us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒ar\xf2㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀\ud835\udcc7Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠re\xe5ㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛qu\xef➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡u\xe5ᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓i\xedሄ;䑁otƀ;be㌴ᵇ㌵担;橦Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒\xeb∨Ā;oਸ਼t耻\xa7䂧i;䀻war;椩mĀin㍩\xf0nu\xf3\xf1t;朶rĀ;o㍶⁕쀀\ud835\udd30Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜i\xe4ᑤara\xec耻\xad䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;qኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲ar\xf2ᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetm\xe9㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀\ud835\udd64aĀdr㑍ЂesĀ;u㑔㑕晠it\xbb㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍\xf1ᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝\xf1ᆮƀ;afᅻ㒦ְrť㒫ֱ\xbbᅼar\xf2ᅈȀcemt㒹㒾㓂㓅r;쀀\ud835\udcc8tm\xee\xf1i\xec㐕ar\xe6ᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psilo\xeeỠh\xe9⺯s\xbb⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦ppro\xf8㋺urlye\xf1ᇾ\xf1ᇳƀaes㖂㖈㌛ppro\xf8㌚q\xf1㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻\xb9䂹耻\xb2䂲耻\xb3䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨\xeb∮Ā;oਫwar;椪lig耻\xdf䃟㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄r\xebƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀\ud835\udd31Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮ppro\xf8im\xbbኬs\xf0ኞĀas㚺㚮\xf0rn耻\xfe䃾Ǭ̟㛆⋧es膀\xd7;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀\xe1⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀\ud835\udd65rk;櫚\xe1㍢rime;怴ƀaip㜏㜒㝤d\xe5ቈadempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own\xbbᶻeftĀ;e⠀㜾\xf1म;扜ightĀ;e㊪㝋\xf1ၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀\ud835\udcc9;䑆cy;䑛rok;䅧Āio㞋㞎x\xf4headĀlr㞗㞠eftarro\xf7ࡏightarrow\xbbཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶r\xf2ϭar;楣Ācr㟜㟢ute耻\xfa䃺\xf2ᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻\xfb䃻;䑃ƀabh㠃㠆㠋r\xf2Ꭽlac;䅱a\xf2ᏃĀir㠓㠘sht;楾;쀀\ud835\udd32rave耻\xf9䃹š㠧㠱rĀlr㠬㠮\xbbॗ\xbbႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r\xbb㡆op;挏ri;旸Āal㡖㡚cr;䅫肻\xa8͉Āgp㡢㡦on;䅳f;쀀\ud835\udd66̀adhlsuᅋ㡸㡽፲㢑㢠own\xe1ᎳarpoonĀlr㢈㢌ef\xf4㠭igh\xf4㠯iƀ;hl㢙㢚㢜䏅\xbbᏺon\xbb㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r\xbb㢽op;挎ng;䅯ri;旹cr;쀀\ud835\udccaƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨\xbb᠓Āam㣯㣲r\xf2㢨l耻\xfc䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠r\xf2ϷarĀ;v㤦㤧櫨;櫩as\xe8ϡĀnr㤲㤷grt;榜eknprst㓣㥆㥋㥒㥝㥤㦖app\xe1␕othin\xe7ẖƀhir㓫⻈㥙op\xf4⾵Ā;hᎷ㥢\xefㆍĀiu㥩㥭gm\xe1㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟et\xe1㚜iangleĀlr㦪㦯eft\xbbथight\xbbၑy;䐲ash\xbbံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨa\xf2ᑩr;쀀\ud835\udd33tr\xe9㦮suĀbp㧯㧱\xbbജ\xbb൙pf;쀀\ud835\udd67ro\xf0tr\xe9㦴Ācu㨆㨋r;쀀\ud835\udccbĀbp㨐㨘nĀEe㦀㨖\xbb㥾nĀEe㦒㨞\xbb㦐igzag;榚cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀\ud835\udd34pf;쀀\ud835\udd68Ā;eᑹ㩦at\xe8ᑹcr;쀀\ud835\udcccૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜtr\xe9៑r;쀀\ud835\udd35ĀAa㪔㪗r\xf2σr\xf2৶;䎾ĀAa㪡㪤r\xf2θr\xf2৫a\xf0✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀\ud835\udd69im\xe5ឲĀAa㫇㫊r\xf2ώr\xf2ਁĀcq㫒ីr;쀀\ud835\udccdĀpt៖㫜r\xe9។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻\xfd䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻\xa5䂥r;쀀\ud835\udd36cy;䑗pf;쀀\ud835\udd6acr;쀀\ud835\udcceĀcm㬦㬩y;䑎l耻\xff䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡tr\xe6ᕟa;䎶r;쀀\ud835\udd37cy;䐶grarr;懝pf;쀀\ud835\udd6bcr;쀀\ud835\udccfĀjn㮅㮇;怍j;怌'.split("").map(e=>e.charCodeAt(0))),Y=new Uint16Array("Ȁaglq \x15\x18\x1bɭ\x0f\0\0\x12p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map(e=>e.charCodeAt(0))),K=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),ee=null!==(i=String.fromCodePoint)&&void 0!==i?i:function(e){let a="";return e>65535&&(e-=65536,a+=String.fromCharCode(e>>>10&1023|55296),e=56320|1023&e),a+=String.fromCharCode(e)};function ea(e){var a;return e>=55296&&e<=57343||e>1114111?65533:null!==(a=K.get(e))&&void 0!==a?a:e}!function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"}(s||(s={}));function et(e){return e>=s.ZERO&&e<=s.NINE}!function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"}(o||(o={}));!function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"}(n||(n={})),!function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"}(r||(r={}));class ei{constructor(e,a,t){this.decodeTree=e,this.emitCodePoint=a,this.errors=t,this.state=n.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=r.Strict}startEntity(e){this.decodeMode=e,this.state=n.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(e,a){switch(this.state){case n.EntityStart:if(e.charCodeAt(a)===s.NUM)return this.state=n.NumericStart,this.consumed+=1,this.stateNumericStart(e,a+1);return this.state=n.NamedEntity,this.stateNamedEntity(e,a);case n.NumericStart:return this.stateNumericStart(e,a);case n.NumericDecimal:return this.stateNumericDecimal(e,a);case n.NumericHex:return this.stateNumericHex(e,a);case n.NamedEntity:return this.stateNamedEntity(e,a)}}stateNumericStart(e,a){return a>=e.length?-1:(32|e.charCodeAt(a))===s.LOWER_X?(this.state=n.NumericHex,this.consumed+=1,this.stateNumericHex(e,a+1)):(this.state=n.NumericDecimal,this.stateNumericDecimal(e,a))}addToNumericResult(e,a,t,i){if(a!==t){let s=t-a;this.result=this.result*Math.pow(i,s)+parseInt(e.substr(a,s),i),this.consumed+=s}}stateNumericHex(e,a){let t=a;for(;a=s.UPPER_A)||!(i<=s.UPPER_F))&&(!(i>=s.LOWER_A)||!(i<=s.LOWER_F)))return this.addToNumericResult(e,t,a,16),this.emitNumericEntity(o,3);a+=1}return this.addToNumericResult(e,t,a,16),-1}stateNumericDecimal(e,a){let t=a;for(;a>14;for(;a>7,n=a&o.JUMP_TABLE;if(0===s)return 0!==n&&i===n?t:-1;if(n){let a=i-n;return a<0||a>=s?-1:e[t+a]-1}let r=t,c=r+s-1;for(;r<=c;){let a=r+c>>>1,t=e[a];if(ti))return e[a+s];c=a-1}}return -1}(t,i,this.treeIndex+Math.max(1,n),c),this.treeIndex<0)return 0===this.result||this.decodeMode===r.Attribute&&(0===n||function(e){var a;return e===s.EQUALS||(a=e)>=s.UPPER_A&&a<=s.UPPER_Z||a>=s.LOWER_A&&a<=s.LOWER_Z||et(a)}(c))?0:this.emitNotTerminatedNamedEntity();if(0!=(n=((i=t[this.treeIndex])&o.VALUE_LENGTH)>>14)){if(c===s.SEMI)return this.emitNamedEntityData(this.treeIndex,n,this.consumed+this.excess);this.decodeMode!==r.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return -1}emitNotTerminatedNamedEntity(){var e;let{result:a,decodeTree:t}=this,i=(t[a]&o.VALUE_LENGTH)>>14;return this.emitNamedEntityData(a,i,this.consumed),null===(e=this.errors)||void 0===e||e.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(e,a,t){let{decodeTree:i}=this;return this.emitCodePoint(1===a?i[e]&~o.VALUE_LENGTH:i[e+1],t),3===a&&this.emitCodePoint(i[e+2],t),t}end(){var e;switch(this.state){case n.NamedEntity:return 0!==this.result&&(this.decodeMode!==r.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case n.NumericDecimal:return this.emitNumericEntity(0,2);case n.NumericHex:return this.emitNumericEntity(0,3);case n.NumericStart:return null===(e=this.errors)||void 0===e||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case n.EntityStart:return 0}}}function es(e){let a="",t=new ei(e,e=>a+=ee(e));return function(e,i){let s=0,o=0;for(;(o=e.indexOf("&",o))>=0;){a+=e.slice(s,o),t.startEntity(i);let n=t.write(e,o+1);if(n<0){s=o+t.end();break}s=o+n,o=0===n?s+1:s}let n=a+e.slice(s);return a="",n}}let eo=es(X),en=es(Y);function er(e){return e===c.Space||e===c.NewLine||e===c.Tab||e===c.FormFeed||e===c.CarriageReturn}function ec(e){return e===c.Slash||e===c.Gt||er(e)}!function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Number=35]="Number",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"}(c||(c={})),!function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.BeforeSpecialT=23]="BeforeSpecialT",e[e.SpecialStartSequence=24]="SpecialStartSequence",e[e.InSpecialTag=25]="InSpecialTag",e[e.InEntity=26]="InEntity"}(l||(l={}));!function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"}(u||(u={}));let el={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])};class eu{constructor({xmlMode:e=!1,decodeEntities:a=!0},t){this.cbs=t,this.state=l.Text,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=l.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.xmlMode=e,this.decodeEntities=a,this.entityDecoder=new ei(e?Y:X,(e,a)=>this.emitCodePoint(e,a))}reset(){this.state=l.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=l.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=l.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===c.Amp&&this.startEntity()}stateSpecialStartSequence(e){let a=this.sequenceIndex===this.currentSequence.length;if(a?ec(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!a){this.sequenceIndex++;return}}else this.isSpecial=!1;this.sequenceIndex=0,this.state=l.InTagName,this.stateInTagName(e)}stateInSpecialTag(e){if(this.sequenceIndex===this.currentSequence.length){if(e===c.Gt||er(e)){let a=this.index-this.currentSequence.length;if(this.sectionStart=c.LowerA&&a<=c.LowerZ||a>=c.UpperA&&a<=c.UpperZ}startSpecial(e,a){this.isSpecial=!0,this.currentSequence=e,this.sequenceIndex=a,this.state=l.SpecialStartSequence}stateBeforeTagName(e){if(e===c.ExclamationMark)this.state=l.BeforeDeclaration,this.sectionStart=this.index+1;else if(e===c.Questionmark)this.state=l.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(e)){let a=32|e;this.sectionStart=this.index,this.xmlMode?this.state=l.InTagName:a===el.ScriptEnd[2]?this.state=l.BeforeSpecialS:a===el.TitleEnd[2]?this.state=l.BeforeSpecialT:this.state=l.InTagName}else e===c.Slash?this.state=l.BeforeClosingTagName:(this.state=l.Text,this.stateText(e))}stateInTagName(e){ec(e)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=l.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateBeforeClosingTagName(e){er(e)||(e===c.Gt?this.state=l.Text:(this.state=this.isTagStartChar(e)?l.InClosingTagName:l.InSpecialComment,this.sectionStart=this.index))}stateInClosingTagName(e){(e===c.Gt||er(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=l.AfterClosingTagName,this.stateAfterClosingTagName(e))}stateAfterClosingTagName(e){(e===c.Gt||this.fastForwardTo(c.Gt))&&(this.state=l.Text,this.sectionStart=this.index+1)}stateBeforeAttributeName(e){e===c.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=l.InSpecialTag,this.sequenceIndex=0):this.state=l.Text,this.sectionStart=this.index+1):e===c.Slash?this.state=l.InSelfClosingTag:!er(e)&&(this.state=l.InAttributeName,this.sectionStart=this.index)}stateInSelfClosingTag(e){e===c.Gt?(this.cbs.onselfclosingtag(this.index),this.state=l.Text,this.sectionStart=this.index+1,this.isSpecial=!1):!er(e)&&(this.state=l.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateInAttributeName(e){(e===c.Eq||ec(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=this.index,this.state=l.AfterAttributeName,this.stateAfterAttributeName(e))}stateAfterAttributeName(e){e===c.Eq?this.state=l.BeforeAttributeValue:e===c.Slash||e===c.Gt?(this.cbs.onattribend(u.NoValue,this.sectionStart),this.sectionStart=-1,this.state=l.BeforeAttributeName,this.stateBeforeAttributeName(e)):!er(e)&&(this.cbs.onattribend(u.NoValue,this.sectionStart),this.state=l.InAttributeName,this.sectionStart=this.index)}stateBeforeAttributeValue(e){e===c.DoubleQuote?(this.state=l.InAttributeValueDq,this.sectionStart=this.index+1):e===c.SingleQuote?(this.state=l.InAttributeValueSq,this.sectionStart=this.index+1):!er(e)&&(this.sectionStart=this.index,this.state=l.InAttributeValueNq,this.stateInAttributeValueNoQuotes(e))}handleInAttributeValue(e,a){e===a||!this.decodeEntities&&this.fastForwardTo(a)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(a===c.DoubleQuote?u.Double:u.Single,this.index+1),this.state=l.BeforeAttributeName):this.decodeEntities&&e===c.Amp&&this.startEntity()}stateInAttributeValueDoubleQuotes(e){this.handleInAttributeValue(e,c.DoubleQuote)}stateInAttributeValueSingleQuotes(e){this.handleInAttributeValue(e,c.SingleQuote)}stateInAttributeValueNoQuotes(e){er(e)||e===c.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(u.Unquoted,this.index),this.state=l.BeforeAttributeName,this.stateBeforeAttributeName(e)):this.decodeEntities&&e===c.Amp&&this.startEntity()}stateBeforeDeclaration(e){e===c.OpeningSquareBracket?(this.state=l.CDATASequence,this.sequenceIndex=0):this.state=e===c.Dash?l.BeforeComment:l.InDeclaration}stateInDeclaration(e){(e===c.Gt||this.fastForwardTo(c.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=l.Text,this.sectionStart=this.index+1)}stateInProcessingInstruction(e){(e===c.Gt||this.fastForwardTo(c.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=l.Text,this.sectionStart=this.index+1)}stateBeforeComment(e){e===c.Dash?(this.state=l.InCommentLike,this.currentSequence=el.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=l.InDeclaration}stateInSpecialComment(e){(e===c.Gt||this.fastForwardTo(c.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=l.Text,this.sectionStart=this.index+1)}stateBeforeSpecialS(e){let a=32|e;a===el.ScriptEnd[3]?this.startSpecial(el.ScriptEnd,4):a===el.StyleEnd[3]?this.startSpecial(el.StyleEnd,4):(this.state=l.InTagName,this.stateInTagName(e))}stateBeforeSpecialT(e){let a=32|e;a===el.TitleEnd[3]?this.startSpecial(el.TitleEnd,4):a===el.TextareaEnd[3]?this.startSpecial(el.TextareaEnd,4):(this.state=l.InTagName,this.stateInTagName(e))}startEntity(){this.baseState=this.state,this.state=l.InEntity,this.entityStart=this.index,this.entityDecoder.startEntity(this.xmlMode?r.Strict:this.baseState===l.Text||this.baseState===l.InSpecialTag?r.Legacy:r.Attribute)}stateInEntity(){let e=this.entityDecoder.write(this.buffer,this.index-this.offset);e>=0?(this.state=this.baseState,0===e&&(this.index=this.entityStart)):this.index=this.offset+this.buffer.length-1}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===l.Text||this.state===l.InSpecialTag&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(this.state===l.InAttributeValueDq||this.state===l.InAttributeValueSq||this.state===l.InAttributeValueNq)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index=e))this.state===l.InCommentLike?this.currentSequence===el.CdataEnd?this.cbs.oncdata(this.sectionStart,e,0):this.cbs.oncomment(this.sectionStart,e,0):this.state===l.InTagName||this.state===l.BeforeAttributeName||this.state===l.BeforeAttributeValue||this.state===l.AfterAttributeName||this.state===l.InAttributeName||this.state===l.InAttributeValueSq||this.state===l.InAttributeValueDq||this.state===l.InAttributeValueNq||this.state===l.InClosingTagName||this.cbs.ontext(this.sectionStart,e)}emitCodePoint(e,a){this.baseState!==l.Text&&this.baseState!==l.InSpecialTag?(this.sectionStart0&&o.has(this.stack[0]);){let e=this.stack.shift();null===(t=(a=this.cbs).onclosetag)||void 0===t||t.call(a,e,!0)}!this.isVoidElement(e)&&(this.stack.unshift(e),this.htmlMode&&(ef.has(e)?this.foreignContext.unshift(!0):ey.has(e)&&this.foreignContext.unshift(!1))),null===(s=(i=this.cbs).onopentagname)||void 0===s||s.call(i,e),this.cbs.onopentag&&(this.attribs={})}endOpenTag(e){var a,t;this.startIndex=this.openTagStart,this.attribs&&(null===(t=(a=this.cbs).onopentag)||void 0===t||t.call(a,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1}onclosetag(e,a){var t,i,s,o,n,r,c,l;this.endIndex=a;let u=this.getSlice(e,a);if(this.lowerCaseTagNames&&(u=u.toLowerCase()),this.htmlMode&&(ef.has(u)||ey.has(u))&&this.foreignContext.shift(),this.isVoidElement(u))this.htmlMode&&"br"===u&&(null===(o=(s=this.cbs).onopentagname)||void 0===o||o.call(s,"br"),null===(r=(n=this.cbs).onopentag)||void 0===r||r.call(n,"br",{},!0),null===(l=(c=this.cbs).onclosetag)||void 0===l||l.call(c,"br",!1));else{let e=this.stack.indexOf(u);if(-1!==e)for(let a=0;a<=e;a++){let s=this.stack.shift();null===(i=(t=this.cbs).onclosetag)||void 0===i||i.call(t,s,a!==e)}else this.htmlMode&&"p"===u&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=a+1}onselfclosingtag(e){this.endIndex=e,this.recognizeSelfClosing||this.foreignContext[0]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)}closeCurrentTag(e){var a,t;let i=this.tagname;this.endOpenTag(e),this.stack[0]===i&&(null===(t=(a=this.cbs).onclosetag)||void 0===t||t.call(a,i,!e),this.stack.shift())}onattribname(e,a){this.startIndex=e;let t=this.getSlice(e,a);this.attribname=this.lowerCaseAttributeNames?t.toLowerCase():t}onattribdata(e,a){this.attribvalue+=this.getSlice(e,a)}onattribentity(e){this.attribvalue+=ee(e)}onattribend(e,a){var t,i;this.endIndex=a,null===(i=(t=this.cbs).onattribute)||void 0===i||i.call(t,this.attribname,this.attribvalue,e===u.Double?'"':e===u.Single?"'":e===u.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(e){let a=e.search(ew),t=a<0?e:e.substr(0,a);return this.lowerCaseTagNames&&(t=t.toLowerCase()),t}ondeclaration(e,a){this.endIndex=a;let t=this.getSlice(e,a);if(this.cbs.onprocessinginstruction){let e=this.getInstructionName(t);this.cbs.onprocessinginstruction(`!${e}`,`!${t}`)}this.startIndex=a+1}onprocessinginstruction(e,a){this.endIndex=a;let t=this.getSlice(e,a);if(this.cbs.onprocessinginstruction){let e=this.getInstructionName(t);this.cbs.onprocessinginstruction(`?${e}`,`?${t}`)}this.startIndex=a+1}oncomment(e,a,t){var i,s,o,n;this.endIndex=a,null===(s=(i=this.cbs).oncomment)||void 0===s||s.call(i,this.getSlice(e,a-t)),null===(n=(o=this.cbs).oncommentend)||void 0===n||n.call(o),this.startIndex=a+1}oncdata(e,a,t){var i,s,o,n,r,c,l,u,d,m;this.endIndex=a;let h=this.getSlice(e,a-t);!this.htmlMode||this.options.recognizeCDATA?(null===(s=(i=this.cbs).oncdatastart)||void 0===s||s.call(i),null===(n=(o=this.cbs).ontext)||void 0===n||n.call(o,h),null===(c=(r=this.cbs).oncdataend)||void 0===c||c.call(r)):(null===(u=(l=this.cbs).oncomment)||void 0===u||u.call(l,`[CDATA[${h}]]`),null===(m=(d=this.cbs).oncommentend)||void 0===m||m.call(d)),this.startIndex=a+1}onend(){var e,a;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let e=0;e=this.buffers[0].length;)this.shiftBuffer();let t=this.buffers[0].slice(e-this.bufferOffset,a-this.bufferOffset);for(;a-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),t+=this.buffers[0].slice(0,a-this.bufferOffset);return t}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(e){var a,t;if(this.ended){null===(t=(a=this.cbs).onerror)||void 0===t||t.call(a,Error(".write() after done!"));return}this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++)}end(e){var a,t;if(this.ended){null===(t=(a=this.cbs).onerror)||void 0===t||t.call(a,Error(".end() after done!"));return}e&&this.write(e),this.ended=!0,this.tokenizer.end()}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex0?this.children[this.children.length-1]:null}get childNodes(){return this.children}set childNodes(e){this.children=e}}class eB extends eR{constructor(){super(...arguments),this.type=d.CDATA}get nodeType(){return 4}}class eM extends eR{constructor(){super(...arguments),this.type=d.Root}get nodeType(){return 9}}class eO extends eR{constructor(e,a,t=[],i="script"===e?d.Script:"style"===e?d.Style:d.Tag){super(t),this.name=e,this.attribs=a,this.type=i}get nodeType(){return 1}get tagName(){return this.name}set tagName(e){this.name=e}get attributes(){return Object.keys(this.attribs).map(e=>{var a,t;return{name:e,value:this.attribs[e],namespace:null===(a=this["x-attribsNamespace"])||void 0===a?void 0:a[e],prefix:null===(t=this["x-attribsPrefix"])||void 0===t?void 0:t[e]}})}}function e$(e,a=!1){let t;if(e.type===d.Text)t=new e_(e.data);else if(e.type===d.Comment)t=new eL(e.data);else{var i;if((i=e).type===d.Tag||i.type===d.Script||i.type===d.Style){let i=a?eU(e.children):[],s=new eO(e.name,{...e.attribs},i);i.forEach(e=>e.parent=s),null!=e.namespace&&(s.namespace=e.namespace),e["x-attribsNamespace"]&&(s["x-attribsNamespace"]={...e["x-attribsNamespace"]}),e["x-attribsPrefix"]&&(s["x-attribsPrefix"]={...e["x-attribsPrefix"]}),t=s}else{if(e.type===d.CDATA){let i=a?eU(e.children):[],s=new eB(i);i.forEach(e=>e.parent=s),t=s}else if(e.type===d.Root){let i=a?eU(e.children):[],s=new eM(i);i.forEach(e=>e.parent=s),e["x-mode"]&&(s["x-mode"]=e["x-mode"]),t=s}else{if(e.type===d.Directive){let a=new eD(e.name,e.data);null!=e["x-name"]&&(a["x-name"]=e["x-name"],a["x-publicId"]=e["x-publicId"],a["x-systemId"]=e["x-systemId"]),t=a}else throw Error(`Not implemented yet: ${e.type}`)}}}return t.startIndex=e.startIndex,t.endIndex=e.endIndex,null!=e.sourceCodeLocation&&(t.sourceCodeLocation=e.sourceCodeLocation),t}function eU(e){let a=e.map(e=>e$(e,!0));for(let e=1;e$\x80-\uFFFF]/g,eF=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),eG=null!=String.prototype.codePointAt?(e,a)=>e.codePointAt(a):(e,a)=>(64512&e.charCodeAt(a))==55296?(e.charCodeAt(a)-55296)*1024+e.charCodeAt(a+1)-56320+65536:e.charCodeAt(a);function eH(e){let a,t="",i=0;for(;null!==(a=eW.exec(e));){let s=a.index,o=e.charCodeAt(s),n=eF.get(o);void 0!==n?(t+=e.substring(i,s)+n,i=s+1):(t+=`${e.substring(i,s)}${eG(e,s).toString(16)};`,i=eW.lastIndex+=Number((64512&o)==55296))}return t+e.substr(i)}function eQ(e,a){return function(t){let i;let s=0,o="";for(;i=e.exec(t);)s!==i.index&&(o+=t.substring(s,i.index)),o+=a.get(i[0].charCodeAt(0)),s=i.index+1;return o+t.substring(s)}}eQ(/[&<>'"]/g,eF);let eZ=eQ(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),eJ=eQ(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]])),eX=/[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;function eY(e,a){let t,i="",s=0;for(;null!==(t=e.exec(a));){let o=t.index;i+=a.substring(s,o);let n=a.charCodeAt(o),r=htmlTrie.get(n);if("object"==typeof r){if(o+1[e.toLowerCase(),e])),e1=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),e0=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);function e3(e){return e.replace(/"/g,""")}let e2=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);function e5(e,a={}){let t="length"in e?e:[e],i="";for(let e=0;e`}(e);case eS:return function(e){return``}(e);case eT:return function(e){return``}(e);case eq:case eA:case eE:return function(e,a){var t;"foreign"===a.xmlMode&&(e.name=null!==(t=eK.get(e.name))&&void 0!==t?t:e.name,e.parent&&e8.has(e.parent.name)&&(a={...a,xmlMode:!1})),!a.xmlMode&&e4.has(e.name)&&(a={...a,xmlMode:"foreign"});let i=`<${e.name}`,s=function(e,a){var t;if(!e)return;let i=(null!==(t=a.encodeEntities)&&void 0!==t?t:a.decodeEntities)===!1?e3:a.xmlMode||"utf8"!==a.encodeEntities?eH:eZ;return Object.keys(e).map(t=>{var s,o;let n=null!==(s=e[t])&&void 0!==s?s:"";return("foreign"===a.xmlMode&&(t=null!==(o=e1.get(t))&&void 0!==o?o:t),a.emptyAttrs||a.xmlMode||""!==n)?`${t}="${i(n)}"`:t}).join(" ")}(e.attribs,a);return s&&(i+=` ${s}`),0===e.children.length&&(a.xmlMode?!1!==a.selfClosingTags:a.selfClosingTags&&e2.has(e.name))?(!a.xmlMode&&(i+=" "),i+="/>"):(i+=">",e.children.length>0&&(i+=e5(e.children,a)),(a.xmlMode||!e2.has(e.name))&&(i+=`${e.name}>`)),i}(e,a);case ez:return function(e,a){var t;let i=e.data||"";return(null!==(t=a.encodeEntities)&&void 0!==t?t:a.decodeEntities)!==!1&&!(!a.xmlMode&&e.parent&&e0.has(e.parent.name))&&(i=a.xmlMode||"utf8"!==a.encodeEntities?eH(i):eJ(i)),i}(e,a)}}(t[e],a);return i}let e8=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),e4=new Set(["svg","math"]);function e6(e){return Array.isArray(e)?e.map(e6).join(""):isTag(e)?"br"===e.name?"\n":e6(e.children):isCDATA(e)?e6(e.children):isText(e)?e.data:""}function e9(e){return Array.isArray(e)?e.map(e9).join(""):hasChildren(e)&&!isComment(e)?e9(e.children):isText(e)?e.data:""}function e7(e){return Array.isArray(e)?e.map(e7).join(""):hasChildren(e)&&(e.type===ElementType.Tag||isCDATA(e))?e7(e.children):isText(e)?e.data:""}function ae(e,a){return"function"==typeof a?t=>isTag(t)&&a(t.attribs[e]):t=>isTag(t)&&t.attribs[e]===a}function aa(e,a){return t=>e(t)||a(t)}function at(e){let a=Object.keys(e).map(a=>{let t=e[a];return Object.prototype.hasOwnProperty.call(null,a)?null[a](t):ae(a,t)});return 0===a.length?null:a.reduce(aa)}!function(e){e[e.DISCONNECTED=1]="DISCONNECTED",e[e.PRECEDING=2]="PRECEDING",e[e.FOLLOWING=4]="FOLLOWING",e[e.CONTAINS=8]="CONTAINS",e[e.CONTAINED_BY=16]="CONTAINED_BY"}(g||(g={}));function ai(e){return getElementsByTagName("media:content",e).map(e=>{let{attribs:a}=e,t={medium:a.medium,isDefault:!!a.isDefault};for(let e of null)a[e]&&(t[e]=a[e]);for(let e of null)a[e]&&(t[e]=parseInt(a[e],10));return a.expression&&(t.expression=a.expression),t})}function as(e,a){return getElementsByTagName(e,a,!0,1)[0]}function ao(e,a,t=!1){return textContent(getElementsByTagName(e,a,t,1)).trim()}function an(e,a,t,i,s=!1){let o=ao(t,i,s);o&&(e[a]=o)}function ar(e){return"rss"===e||"feed"===e||"rdf:RDF"===e}let ac=new TextEncoder;function al(e,a,t,i=!1){let s=new eP((e,a)=>a),o=new ev(s);o.write(e),o.end(),function e(a,t,i){if("base"===a.name&&void 0!==a.attribs.href&&(i.base=new URL(a.attribs.href,i.origin)),a.attribs){for(let e of au)for(let s in e){let o=e[s.toLowerCase()];if("function"!=typeof o&&("*"===o||o.includes(a.name))&&void 0!==a.attribs[s]){let o=a.attribs[s],n=e.fn(o,i,t);null===n?delete a.attribs[s]:a.attribs[s]=n,a.attribs[`scramjet-attr-${s}`]=o}}for(let[e,t]of Object.entries(a.attribs))ah.includes(e)&&(a.attribs[`scramjet-attr-${e}`]=t,a.attribs[e]=W(t,`(inline ${e} on element)`,i))}if("style"===a.name&&void 0!==a.children[0]&&(a.children[0].data=Z(a.children[0].data,i)),"script"===a.name&&/(application|text)\/javascript|module|importmap|undefined/.test(a.attribs.type)&&void 0!==a.children[0]){let e=a.children[0].data;a.attribs["scramjet-attr-script-source-src"]=am(ac.encode(e));e=e.replace(//g,""),a.children[0].data=W(e,"(inline script element)",i)}if("meta"===a.name&&void 0!==a.attribs["http-equiv"]){if("content-security-policy"===a.attribs["http-equiv"].toLowerCase())a={};else if("refresh"===a.attribs["http-equiv"]&&a.attribs.content.includes("url")){let e=a.attribs.content.split("url=");e[1]&&(e[1]=H(e[1].trim(),i)),a.attribs.content=e.join("url=")}}if(a.childNodes)for(let s in a.childNodes)a.childNodes[s]=e(a.childNodes[s],t,i);return a}(s.root,a,t);if(i){let e=function e(a){if(a.type===eE&&"head"===a.name)return a;if(a.childNodes)for(let t of a.childNodes){let a=e(t);if(a)return a}return null}(s.root);!e&&(e=new eO("head",{},[]),s.root.children.unshift(e));let t=JSON.stringify(a.dump()),i=`
+ self.COOKIE = ${t};
+ self.$scramjet.config = ${JSON.stringify(x.config)};
+ if ("document" in self && document?.currentScript) {
+ document.currentScript.remove();
+ }
+ `,o=e=>new eO("script",{src:e}),n=am(ac.encode(i));e.children.unshift(o(x.config.files.wasm),o(x.config.files.shared),o("data:application/javascript;base64,"+n),o(x.config.files.client))}return e5(s.root)}let au=[{fn:(e,a)=>H(e,a),src:["embed","script","img","iframe","frame","source","input","track"],href:["a","link","area","use","image"],data:["object"],action:["form"],formaction:["button","input","textarea","submit"],poster:["video"],"xlink:href":["image"]},{fn:(e,a)=>e.startsWith("blob:")?G(e):H(e,a),src:["video","audio"]},{fn:()=>"",integrity:["script","link"]},{fn:()=>null,nonce:"*",csp:["iframe"],credentialless:["iframe"]},{fn:(e,a)=>ad(e,a),srcset:["img","source"],imagesrcset:["link"]},{fn:(e,a,t)=>al(e,t,{origin:new URL(a.origin.origin),base:new URL(a.origin.origin)},!0),srcdoc:["iframe"]},{fn:(e,a)=>Z(e,a),style:"*"},{fn:e=>{if(["_parent","_top","_unfencedTop"].includes(e))return"_self"},target:["a","base"]}];function ad(e,a){return e.split(",").map(e=>e.trim()).map(e=>{let[t,...i]=e.split(/\s+/),s=H(t.trim(),a);return i.length>0?`${s} ${i.join(" ")}`:s}).join(", ")}function am(e){return btoa(Array.from(e,e=>String.fromCodePoint(e)).join(""))}let ah=["onbeforexrselect","onabort","onbeforeinput","onbeforematch","onbeforetoggle","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontentvisibilityautostatechange","oncontextlost","oncontextmenu","oncontextrestored","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","onformdata","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onresize","onscroll","onsecuritypolicyviolation","onseeked","onseeking","onselect","onslotchange","onstalled","onsubmit","onsuspend","ontimeupdate","ontoggle","onvolumechange","onwaiting","onwebkitanimationend","onwebkitanimationiteration","onwebkitanimationstart","onwebkittransitionend","onwheel","onauxclick","ongotpointercapture","onlostpointercapture","onpointerdown","onpointermove","onpointerrawupdate","onpointerup","onpointercancel","onpointerover","onpointerout","onpointerenter","onpointerleave","onselectstart","onselectionchange","onanimationend","onanimationiteration","onanimationstart","ontransitionrun","ontransitionstart","ontransitionend","ontransitioncancel","oncopy","oncut","onpaste","onscrollend","onscrollsnapchange","onscrollsnapchanging"],ag=["cross-origin-embedder-policy","cross-origin-opener-policy","cross-origin-resource-policy","content-security-policy","content-security-policy-report-only","expect-ct","feature-policy","origin-isolation","strict-transport-security","upgrade-insecure-requests","x-content-type-options","x-download-options","x-frame-options","x-permitted-cross-domain-policies","x-powered-by","x-xss-protection","clear-site-data"],ap=["location","content-location","referer"];function ab(e,a){return e.replace(/<(.*)>/gi,e=>H(e,a))}let ak=globalThis.fetch,af=globalThis.SharedWorker,ay=globalThis.localStorage,aw=globalThis.navigator.serviceWorker,av=MessagePort.prototype.postMessage,ax={prototype:{send:WebSocket.prototype.send},CLOSED:WebSocket.CLOSED,CLOSING:WebSocket.CLOSING,CONNECTING:WebSocket.CONNECTING,OPEN:WebSocket.OPEN};async function az(){let e=Promise.race([Promise.any((await self.clients.matchAll({type:"window",includeUncontrolled:!0})).map(async e=>{var a;let t;let i=await (a=e,t=new MessageChannel,new Promise(e=>{a.postMessage({type:"getPort",port:t.port2},[t.port2]),t.port1.onmessage=a=>{e(a.data)}}));return await aj(i),i})),new Promise((e,a)=>setTimeout(a,1e3,TypeError("timeout")))]);try{return await e}catch(e){if(e instanceof AggregateError)throw console.error("bare-mux: failed to get a bare-mux SharedWorker MessagePort as all clients returned an invalid MessagePort."),Error("All clients returned an invalid MessagePort.");return console.warn("bare-mux: failed to get a bare-mux SharedWorker MessagePort within 1s, retrying"),await az()}}function aj(e){let a=new MessageChannel,t=new Promise((e,t)=>{a.port1.onmessage=a=>{"pong"===a.data.type&&e()},setTimeout(t,1500)});return av.call(e,{message:{type:"ping"},port:a.port2},[a.port2]),t}function aS(e,a){let t=new af(e,"bare-mux-worker");return a&&aw.addEventListener("message",a=>{if("getPort"===a.data.type&&a.data.port){console.debug("bare-mux: recieved request for port from sw");let t=new af(e,"bare-mux-worker");av.call(a.data.port,t.port,[t.port])}}),t.port}let aq=null;class aA{constructor(e){this.channel=new BroadcastChannel("bare-mux"),e instanceof MessagePort||e instanceof Promise?this.port=e:this.createChannel(e,!0)}createChannel(e,a){if(self.clients)this.port=az(),this.channel.onmessage=e=>{"refreshPort"===e.data.type&&(this.port=az())};else if(e&&SharedWorker){if(!e.startsWith("/")&&!e.includes("://"))throw Error("Invalid URL. Must be absolute or start at the root.");this.port=aS(e,a),console.debug("bare-mux: setting localStorage bare-mux-path to",e),ay["bare-mux-path"]=e}else{if(!SharedWorker)throw Error("Unable to get a channel to the SharedWorker.");{let e=ay["bare-mux-path"];if(console.debug("bare-mux: got localStorage bare-mux-path:",e),!e)throw Error("Unable to get bare-mux workerPath from localStorage.");this.port=aS(e,a)}}}async sendMessage(e,a){this.port instanceof Promise&&(this.port=await this.port);try{await aj(this.port)}catch{return console.warn("bare-mux: Failed to get a ping response from the worker within 1.5s. Assuming port is dead."),this.createChannel(),await this.sendMessage(e,a)}let t=new MessageChannel,i=[t.port2,...a||[]],s=new Promise((e,a)=>{t.port1.onmessage=t=>{let i=t.data;"error"===i.type?a(i.error):e(i)}});return av.call(this.port,{message:e,port:t.port2},i),await s}}class aE extends EventTarget{constructor(e,a=[],t,i){super(),this.protocols=a,this.readyState=ax.CONNECTING,this.url=e.toString(),this.protocols=a;let s=e=>{this.protocols=e,this.readyState=ax.OPEN;let a=new Event("open");this.dispatchEvent(a)},o=async e=>{let a=new MessageEvent("message",{data:e});this.dispatchEvent(a)},n=(e,a)=>{this.readyState=ax.CLOSED;let t=new CloseEvent("close",{code:e,reason:a});this.dispatchEvent(t)},r=()=>{this.readyState=ax.CLOSED;let e=new Event("error");this.dispatchEvent(e)};this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{"open"===e.data.type?s(e.data.args[0]):"message"===e.data.type?o(e.data.args[0]):"close"===e.data.type?n(e.data.args[0],e.data.args[1]):"error"===e.data.type&&r()},t.sendMessage({type:"websocket",websocket:{url:e.toString(),protocols:a,requestHeaders:i,channel:this.channel.port2}},[this.channel.port2])}send(...e){if(this.readyState===ax.CONNECTING)throw new DOMException("Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.");let a=e[0];a.buffer&&(a=a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength)),av.call(this.channel.port1,{type:"data",data:a},a instanceof ArrayBuffer?[a]:[])}close(e,a){av.call(this.channel.port1,{type:"close",closeCode:e,closeReason:a})}}function aT(e,a,t){console.error(`error while processing '${t}': `,a),e.postMessage({type:"error",error:a})}let aI=["ws:","wss:"],aN=[101,204,205,304],aC=[301,302,303,307,308];console.debug("bare-mux: running v2.1.7 (build c56d286)");let a_=(e,a)=>{let t=e.slice(),i=[],s=a;for(;0!==t.length;){let e=t.pop(),a=e.toLowerCase();if(s.children.has("*")){if(s.children.has("!"+a))break;s=s.children.get("*")}else{if(!1===s.children.has(a))break;s=s.children.get(a)}i.unshift(e)}return i},aL="[a-fA-F\\d:]",aD=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${aL})|(?<=${aL})(?=\\s|$))`:"",aR="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",aB="[a-fA-F\\d]{1,4}",aM=`
+(?:
+(?:${aB}:){7}(?:${aB}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
+(?:${aB}:){6}(?:${aR}|:${aB}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
+(?:${aB}:){5}(?::${aR}|(?::${aB}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4
+(?:${aB}:){4}(?:(?::${aB}){0,1}:${aR}|(?::${aB}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4
+(?:${aB}:){3}(?:(?::${aB}){0,2}:${aR}|(?::${aB}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4
+(?:${aB}:){2}(?:(?::${aB}){0,3}:${aR}|(?::${aB}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4
+(?:${aB}:){1}(?:(?::${aB}){0,4}:${aR}|(?::${aB}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
+(?::(?:(?::${aB}){0,5}:${aR}|(?::${aB}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
+)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
+`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),aO=RegExp(`(?:^${aR}$)|(?:^${aM}$)`),a$=RegExp(`^${aR}$`),aU=RegExp(`^${aM}$`),aV=e=>e&&e.exact?aO:RegExp(`(?:${aD(e)}${aR}${aD(e)})|(?:${aD(e)}${aM}${aD(e)})`,"g");aV.v4=e=>e&&e.exact?a$:RegExp(`${aD(e)}${aR}${aD(e)}`,"g"),aV.v6=e=>e&&e.exact?aU:RegExp(`${aD(e)}${aM}${aD(e)}`,"g");let{toString:aP}=Object.prototype,aW={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"},aF=e=>({match:e[0],index:e.index,groups:e.slice(1),namedGroups:e.groups??{},input:e.input});function aG(e,a,{timeout:t}={}){try{return(function(e){let a=(...a)=>e(...a);return Object.defineProperty(a,"name",{value:`functionTimeout(${e.name||""})`,configurable:!0}),a})(()=>(function(e,a={}){var t;if(t=e,"[object RegExp]"!==aP.call(t))throw TypeError("Expected a RegExp instance");let i=Object.keys(aW).map(t=>("boolean"==typeof a[t]?a[t]:e[t])?aW[t]:"").join(""),s=new RegExp(a.source||e.source,i);return s.lastIndex="number"==typeof a.lastIndex?a.lastIndex:e.lastIndex,s})(e).test(a),{timeout:t})()}catch(e){throw e}}let aH={timeout:400},aQ=new TextEncoder;!function(e){e.Lax="LAX",e.Strict="STRICT"}(p||(p={})),!function(e){e.NoHostname="NO_HOSTNAME",e.DomainMaxLength="DOMAIN_MAX_LENGTH",e.LabelMinLength="LABEL_MIN_LENGTH",e.LabelMaxLength="LABEL_MAX_LENGTH",e.LabelInvalidCharacter="LABEL_INVALID_CHARACTER",e.LastLabelInvalid="LAST_LABEL_INVALID"}(b||(b={})),!function(e){e.ValidIp="VALID_IP",e.ValidDomain="VALID_DOMAIN",e.Error="ERROR"}(k||(k={}));let aZ=e=>({type:b.NoHostname,message:`The given input ${String(e)} does not look like a hostname.`,column:1}),aJ=(e,a)=>({type:b.DomainMaxLength,message:`Domain "${e}" is too long. Domain is ${a} octets long but should not be longer than 253.`,column:a}),aX=(e,a)=>{let t=e.length;return{type:b.LabelMinLength,message:`Label "${e}" is too short. Label is ${t} octets long but should be at least 1.`,column:a}},aY=(e,a)=>{let t=e.length;return{type:b.LabelMaxLength,message:`Label "${e}" is too long. Label is ${t} octets long but should not be longer than 63.`,column:a}},aK=(e,a,t)=>({type:b.LabelInvalidCharacter,message:`Label "${e}" contains invalid character "${a}" at column ${t}.`,column:t}),a1=(e,a)=>({type:b.LabelInvalidCharacter,message:`Last label "${e}" must not be all-numeric.`,column:a}),a0=(e,a={})=>{if("string"!=typeof e)return{type:k.Error,errors:[aZ(e)]};if(""===e)return{type:k.ValidDomain,domain:e,labels:[]};let t=e.replace(/^\[|]$/g,""),i=function(e){var a,t;if(!((a=e).length>45)&&aG(aV.v6({exact:!0}),a,aH))return 6;if(!((t=e).length>15)&&aG(aV.v4({exact:!0}),t,aH))return 4}(t);if(void 0!==i)return{type:k.ValidIp,ip:t,ipVersion:i};let s="."===e.charAt(e.length-1)?e.slice(0,-1):e,o=new TextEncoder().encode(s);if(o.length>253)return{type:k.Error,errors:[aJ(e,o.length)]};let n=s.split("."),{validation:r=p.Strict}=a,c=a3[r](n);return c.length>0?{type:k.Error,errors:c}:{type:k.ValidDomain,domain:e,labels:n}},a3={[p.Lax]:e=>{let a=[],t=1;for(let i of e){let e=aQ.encode(i);e.length<1?a.push(aX(i,t)):e.length>63&&a.push(aY(i,t)),t+=i.length+1}return a},[p.Strict]:e=>{let a;let t=[],i=1;for(let s of e){let e=/[^\da-z-]/i.exec(s);e&&t.push(aK(s,e[0],e.index+1)),s.startsWith("-")?t.push(aK(s,"-",i)):s.endsWith("-")&&t.push(aK(s,"-",i+s.length-1)),s.length<1?t.push(aX(s,i)):s.length>63&&t.push(aY(s,i)),i+=s.length+1,a=s}return void 0!==a&&!1===/[a-z-]/iu.test(a)&&t.push(a1(a,i-a.length-1)),t}},a2=Symbol("ROOT"),a5=Symbol("CHILD"),a8=()=>({type:a2,children:new Map}),a4=(e,a)=>{let t=e.children.get(a);return void 0===t&&(t={type:a5,label:a,children:new Map,parent:e},e.children.set(a,t)),t},a6=e=>{let a=a8(),t="",i=a,s=a,o=()=>{s=a4(i,t),t=""};for(let n=0;n":o(),i=s;continue;case"|":o(),i=a;continue;case"<":if(i.type===a2)throw Error(`Error in serialized trie at position ${n}: Cannot go up, current parent node is already root`);o(),i=i.parent;continue}t+=r}return""!==t&&o(),a},a9=["localhost","local","example","invalid","test"];!function(e){e.Invalid="INVALID",e.Ip="IP",e.Reserved="RESERVED",e.NotListed="NOT_LISTED",e.Listed="LISTED"}(f||(f={}));let a7=(e,a)=>a>=0&&a({subDomains:e.slice(0,Math.max(0,a)),domain:a7(e,a),topLevelDomains:e.slice(a+1)});var ta=v("799"),tt=v.n(ta);x.shared={util:{parseDomain:(e,i)=>{let s=a0(e,i);if(s.type===k.Error)return{type:f.Invalid,hostname:e,errors:s.errors};if(s.type===k.ValidIp)return{type:f.Ip,hostname:s.ip,ipVersion:s.ipVersion};let{labels:o,domain:n}=s;if(""===e||a9.includes(o[o.length-1]))return{type:f.Reserved,hostname:n,labels:o};a=null!=a?a:a6("ac>com,edu,gov,net,mil,orgnomco,net,org,sch,ac,gov,milairline,airport,accident-investigation,accident-prevention,aerobatic,aeroclub,aerodrome,agents,air-surveillance,air-traffic-control,aircraft,airtraffic,ambulance,association,author,ballooning,broker,caa,cargo,catering,certification,championship,charter,civilaviation,club,conference,consultant,consulting,control,council,crew,design,dgca,educator,emergency,engine,engineer,entertainment,equipment,exchange,express,federation,flight,freight,fuel,gliding,government,groundhandling,group,hanggliding,homebuilt,insurance,journal,journalist,leasing,logistics,magazine,maintenance,marketplace,media,microlight,modelling,navigation,parachuting,paragliding,passenger-association,pilot,press,production,recreation,repbody,res,research,rotorcraft,safety,scientist,services,show,skydiving,software,student,taxi,trader,trading,trainer,union,workinggroup,worksgov,com,org,net,educom,org,net,co,nomoff,com,net,orgcom,edu,gov,mil,net,orgco,com,commune,net,orged,gv,og,co,pb,itbet,com,coop,edu,gob,gov,int,mil,musica,mutual,net,org,senasa,ture164,in-addr,ip6,iris,uri,urngovac>sthcom,net,org,edu>act,catholic,nsw>schoolsqld,sa,tas,vic,wacomcom,net,int,gov,org,edu,info,pp,mil,name,pro,bizcom,edu,gov,mil,net,orgbiz,co,com,edu,gov,info,net,org,store,tv*acgova,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9com,edu,net,org,govco,com,edu,or,orgafrica,agro,architectes,assur,avocats,co,com,eco,econo,edu,info,loisirs,money,net,org,ote,resto,restaurant,tourism,univcom,edu,gov,net,orgcom,edu,gov,net,orgcom,edu,gob,int,org,net,mil,tv,web,academia,agro,arte,blog,bolivia,ciencia,cooperativa,democracia,deporte,ecologia,economia,empresa,indigena,industria,info,medicina,movimiento,musica,natural,nombre,noticias,patria,politica,profesional,plurinacional,pueblo,revista,salud,tecnologia,tksat,transporte,wiki
9guacu,abc,adm,adv,agr,aju,am,anani,aparecida,app,arq,art,ato,b,barueri,belem,bhz,bib,bio,blog,bmd,boavista,bsb,campinagrande,campinas,caxias,cim,cng,cnt,com,contagem,coop,coz,cri,cuiaba,curitiba,def,des,det,dev,ecn,eco,edu,emp,enf,eng,esp,etc,eti,far,feira,flog,floripa,fm,fnd,fortal,fot,foz,fst,g12,geo,ggf,goiania,gov>ac,al,am,ap,ba,ce,df,es,go,ma,mg,ms,mt,pa,pb,pe,pi,pr,rj,rn,ro,rr,rs,sc,se,sp,to*com,net,org,edu,govcom,edu,gov,net,orgco,orggov,mil,com,ofcom,net,org,edu,govab,bc,mb,nb,nf,nl,ns,nt,nu,on,pe,qc,sk,yk,gcgovorg,or,com,co,edu,ed,ac,net,go,asso,xn--aroport-bya,int,presse,md,gouv*,!wwwco,gob,gov,milco,com,gov,netac,com,edu,gov,net,org,mil,xn--55qx5d,xn--io0a7i,xn--od0alg,ah,bj,cq,fj,gd,gs,gz,gx,ha,hb,he,hi,hl,hn,jl,js,jx,ln,nm,nx,qh,sc,sd,sh,sn,sx,tj,xj,xz,yn,zj,hk,mo,twarts,com,edu,firm,gov,info,int,mil,net,nom,org,rec,webac,co,ed,fi,go,or,sacom,edu,org,net,gov,infcom,edu,int,nome,orgcom,edu,net,orggovac,biz,com,ekloges,gov,ltd,mil,net,org,press,pro,tmcom,net,org,edu,govart,com,edu,gob,gov,mil,net,org,sld,webart,asso,com,edu,gov,org,net,pol,soc,tmcom,info,net,fin,k12,med,pro,org,edu,gov,gob,miledu,gov,riik,lib,med,com,pri,aip,org,fiecom,edu,eun,gov,mil,name,net,org,sci*com,nom,org,gob,educom,gov,org,edu,biz,name,info,netalandac,biz,com,gov,info,mil,name,net,org,pro*com,edu,net,orgasso,com,gouv,nom,prd,tm,avoues,cci,greta,huissier-justiceedu,govcom,edu,gov,org,mil,net,pvtco,net,orgcom,edu,gov,org,milcom,ltd,gov,mod,edu,orgco,com,edu,net,orgac,com,edu,gov,org,netcom,net,mobi,edu,org,assocom,edu,net,org,govcom,edu,gob,ind,mil,net,orgcom,edu,gov,guam,info,net,org,webco,com,edu,gov,net,orgcom,edu,gov,idv,net,org,xn--55qx5d,xn--wcvs22d,xn--lcvr32d,xn--mxtq1m,xn--gmqw5a,xn--ciqpn,xn--gmq050i,xn--zf0avx,xn--io0a7i,xn--mk0axi,xn--od0alg,xn--od0aq3b,xn--tn0ag,xn--uc0atv,xn--uc0ay4acom,edu,org,net,mil,gob
iz,from,name,comcom,shop,firm,info,adult,net,pro,org,med,art,coop,pol,asso,edu,rel,gouv,persoco,info,org,priv,sport,tm,2000,agrar,bolt,casino,city,erotica,erotika,film,forum,games,hotel,ingatlan,jogasz,konyvelo,lakas,media,news,reklam,sex,shop,suli,szex,tozsde,utazas,videoac,biz,co,desa,go,mil,my,net,or,ponpes,sch,webgovac,co,gov,idf,k12,muni,net,orgxn--4dbgdty6c,xn--5dbhl8d,xn--8dbq2a,xn--hebda8bac,co>ltd,plc5g,6g,ac,ai,am,bihar,biz,business,ca,cn,co,com,coop,cs,delhi,dr,edu,er,firm,gen,gov,gujarat,ind,info,int,internet,io,me,mil,net,nic,org,pg,post,pro,res,travel,tv,uk,up,useucomgov,edu,mil,com,org,netac,co,gov,id,net,org,sch,xn--mgba3a4f16a,xn--mgba3a4franet,com,edu,gov,org,intgov,edu,abr,abruzzo,aosta-valley,aostavalley,bas,basilicata,cal,calabria,cam,campania,emilia-romagna,emiliaromagna,emr,friuli-v-giulia,friuli-ve-giulia,friuli-vegiulia,friuli-venezia-giulia,friuli-veneziagiulia,friuli-vgiulia,friuliv-giulia,friulive-giulia,friulivegiulia,friulivenezia-giulia,friuliveneziagiulia,friulivgiulia,fvg,laz,lazio,lig,liguria,lom,lombardia,lombardy,lucania,mar,marche,mol,molise,piedmont,piemonte,pmn,pug,puglia,sar,sardegna,sardinia,sic,sicilia,sicily,taa,tos,toscana,trentin-sud-tirol,xn--trentin-sd-tirol-rzb,trentin-sudtirol,xn--trentin-sdtirol-7vb,trentin-sued-tirol,trentin-suedtirol,trentino-a-adige,trentino-aadige,trentino-alto-adige,trentino-altoadige,trentino-s-tirol,trentino-stirol,trentino-sud-tirol,xn--trentino-sd-tirol-c3b,trentino-sudtirol,xn--trentino-sdtirol-szb,trentino-sued-tirol,trentino-suedtirol,trentino,trentinoa-adige,trentinoaadige,trentinoalto-adige,trentinoaltoadige,trentinos-tirol,trentinostirol,trentinosud-tirol,xn--trentinosd-tirol-rzb,trentinosudtirol,xn--trentinosdtirol-7vb,trentinosued-tirol,trentinosuedtirol,trentinsud-tirol,xn--trentinsd-tirol-6vb,trentinsudtirol,xn--trentinsdtirol-nsb,trentinsued-tirol,trentinsuedtirol,tuscany,umb,umbria,val-d-aosta,val-daosta,vald-aosta,valdaosta,valle-aosta,valle-d-aosta,valle-daosta,valleaosta,valled-aosta,valledaosta,vallee-aoste,xn--valle-aoste-ebb,vallee-d-aoste,xn--valle-d-aoste-ehb,valleeaoste,xn--valleaoste-e7a,valleedaoste,xn--valledaoste-ebb,vao,vda,ven,veneto,ag,agrigento,al,alessandria,alto-adige,altoadige,an,ancona,andria-barletta-trani,andria-trani-barletta,andriabarlettatrani,andriatranibarletta,ao,aosta,aoste,ap,aq,aquila,ar,arezzo,ascoli-piceno,ascolipiceno,asti,at,av,avellino,ba,balsan-sudtirol,xn--balsan-sdtirol-nsb,balsan-suedtirol,balsan,bari,barletta-trani-andria,barlettatraniandria,belluno,benevento,bergamo,bg,bi,biella,bl,bn,bo,bologna,bolzano-altoadige,bolzano,bozen-sudtirol,xn--bozen-sdtirol-2ob,bozen-suedtirol,bozen,br,brescia,brindisi,bs,bt,bulsan-sudtirol,xn--bulsan-sdtirol-nsb,bulsan-suedtirol,bulsan,bz,ca,cagliari,caltanissetta,campidano-medio,campidanomedio,campobasso,carbonia-iglesias,carboniaiglesias,carrara-massa,carraramassa,caserta,catania,catanzaro,cb,ce,cesena-forli,xn--cesena-forl-mcb,cesenaforli,xn--cesenaforl-i8a,ch,chieti,ci,cl,cn,co,como,cosenza,cr,cremona,crotone,cs,ct,cuneo,cz,dell-ogliastra,dellogliastra,en,enna,fc,fe,fermo,ferrara,fg,fi,firenze,florence,fm,foggia,forli-cesena,xn--forl-cesena-fcb,forlicesena,xn--forlcesena-c8a,fr,frosinone,ge,genoa,genova,go,gorizia,gr,grosseto,iglesias-carbonia,iglesiascarbonia,im,imperia,is,isernia,kr,la-spezia,laquila,laspezia,latina,lc,le,lecce,lecco,li,livorno,lo,lodi,lt,lu,lucca,macerata,mantova,massa-carrara,massacarrara,matera,mb,mc,me,medio-campidano,mediocampidano,messina,mi,milan,milano,mn,mo,modena,monza-brianza,monza-e-della-brianza,monza,monzabrianza,monzaebrianza,monzaedellabrianza,ms,mt,na,naples,napoli,no,novara,nu,nuoro,og,ogliastra,olbia-tempio,olbiatempio,or,oristano,ot,pa,padova,padua,palermo,parma,pavia,pc,pd,pe,perugia,pesaro-urbino,pesarourbino,pescara,pg,pi,piacenza,pisa,pistoia,pn,po,pordenone,potenza,pr,prato,pt,pu,pv,pz,ra,ragusa,ravenna,rc,re,reggio-calabria,reggio-emilia,reggiocalabria,reggioemilia,rg,ri,rieti,rimini,rm,rn,ro,roma,rome,rovigo,sa,salerno,sassari,savona,si,siena,siracusa,so,sondrio,sp,sr,ss,suedtirol,xn--sdtirol-n2a,sv,ta,taranto,te,tempio-olbia,tempioolbia,teramo,terni,tn,to,torino,tp,tr,trani-andria-barletta,trani-barletta-andria,traniandriabarletta,tranibarlettaandria,trapani,trento,treviso,trieste,ts,turin,tv,ud,udine,urbino-pesaro,urbinopesaro,va,varese,vb,vc,ve,venezia,venice,verbania,vercelli,verona,vi,vibo-valentia,vibovalentia,vicenza,viterbo,vr,vs,vt,vvco,net,org*com,org,net,edu,sch,gov,mil,nameac,ad,co,ed,go,gr,lg,ne,or,aichi>aisai,ama,anjo,asuke,chiryu,chita,fuso,gamagori,handa,hazu,hekinan,higashiura,ichinomiya,inazawa,inuyama,isshiki,iwakura,kanie,kariya,kasugai,kira,kiyosu,komaki,konan,kota,mihama,miyoshi,nishio,nisshin,obu,oguchi,oharu,okazaki,owariasahi,seto,shikatsu,shinshiro,shitara,tahara,takahama,tobishima,toei,togo,tokai,tokoname,toyoake,toyohashi,toyokawa,toyone,toyota,tsushima,yatomiakita,daisen,fujisato,gojome,hachirogata,happou,higashinaruse,honjo,honjyo,ikawa,kamikoani,kamioka,katagami,kazuno,kitaakita,kosaka,kyowa,misato,mitane,moriyoshi,nikaho,noshiro,odate,oga,ogata,semboku,yokote,yurihonjoaomori,gonohe,hachinohe,hashikami,hiranai,hirosaki,itayanagi,kuroishi,misawa,mutsu,nakadomari,noheji,oirase,owani,rokunohe,sannohe,shichinohe,shingo,takko,towada,tsugaru,tsurutaabiko,asahi,chonan,chosei,choshi,chuo,funabashi,futtsu,hanamigawa,ichihara,ichikawa,ichinomiya,inzai,isumi,kamagaya,kamogawa,kashiwa,katori,katsuura,kimitsu,kisarazu,kozaki,kujukuri,kyonan,matsudo,midori,mihama,minamiboso,mobara,mutsuzawa,nagara,nagareyama,narashino,narita,noda,oamishirasato,omigawa,onjuku,otaki,sakae,sakura,shimofusa,shirako,shiroi,shisui,sodegaura,sosa,tako,tateyama,togane,tohnosho,tomisato,urayasu,yachimata,yachiyo,yokaichiba,yokoshibahikari,yotsukaidoainan,honai,ikata,imabari,iyo,kamijima,kihoku,kumakogen,masaki,matsuno,matsuyama,namikata,niihama,ozu,saijo,seiyo,shikokuchuo,tobe,toon,uchiko,uwajima,yawatahamaechizen,eiheiji,fukui,ikeda,katsuyama,mihama,minamiechizen,obama,ohi,ono,sabae,sakai,takahama,tsuruga,wakasaashiya,buzen,chikugo,chikuho,chikujo,chikushino,chikuzen,chuo,dazaifu,fukuchi,hakata,higashi,hirokawa,hisayama,iizuka,inatsuki,kaho,kasuga,kasuya,kawara,keisen,koga,kurate,kurogi,kurume,minami,miyako,miyama,miyawaka,mizumaki,munakata,nakagawa,nakama,nishi,nogata,ogori,okagaki,okawa,oki,omuta,onga,onojo,oto,saigawa,sasaguri,shingu,shinyoshitomi,shonai,soeda,sue,tachiarai,tagawa,takata,toho,toyotsu,tsuiki,ukiha,umi,usui,yamada,yame,yanagawa,yukuhashiaizubange,aizumisato,aizuwakamatsu,asakawa,bandai,date,fukushima,furudono,futaba,hanawa,higashi,hirata,hirono,iitate,inawashiro,ishikawa,iwaki,izumizaki,kagamiishi,kaneyama,kawamata,kitakata,kitashiobara,koori,koriyama,kunimi,miharu,mishima,namie,nango,nishiaizu,nishigo,okuma,omotego,ono,otama,samegawa,shimogo,shirakawa,showa,soma,sukagawa,taishin,tamakawa,tanagura,tenei,yabuki,yamato,yamatsuri,yanaizu,yugawaanpachi,ena,gifu,ginan,godo,gujo,hashima,hichiso,hida,higashishirakawa,ibigawa,ikeda,kakamigahara,kani,kasahara,kasamatsu,kawaue,kitagata,mino,minokamo,mitake,mizunami,motosu,nakatsugawa,ogaki,sakahogi,seki,sekigahara,shirakawa,tajimi,takayama,tarui,toki,tomika,wanouchi,yamagata,yaotsu,yoroannaka,chiyoda,fujioka,higashiagatsuma,isesaki,itakura,kanna,kanra,katashina,kawaba,kiryu,kusatsu,maebashi,meiwa,midori,minakami,naganohara,nakanojo,nanmoku,numata,oizumi,ora,ota,shibukawa,shimonita,shinto,showa,takasaki,takayama,tamamura,tatebayashi,tomioka,tsukiyono,tsumagoi,ueno,yoshiokaasaminami,daiwa,etajima,fuchu,fukuyama,hatsukaichi,higashihiroshima,hongo,jinsekikogen,kaita,kui,kumano,kure,mihara,miyoshi,naka,onomichi,osakikamijima,otake,saka,sera,seranishi,shinichi,shobara,takeharaabashiri,abira,aibetsu,akabira,akkeshi,asahikawa,ashibetsu,ashoro,assabu,atsuma,bibai,biei,bifuka,bihoro,biratori,chippubetsu,chitose,date,ebetsu,embetsu,eniwa,erimo,esan,esashi,fukagawa,fukushima,furano,furubira,haboro,hakodate,hamatonbetsu,hidaka,higashikagura,higashikawa,hiroo,hokuryu,hokuto,honbetsu,horokanai,horonobe,ikeda,imakane,ishikari,iwamizawa,iwanai,kamifurano,kamikawa,kamishihoro,kamisunagawa,kamoenai,kayabe,kembuchi,kikonai,kimobetsu,kitahiroshima,kitami,kiyosato,koshimizu,kunneppu,kuriyama,kuromatsunai,kushiro,kutchan,kyowa,mashike,matsumae,mikasa,minamifurano,mombetsu,moseushi,mukawa,muroran,naie,nakagawa,nakasatsunai,nakatombetsu,nanae,nanporo,nayoro,nemuro,niikappu,niki,nishiokoppe,noboribetsu,numata,obihiro,obira,oketo,okoppe,otaru,otobe,otofuke,otoineppu,oumu,ozora,pippu,rankoshi,rebun,rikubetsu,rishiri,rishirifuji,saroma,sarufutsu,shakotan,shari,shibecha,shibetsu,shikabe,shikaoi,shimamaki,shimizu,shimokawa,shinshinotsu,shintoku,shiranuka,shiraoi,shiriuchi,sobetsu,sunagawa,taiki,takasu,takikawa,takinoue,teshikaga,tobetsu,tohma,tomakomai,tomari,toya,toyako,toyotomi,toyoura,tsubetsu,tsukigata,urakawa,urausu,uryu,utashinai,wakkanai,wassamu,yakumo,yoichiaioi,akashi,ako,amagasaki,aogaki,asago,ashiya,awaji,fukusaki,goshiki,harima,himeji,ichikawa,inagawa,itami,kakogawa,kamigori,kamikawa,kasai,kasuga,kawanishi,miki,minamiawaji,nishinomiya,nishiwaki,ono,sanda,sannan,sasayama,sayo,shingu,shinonsen,shiso,sumoto,taishi,taka,takarazuka,takasago,takino,tamba,tatsuno,toyooka,yabu,yashiro,yoka,yokawaami,asahi,bando,chikusei,daigo,fujishiro,hitachi,hitachinaka,hitachiomiya,hitachiota,ibaraki,ina,inashiki,itako,iwama,joso,kamisu,kasama,kashima,kasumigaura,koga,miho,mito,moriya,naka,namegata,oarai,ogawa,omitama,ryugasaki,sakai,sakuragawa,shimodate,shimotsuma,shirosato,sowa,suifu,takahagi,tamatsukuri,tokai,tomobe,tone,toride,tsuchiura,tsukuba,uchihara,ushiku,yachiyo,yamagata,yawara,yukianamizu,hakui,hakusan,kaga,kahoku,kanazawa,kawakita,komatsu,nakanoto,nanao,nomi,nonoichi,noto,shika,suzu,tsubata,tsurugi,uchinada,wajimafudai,fujisawa,hanamaki,hiraizumi,hirono,ichinohe,ichinoseki,iwaizumi,iwate,joboji,kamaishi,kanegasaki,karumai,kawai,kitakami,kuji,kunohe,kuzumaki,miyako,mizusawa,morioka,ninohe,noda,ofunato,oshu,otsuchi,rikuzentakata,shiwa,shizukuishi,sumita,tanohata,tono,yahaba,yamadaayagawa,higashikagawa,kanonji,kotohira,manno,marugame,mitoyo,naoshima,sanuki,tadotsu,takamatsu,tonosho,uchinomi,utazu,zentsujiakune,amami,hioki,isa,isen,izumi,kagoshima,kanoya,kawanabe,kinko,kouyama,makurazaki,matsumoto,minamitane,nakatane,nishinoomote,satsumasendai,soo,tarumizu,yusuiaikawa,atsugi,ayase,chigasaki,ebina,fujisawa,hadano,hakone,hiratsuka,isehara,kaisei,kamakura,kiyokawa,matsuda,minamiashigara,miura,nakai,ninomiya,odawara,oi,oiso,sagamihara,samukawa,tsukui,yamakita,yamato,yokosuka,yugawara,zama,zushiaki,geisei,hidaka,higashitsuno,ino,kagami,kami,kitagawa,kochi,mihara,motoyama,muroto,nahari,nakamura,nankoku,nishitosa,niyodogawa,ochi,okawa,otoyo,otsuki,sakawa,sukumo,susaki,tosa,tosashimizu,toyo,tsuno,umaji,yasuda,yusuharaamakusa,arao,aso,choyo,gyokuto,kamiamakusa,kikuchi,kumamoto,mashiki,mifune,minamata,minamioguni,nagasu,nishihara,oguni,ozu,sumoto,takamori,uki,uto,yamaga,yamato,yatsushiroayabe,fukuchiyama,higashiyama,ide,ine,joyo,kameoka,kamo,kita,kizu,kumiyama,kyotamba,kyotanabe,kyotango,maizuru,minami,minamiyamashiro,miyazu,muko,nagaokakyo,nakagyo,nantan,oyamazaki,sakyo,seika,tanabe,uji,ujitawara,wazuka,yamashina,yawataasahi,inabe,ise,kameyama,kawagoe,kiho,kisosaki,kiwa,komono,kumano,kuwana,matsusaka,meiwa,mihama,minamiise,misugi,miyama,nabari,shima,suzuka,tado,taiki,taki,tamaki,toba,tsu,udono,ureshino,watarai,yokkaichifurukawa,higashimatsushima,ishinomaki,iwanuma,kakuda,kami,kawasaki,marumori,matsushima,minamisanriku,misato,murata,natori,ogawara,ohira,onagawa,osaki,rifu,semine,shibata,shichikashuku,shikama,shiogama,shiroishi,tagajo,taiwa,tome,tomiya,wakuya,watari,yamamoto,zaoaya,ebino,gokase,hyuga,kadogawa,kawaminami,kijo,kitagawa,kitakata,kitaura,kobayashi,kunitomi,kushima,mimata,miyakonojo,miyazaki,morotsuka,nichinan,nishimera,nobeoka,saito,shiiba,shintomi,takaharu,takanabe,takazaki,tsunoachi,agematsu,anan,aoki,asahi,azumino,chikuhoku,chikuma,chino,fujimi,hakuba,hara,hiraya,iida,iijima,iiyama,iizuna,ikeda,ikusaka,ina,karuizawa,kawakami,kiso,kisofukushima,kitaaiki,komagane,komoro,matsukawa,matsumoto,miasa,minamiaiki,minamimaki,minamiminowa,minowa,miyada,miyota,mochizuki,nagano,nagawa,nagiso,nakagawa,nakano,nozawaonsen,obuse,ogawa,okaya,omachi,omi,ookuwa,ooshika,otaki,otari,sakae,sakaki,saku,sakuho,shimosuwa,shinanomachi,shiojiri,suwa,suzaka,takagi,takamori,takayama,tateshina,tatsuno,togakushi,togura,tomi,ueda,wada,yamagata,yamanouchi,yasaka,yasuokachijiwa,futsu,goto,hasami,hirado,iki,isahaya,kawatana,kuchinotsu,matsuura,nagasaki,obama,omura,oseto,saikai,sasebo,seihi,shimabara,shinkamigoto,togitsu,tsushima,unzenando,gose,heguri,higashiyoshino,ikaruga,ikoma,kamikitayama,kanmaki,kashiba,kashihara,katsuragi,kawai,kawakami,kawanishi,koryo,kurotaki,mitsue,miyake,nara,nosegawa,oji,ouda,oyodo,sakurai,sango,shimoichi,shimokitayama,shinjo,soni,takatori,tawaramoto,tenkawa,tenri,uda,yamatokoriyama,yamatotakada,yamazoe,yoshinoaga,agano,gosen,itoigawa,izumozaki,joetsu,kamo,kariwa,kashiwazaki,minamiuonuma,mitsuke,muika,murakami,myoko,nagaoka,niigata,ojiya,omi,sado,sanjo,seiro,seirou,sekikawa,shibata,tagami,tainai,tochio,tokamachi,tsubame,tsunan,uonuma,yahiko,yoita,yuzawabeppu,bungoono,bungotakada,hasama,hiji,himeshima,hita,kamitsue,kokonoe,kuju,kunisaki,kusu,oita,saiki,taketa,tsukumi,usa,usuki,yufuakaiwa,asakuchi,bizen,hayashima,ibara,kagamino,kasaoka,kibichuo,kumenan,kurashiki,maniwa,misaki,nagi,niimi,nishiawakura,okayama,satosho,setouchi,shinjo,shoo,soja,takahashi,tamano,tsuyama,wake,yakageaguni,ginowan,ginoza,gushikami,haebaru,higashi,hirara,iheya,ishigaki,ishikawa,itoman,izena,kadena,kin,kitadaito,kitanakagusuku,kumejima,kunigami,minamidaito,motobu,nago,naha,nakagusuku,nakijin,nanjo,nishihara,ogimi,okinawa,onna,shimoji,taketomi,tarama,tokashiki,tomigusuku,tonaki,urasoe,uruma,yaese,yomitan,yonabaru,yonaguni,zamamiabeno,chihayaakasaka,chuo,daito,fujiidera,habikino,hannan,higashiosaka,higashisumiyoshi,higashiyodogawa,hirakata,ibaraki,ikeda,izumi,izumiotsu,izumisano,kadoma,kaizuka,kanan,kashiwara,katano,kawachinagano,kishiwada,kita,kumatori,matsubara,minato,minoh,misaki,moriguchi,neyagawa,nishi,nose,osakasayama,sakai,sayama,sennan,settsu,shijonawate,shimamoto,suita,tadaoka,taishi,tajiri,takaishi,takatsuki,tondabayashi,toyonaka,toyono,yaoariake,arita,fukudomi,genkai,hamatama,hizen,imari,kamimine,kanzaki,karatsu,kashima,kitagata,kitahata,kiyama,kouhoku,kyuragi,nishiarita,ogi,omachi,ouchi,saga,shiroishi,taku,tara,tosu,yoshinogariarakawa,asaka,chichibu,fujimi,fujimino,fukaya,hanno,hanyu,hasuda,hatogaya,hatoyama,hidaka,higashichichibu,higashimatsuyama,honjo,ina,iruma,iwatsuki,kamiizumi,kamikawa,kamisato,kasukabe,kawagoe,kawaguchi,kawajima,kazo,kitamoto,koshigaya,kounosu,kuki,kumagaya,matsubushi,minano,misato,miyashiro,miyoshi,moroyama,nagatoro,namegawa,niiza,ogano,ogawa,ogose,okegawa,omiya,otaki,ranzan,ryokami,saitama,sakado,satte,sayama,shiki,shiraoka,soka,sugito,toda,tokigawa,tokorozawa,tsurugashima,urawa,warabi,yashio,yokoze,yono,yorii,yoshida,yoshikawa,yoshimiaisho,gamo,higashiomi,hikone,koka,konan,kosei,koto,kusatsu,maibara,moriyama,nagahama,nishiazai,notogawa,omihachiman,otsu,ritto,ryuoh,takashima,takatsuki,torahime,toyosato,yasuakagi,ama,gotsu,hamada,higashiizumo,hikawa,hikimi,izumo,kakinoki,masuda,matsue,misato,nishinoshima,ohda,okinoshima,okuizumo,shimane,tamayu,tsuwano,unnan,yakumo,yasugi,yatsukaarai,atami,fuji,fujieda,fujikawa,fujinomiya,fukuroi,gotemba,haibara,hamamatsu,higashiizu,ito,iwata,izu,izunokuni,kakegawa,kannami,kawanehon,kawazu,kikugawa,kosai,makinohara,matsuzaki,minamiizu,mishima,morimachi,nishiizu,numazu,omaezaki,shimada,shimizu,shimoda,shizuoka,susono,yaizu,yoshidaashikaga,bato,haga,ichikai,iwafune,kaminokawa,kanuma,karasuyama,kuroiso,mashiko,mibu,moka,motegi,nasu,nasushiobara,nikko,nishikata,nogi,ohira,ohtawara,oyama,sakura,sano,shimotsuke,shioya,takanezawa,tochigi,tsuga,ujiie,utsunomiya,yaitaaizumi,anan,ichiba,itano,kainan,komatsushima,matsushige,mima,minami,miyoshi,mugi,nakagawa,naruto,sanagochi,shishikui,tokushima,wajikiadachi,akiruno,akishima,aogashima,arakawa,bunkyo,chiyoda,chofu,chuo,edogawa,fuchu,fussa,hachijo,hachioji,hamura,higashikurume,higashimurayama,higashiyamato,hino,hinode,hinohara,inagi,itabashi,katsushika,kita,kiyose,kodaira,koganei,kokubunji,komae,koto,kouzushima,kunitachi,machida,meguro,minato,mitaka,mizuho,musashimurayama,musashino,nakano,nerima,ogasawara,okutama,ome,oshima,ota,setagaya,shibuya,shinagawa,shinjuku,suginami,sumida,tachikawa,taito,tama,toshimachizu,hino,kawahara,koge,kotoura,misasa,nanbu,nichinan,sakaiminato,tottori,wakasa,yazu,yonagoasahi,fuchu,fukumitsu,funahashi,himi,imizu,inami,johana,kamiichi,kurobe,nakaniikawa,namerikawa,nanto,nyuzen,oyabe,taira,takaoka,tateyama,toga,tonami,toyama,unazuki,uozu,yamadaarida,aridagawa,gobo,hashimoto,hidaka,hirogawa,inami,iwade,kainan,kamitonda,katsuragi,kimino,kinokawa,kitayama,koya,koza,kozagawa,kudoyama,kushimoto,mihama,misato,nachikatsuura,shingu,shirahama,taiji,tanabe,wakayama,yuasa,yuraasahi,funagata,higashine,iide,kahoku,kaminoyama,kaneyama,kawanishi,mamurogawa,mikawa,murayama,nagai,nakayama,nanyo,nishikawa,obanazawa,oe,oguni,ohkura,oishida,sagae,sakata,sakegawa,shinjo,shirataka,shonai,takahata,tendo,tozawa,tsuruoka,yamagata,yamanobe,yonezawa,yuzaabu,hagi,hikari,hofu,iwakuni,kudamatsu,mitou,nagato,oshima,shimonoseki,shunan,tabuse,tokuyama,toyota,ube,yuuchuo,doshi,fuefuki,fujikawa,fujikawaguchiko,fujiyoshida,hayakawa,hokuto,ichikawamisato,kai,kofu,koshu,kosuge,minami-alps,minobu,nakamichi,nanbu,narusawa,nirasaki,nishikatsura,oshino,otsuki,showa,tabayama,tsuru,uenohara,yamanakako,yamanashi*,!city*,!city*,!city*,!city*,!city*,!city*,!city<ac,co,go,info,me,mobi,ne,or,scorg,net,com,edu,gov,mil*edu,biz,net,org,gov,info,comorg,nom,gov,prd,tm,edu,mil,ass,com,coop,asso,presse,medecin,notaires,pharmaciens,veterinaire,gouvnet,org,edu,govcom,edu,gov,org,rep,traac,co,es,go,hs,kg,mil,ms,ne,or,pe,re,sc,busan,chungbuk,chungnam,daegu,daejeon,gangwon,gwangju,gyeongbuk,gyeonggi,gyeongnam,incheon,jeju,jeonbuk,jeonnam,seoul,ulsancom,edu,emb,gov,ind,net,orgcom,edu,net,orgorg,edu,net,gov,mil,comint,net,info,edu,gov,per,com,orgcom,edu,gov,net,orgcom,net,co,org,edu,govgov,sch,net,int,com,org,edu,ngo,soc,web,ltd,assn,grp,hotel,accom,edu,gov,org,netac,biz,co,edu,gov,info,net,org,scgovcom,edu,gov,org,mil,id,net,asn,confcom,net,gov,plc,edu,sch,med,org,idco,net,gov,org,ac,presstm,assoco,net,org,edu,ac,gov,its,privorg,nom,gov,prd,tm,edu,mil,com,cocom,org,net,edu,gov,inf,namecom,edu,gouv,gov,net,org,presse*gov,edu,orgcom,net,org,edu,govgovcom,edu,gov,net,orgcom,edu,net,orgcom,net,org,gov,ac,co,oraero,biz,com,coop,edu,gov,info,int,mil,museum,name,net,org,proac,biz,co,com,coop,edu,gov,int,museum,net,orgcom,org,gob,edu,netbiz,com,edu,gov,mil,name,net,orgac,adv,co,edu,gov,mil,net,orginfo,pro,name,school,or,dr,us,mx,ca,in,cc,tv,ws,mobi,co,com,orgasso,nomcom,net,per,rec,web,arts,firm,info,other,storecom,edu,gov,i,mil,mobi,name,net,org,schac,biz,co,com,edu,gob,in,info,int,mil,net,nom,org,webfhs,vgs,fylkesbibl,folkebibl,museum,idrett,priv,mil,stat,dep,kommune,herad,aa>gsgsgsgsgsgsgsgsgsgsgsgsgsgsgs