aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-25 13:46:51 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-25 13:46:51 -0500
commit64134b9e72d6d3aff19354f77d211c046bd9086b (patch)
treeeb83f6a5cb0ee27e0fc0b531964935a21fe677aa
parentfb08af01454c5dff7690a1cc86718d0d29d01092 (diff)
downloadteleterm-64134b9e72d6d3aff19354f77d211c046bd9086b.tar.gz
teleterm-64134b9e72d6d3aff19354f77d211c046bd9086b.zip
make logins persistent
so if the server knows we're logged in, don't show the login page
-rw-r--r--teleterm-web/src/config.rs1
-rw-r--r--teleterm-web/src/lib.rs11
-rw-r--r--teleterm-web/src/model.rs42
-rw-r--r--teleterm-web/src/protocol.rs5
-rw-r--r--teleterm-web/src/views/login.rs2
-rw-r--r--teleterm-web/src/views/page.rs12
-rw-r--r--teleterm/src/web.rs26
-rw-r--r--teleterm/src/web/login.rs14
-rw-r--r--teleterm/static/teleterm_web.js2
-rw-r--r--teleterm/static/teleterm_web_bg.wasmbin489964 -> 501175 bytes
10 files changed, 97 insertions, 18 deletions
diff --git a/teleterm-web/src/config.rs b/teleterm-web/src/config.rs
index d9308de..f671e10 100644
--- a/teleterm-web/src/config.rs
+++ b/teleterm-web/src/config.rs
@@ -9,6 +9,7 @@ extern "C" {
#[derive(Clone, Debug, serde::Deserialize)]
pub(crate) struct Config {
pub(crate) title: String,
+ pub(crate) username: Option<String>,
pub(crate) public_address: String,
}
diff --git a/teleterm-web/src/lib.rs b/teleterm-web/src/lib.rs
index cd0e158..37c7d0d 100644
--- a/teleterm-web/src/lib.rs
+++ b/teleterm-web/src/lib.rs
@@ -10,8 +10,8 @@ use crate::prelude::*;
#[allow(clippy::large_enum_variant)]
#[derive(Clone)]
enum Msg {
- Login(String),
- LoggedIn(seed::fetch::ResponseDataResult<()>),
+ Login,
+ LoggedIn(seed::fetch::ResponseDataResult<crate::protocol::LoginResponse>),
Refresh,
List(seed::fetch::ResponseDataResult<Vec<crate::protocol::Session>>),
StartWatching(String),
@@ -19,9 +19,12 @@ enum Msg {
StopWatching,
}
-fn init(_: Url, _orders: &mut impl Orders<Msg>) -> Init<crate::model::Model> {
+fn init(_: Url, orders: &mut impl Orders<Msg>) -> Init<crate::model::Model> {
log::trace!("init");
- Init::new(crate::model::Model::new(crate::config::Config::load()))
+ Init::new(crate::model::Model::new(
+ crate::config::Config::load(),
+ orders,
+ ))
}
fn update(
diff --git a/teleterm-web/src/model.rs b/teleterm-web/src/model.rs
index acd3e97..67cd984 100644
--- a/teleterm-web/src/model.rs
+++ b/teleterm-web/src/model.rs
@@ -35,11 +35,19 @@ pub(crate) struct Model {
}
impl Model {
- pub(crate) fn new(config: crate::config::Config) -> Self {
- Self {
+ pub(crate) fn new(
+ config: crate::config::Config,
+ orders: &mut impl Orders<crate::Msg>,
+ ) -> Self {
+ let logged_in = config.username.is_some();
+ let self_ = Self {
config,
state: State::Login,
+ };
+ if logged_in {
+ self_.list(orders);
}
+ self_
}
pub(crate) fn update(
@@ -48,14 +56,28 @@ impl Model {
orders: &mut impl Orders<crate::Msg>,
) {
match msg {
- crate::Msg::Login(username) => {
- log::debug!("login");
+ crate::Msg::Login => {
+ let username = seed::to_input(
+ &seed::document().get_element_by_id("username").unwrap(),
+ )
+ .value();
+ log::debug!("login for username {}", username);
self.login(&username, orders);
}
- crate::Msg::LoggedIn(..) => {
- log::debug!("logged in");
- orders.send_msg(crate::Msg::Refresh);
- }
+ crate::Msg::LoggedIn(response) => match response {
+ Ok(response) => {
+ self.config.username = response.username.clone();
+ if let Some(username) = response.username {
+ log::debug!("logged in as {}", username);
+ orders.send_msg(crate::Msg::Refresh);
+ } else {
+ log::error!("failed to log in");
+ }
+ }
+ Err(e) => {
+ log::error!("error logging in: {:?}", e);
+ }
+ },
crate::Msg::Refresh => {
log::debug!("refreshing");
self.list(orders);
@@ -135,6 +157,10 @@ impl Model {
&self.config.title
}
+ pub(crate) fn username(&self) -> Option<&str> {
+ self.config.username.as_ref().map(|s| s.as_str())
+ }
+
pub(crate) fn sessions(&self) -> &[crate::protocol::Session] {
if let State::List(sessions) = &self.state {
sessions
diff --git a/teleterm-web/src/protocol.rs b/teleterm-web/src/protocol.rs
index 4cbedf2..7b12f5e 100644
--- a/teleterm-web/src/protocol.rs
+++ b/teleterm-web/src/protocol.rs
@@ -24,3 +24,8 @@ pub(crate) struct Size {
pub rows: u16,
pub cols: u16,
}
+
+#[derive(Clone, Debug, serde::Deserialize)]
+pub(crate) struct LoginResponse {
+ pub username: Option<String>,
+}
diff --git a/teleterm-web/src/views/login.rs b/teleterm-web/src/views/login.rs
index 571098e..bf2ae9a 100644
--- a/teleterm-web/src/views/login.rs
+++ b/teleterm-web/src/views/login.rs
@@ -12,6 +12,6 @@ pub(crate) fn render(_: &crate::model::Model) -> Vec<Node<crate::Msg>> {
seed::input![
seed::attrs! { At::Type => "submit", At::Value => "login" }
],
- input_ev(Ev::Submit, crate::Msg::Login),
+ simple_ev(Ev::Submit, crate::Msg::Login),
]]
}
diff --git a/teleterm-web/src/views/page.rs b/teleterm-web/src/views/page.rs
index ed2f65c..1d2b5cd 100644
--- a/teleterm-web/src/views/page.rs
+++ b/teleterm-web/src/views/page.rs
@@ -3,8 +3,18 @@ use crate::prelude::*;
pub(crate) fn render(model: &crate::model::Model) -> Vec<Node<crate::Msg>> {
let mut view = vec![seed::h1![model.title()]];
+ if let Some(username) = model.username() {
+ view.push(seed::p![format!("logged in as {}", username)]);
+ } else {
+ view.push(seed::p!["not logged in"]);
+ }
+
if model.logging_in() {
- view.extend(super::login::render(model))
+ if model.username().is_some() {
+ view.push(seed::p!["loading..."]);
+ } else {
+ view.extend(super::login::render(model))
+ }
} else if model.choosing() {
view.extend(super::list::render(model))
} else if model.watching() {
diff --git a/teleterm/src/web.rs b/teleterm/src/web.rs
index 07ece12..c06cb71 100644
--- a/teleterm/src/web.rs
+++ b/teleterm/src/web.rs
@@ -22,6 +22,26 @@ struct SessionData {
username: Option<String>,
}
+#[derive(Debug, serde::Serialize)]
+struct WebConfig<'a> {
+ title: &'a str,
+ username: Option<&'a str>,
+ public_address: &'a str,
+}
+
+impl<'a> WebConfig<'a> {
+ fn new(config: &'a Config, session: &'a SessionData) -> Self {
+ Self {
+ title: &config.title,
+ username: session
+ .username
+ .as_ref()
+ .map(std::string::String::as_str),
+ public_address: &config.public_address,
+ }
+ }
+}
+
pub struct Server {
server: Box<dyn futures::Future<Item = (), Error = ()> + Send>,
}
@@ -116,7 +136,11 @@ fn serve_template(
) -> impl gotham::handler::Handler + Copy {
move |state| {
let config = Config::borrow_from(&state);
- let rendered = view::HANDLEBARS.render(name, &config).unwrap();
+ let session = gotham::middleware::session::SessionData::<
+ crate::web::SessionData,
+ >::borrow_from(&state);
+ let web_config = WebConfig::new(config, session);
+ let rendered = view::HANDLEBARS.render(name, &web_config).unwrap();
let response = hyper::Response::builder()
.header("Content-Type", content_type)
.body(hyper::Body::from(rendered))
diff --git a/teleterm/src/web/login.rs b/teleterm/src/web/login.rs
index a678b95..decc972 100644
--- a/teleterm/src/web/login.rs
+++ b/teleterm/src/web/login.rs
@@ -9,6 +9,11 @@ pub struct QueryParams {
username: Option<String>,
}
+#[derive(serde::Serialize)]
+struct Response {
+ username: Option<String>,
+}
+
pub fn run(
mut state: gotham::state::State,
) -> (gotham::state::State, hyper::Response<hyper::Body>) {
@@ -20,7 +25,12 @@ pub fn run(
crate::web::SessionData,
>::borrow_mut_from(&mut state);
- session.username = username;
+ session.username = username.clone();
- (state, hyper::Response::new(hyper::Body::from("{}")))
+ (
+ state,
+ hyper::Response::new(hyper::Body::from(
+ serde_json::to_string(&Response { username }).unwrap(),
+ )),
+ )
}
diff --git a/teleterm/static/teleterm_web.js b/teleterm/static/teleterm_web.js
index e6c6125..f211815 100644
--- a/teleterm/static/teleterm_web.js
+++ b/teleterm/static/teleterm_web.js
@@ -1 +1 @@
-let wasm;const heap=new Array(32);heap.fill(undefined);heap.push(undefined,null,true,false);let heap_next=heap.length;function addHeapObject(obj){if(heap_next===heap.length)heap.push(heap.length+1);const idx=heap_next;heap_next=heap[idx];heap[idx]=obj;return idx}function __wbg_elem_binding0(arg0,arg1,arg2){wasm.__wbg_function_table.get(55)(arg0,arg1,addHeapObject(arg2))}function __wbg_elem_binding1(arg0,arg1,arg2){wasm.__wbg_function_table.get(55)(arg0,arg1,addHeapObject(arg2))}function __wbg_elem_binding2(arg0,arg1,arg2){wasm.__wbg_function_table.get(55)(arg0,arg1,addHeapObject(arg2))}function __wbg_elem_binding3(arg0,arg1,arg2){wasm.__wbg_function_table.get(55)(arg0,arg1,addHeapObject(arg2))}function __wbg_elem_binding4(arg0,arg1){wasm.__wbg_function_table.get(40)(arg0,arg1)}function __wbg_elem_binding5(arg0,arg1,arg2){wasm.__wbg_function_table.get(55)(arg0,arg1,addHeapObject(arg2))}function __wbg_elem_binding6(arg0,arg1,arg2){wasm.__wbg_function_table.get(54)(arg0,arg1,arg2)}function __wbg_elem_binding7(arg0,arg1,arg2,arg3,arg4){wasm.__wbg_function_table.get(25)(arg0,arg1,addHeapObject(arg2),arg3,addHeapObject(arg4))}function __wbg_elem_binding8(arg0,arg1,arg2,arg3){wasm.__wbg_function_table.get(29)(arg0,arg1,addHeapObject(arg2),addHeapObject(arg3))}export function start(){wasm.start()}function getObject(idx){return heap[idx]}function dropObject(idx){if(idx<36)return;heap[idx]=heap_next;heap_next=idx}function takeObject(idx){const ret=getObject(idx);dropObject(idx);return ret}function notDefined(what){return()=>{throw new Error(`${what} is not defined`)}}let cachedTextDecoder=new TextDecoder("utf-8",{ignoreBOM:true,fatal:true});cachedTextDecoder.decode();let cachegetUint8Memory=null;function getUint8Memory(){if(cachegetUint8Memory===null||cachegetUint8Memory.buffer!==wasm.memory.buffer){cachegetUint8Memory=new Uint8Array(wasm.memory.buffer)}return cachegetUint8Memory}function getStringFromWasm(ptr,len){return cachedTextDecoder.decode(getUint8Memory().subarray(ptr,ptr+len))}let WASM_VECTOR_LEN=0;let cachedTextEncoder=new TextEncoder("utf-8");const encodeString=typeof cachedTextEncoder.encodeInto==="function"?function(arg,view){return cachedTextEncoder.encodeInto(arg,view)}:function(arg,view){const buf=cachedTextEncoder.encode(arg);view.set(buf);return{read:arg.length,written:buf.length}};function passStringToWasm(arg){let len=arg.length;let ptr=wasm.__wbindgen_malloc(len);const mem=getUint8Memory();let offset=0;for(;offset<len;offset++){const code=arg.charCodeAt(offset);if(code>127)break;mem[ptr+offset]=code}if(offset!==len){if(offset!==0){arg=arg.slice(offset)}ptr=wasm.__wbindgen_realloc(ptr,len,len=offset+arg.length*3);const view=getUint8Memory().subarray(ptr+offset,ptr+len);const ret=encodeString(arg,view);offset+=ret.written}WASM_VECTOR_LEN=offset;return ptr}let cachegetInt32Memory=null;function getInt32Memory(){if(cachegetInt32Memory===null||cachegetInt32Memory.buffer!==wasm.memory.buffer){cachegetInt32Memory=new Int32Array(wasm.memory.buffer)}return cachegetInt32Memory}function debugString(val){const type=typeof val;if(type=="number"||type=="boolean"||val==null){return`${val}`}if(type=="string"){return`"${val}"`}if(type=="symbol"){const description=val.description;if(description==null){return"Symbol"}else{return`Symbol(${description})`}}if(type=="function"){const name=val.name;if(typeof name=="string"&&name.length>0){return`Function(${name})`}else{return"Function"}}if(Array.isArray(val)){const length=val.length;let debug="[";if(length>0){debug+=debugString(val[0])}for(let i=1;i<length;i++){debug+=", "+debugString(val[i])}debug+="]";return debug}const builtInMatches=/\[object ([^\]]+)\]/.exec(toString.call(val));let className;if(builtInMatches.length>1){className=builtInMatches[1]}else{return toString.call(val)}if(className=="Object"){try{return"Object("+JSON.stringify(val)+")"}catch(_){return"Object"}}if(val instanceof Error){return`${val.name}: ${val.message}\n${val.stack}`}return className}function handleError(e){wasm.__wbindgen_exn_store(addHeapObject(e))}function isLikeNone(x){return x===undefined||x===null}let cachegetUint32Memory=null;function getUint32Memory(){if(cachegetUint32Memory===null||cachegetUint32Memory.buffer!==wasm.memory.buffer){cachegetUint32Memory=new Uint32Array(wasm.memory.buffer)}return cachegetUint32Memory}function init(module){if(typeof module==="undefined"){module=import.meta.url.replace(/\.js$/,"_bg.wasm")}let result;const imports={};imports.wbg={};imports.wbg.__wbindgen_object_drop_ref=function(arg0){takeObject(arg0)};imports.wbg.__wbg_clearTimeout_42a8676f07d366c5=typeof clearTimeout=="function"?clearTimeout:notDefined("clearTimeout");imports.wbg.__wbindgen_cb_drop=function(arg0){const obj=takeObject(arg0).original;if(obj.cnt--==1){obj.a=0;return true}const ret=false;return ret};imports.wbg.__wbindgen_string_new=function(arg0,arg1){const ret=getStringFromWasm(arg0,arg1);return addHeapObject(ret)};imports.wbg.__widl_f_error_1_=function(arg0){console.error(getObject(arg0))};imports.wbg.__wbg_new_59cb74e423758ede=function(){const ret=new Error;return addHeapObject(ret)};imports.wbg.__wbg_stack_558ba5917b466edd=function(arg0,arg1){const ret=getObject(arg1).stack;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__wbg_error_4bb6c2a97407129a=function(arg0,arg1){const v0=getStringFromWasm(arg0,arg1).slice();wasm.__wbindgen_free(arg0,arg1*1);console.error(v0)};imports.wbg.__wbindgen_debug_string=function(arg0,arg1){const ret=debugString(getObject(arg1));const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_location_Window=function(arg0){const ret=getObject(arg0).location;return addHeapObject(ret)};imports.wbg.__widl_f_pathname_Location=function(arg0,arg1){try{const ret=getObject(arg1).pathname;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1}catch(e){handleError(e)}};imports.wbg.__widl_f_hash_Location=function(arg0,arg1){try{const ret=getObject(arg1).hash;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1}catch(e){handleError(e)}};imports.wbg.__widl_f_search_Location=function(arg0,arg1){try{const ret=getObject(arg1).search;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1}catch(e){handleError(e)}};imports.wbg.__widl_instanceof_Element=function(arg0){const ret=getObject(arg0)instanceof Element;return ret};imports.wbg.__widl_f_set_attribute_Element=function(arg0,arg1,arg2,arg3,arg4){try{getObject(arg0).setAttribute(getStringFromWasm(arg1,arg2),getStringFromWasm(arg3,arg4))}catch(e){handleError(e)}};imports.wbg.__widl_f_node_type_Node=function(arg0){const ret=getObject(arg0).nodeType;return ret};imports.wbg.__widl_f_remove_attribute_Element=function(arg0,arg1,arg2){try{getObject(arg0).removeAttribute(getStringFromWasm(arg1,arg2))}catch(e){handleError(e)}};imports.wbg.__widl_f_append_child_Node=function(arg0,arg1){try{const ret=getObject(arg0).appendChild(getObject(arg1));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_insert_before_Node=function(arg0,arg1,arg2){try{const ret=getObject(arg0).insertBefore(getObject(arg1),getObject(arg2));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_cancel_animation_frame_Window=function(arg0,arg1){try{getObject(arg0).cancelAnimationFrame(arg1)}catch(e){handleError(e)}};imports.wbg.__widl_f_document_Window=function(arg0){const ret=getObject(arg0).document;return isLikeNone(ret)?0:addHeapObject(ret)};imports.wbg.__widl_instanceof_HTMLInputElement=function(arg0){const ret=getObject(arg0)instanceof HTMLInputElement;return ret};imports.wbg.__widl_instanceof_HTMLTextAreaElement=function(arg0){const ret=getObject(arg0)instanceof HTMLTextAreaElement;return ret};imports.wbg.__widl_instanceof_HTMLSelectElement=function(arg0){const ret=getObject(arg0)instanceof HTMLSelectElement;return ret};imports.wbg.__widl_instanceof_HTMLProgressElement=function(arg0){const ret=getObject(arg0)instanceof HTMLProgressElement;return ret};imports.wbg.__widl_instanceof_HTMLOptionElement=function(arg0){const ret=getObject(arg0)instanceof HTMLOptionElement;return ret};imports.wbg.__widl_instanceof_HTMLButtonElement=function(arg0){const ret=getObject(arg0)instanceof HTMLButtonElement;return ret};imports.wbg.__widl_instanceof_HTMLDataElement=function(arg0){const ret=getObject(arg0)instanceof HTMLDataElement;return ret};imports.wbg.__widl_instanceof_HTMLMeterElement=function(arg0){const ret=getObject(arg0)instanceof HTMLMeterElement;return ret};imports.wbg.__widl_instanceof_HTMLLIElement=function(arg0){const ret=getObject(arg0)instanceof HTMLLIElement;return ret};imports.wbg.__widl_instanceof_HTMLOutputElement=function(arg0){const ret=getObject(arg0)instanceof HTMLOutputElement;return ret};imports.wbg.__widl_instanceof_HTMLParamElement=function(arg0){const ret=getObject(arg0)instanceof HTMLParamElement;return ret};imports.wbg.__widl_f_type_HTMLInputElement=function(arg0,arg1){const ret=getObject(arg1).type;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_set_value_HTMLInputElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLTextAreaElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLSelectElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLProgressElement=function(arg0,arg1){getObject(arg0).value=arg1};imports.wbg.__widl_f_set_value_HTMLOptionElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLButtonElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLDataElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLMeterElement=function(arg0,arg1){getObject(arg0).value=arg1};imports.wbg.__widl_f_set_value_HTMLLIElement=function(arg0,arg1){getObject(arg0).value=arg1};imports.wbg.__widl_f_set_value_HTMLOutputElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLParamElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_instanceof_HTMLMenuItemElement=function(arg0){const ret=getObject(arg0)instanceof HTMLMenuItemElement;return ret};imports.wbg.__widl_f_set_checked_HTMLInputElement=function(arg0,arg1){getObject(arg0).checked=arg1!==0};imports.wbg.__widl_f_set_checked_HTMLMenuItemElement=function(arg0,arg1){getObject(arg0).checked=arg1!==0};imports.wbg.__widl_f_abort_AbortController=function(arg0){getObject(arg0).abort()};imports.wbg.__widl_f_close_WebSocket=function(arg0){try{getObject(arg0).close()}catch(e){handleError(e)}};imports.wbg.__widl_f_add_event_listener_with_callback_EventTarget=function(arg0,arg1,arg2,arg3){try{getObject(arg0).addEventListener(getStringFromWasm(arg1,arg2),getObject(arg3))}catch(e){handleError(e)}};imports.wbg.__widl_f_remove_event_listener_with_callback_EventTarget=function(arg0,arg1,arg2,arg3){try{getObject(arg0).removeEventListener(getStringFromWasm(arg1,arg2),getObject(arg3))}catch(e){handleError(e)}};imports.wbg.__widl_f_target_Event=function(arg0){const ret=getObject(arg0).target;return isLikeNone(ret)?0:addHeapObject(ret)};imports.wbg.__widl_f_value_HTMLInputElement=function(arg0,arg1){const ret=getObject(arg1).value;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_value_HTMLTextAreaElement=function(arg0,arg1){const ret=getObject(arg1).value;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_value_HTMLSelectElement=function(arg0,arg1){const ret=getObject(arg1).value;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_value_HTMLProgressElement=function(arg0){const ret=getObject(arg0).value;return ret};imports.wbg.__widl_f_value_HTMLOptionElement=function(arg0,arg1){const ret=getObject(arg1).value;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_value_HTMLButtonElement=function(arg0,arg1){const ret=getObject(arg1).value;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_value_HTMLDataElement=function(arg0,arg1){const ret=getObject(arg1).value;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_value_HTMLMeterElement=function(arg0){const ret=getObject(arg0).value;return ret};imports.wbg.__widl_f_value_HTMLLIElement=function(arg0){const ret=getObject(arg0).value;return ret};imports.wbg.__widl_f_value_HTMLOutputElement=function(arg0,arg1){const ret=getObject(arg1).value;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_value_HTMLParamElement=function(arg0,arg1){const ret=getObject(arg1).value;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__wbindgen_object_clone_ref=function(arg0){const ret=getObject(arg0);return addHeapObject(ret)};imports.wbg.__widl_f_new_AbortController=function(){try{const ret=new AbortController;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbg_new_de17f04ab3be4063=function(){const ret=new Object;return addHeapObject(ret)};imports.wbg.__widl_f_new_Headers=function(){try{const ret=new Headers;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbg_set_e11a72d9733dadef=function(arg0,arg1,arg2){try{const ret=Reflect.set(getObject(arg0),getObject(arg1),getObject(arg2));return ret}catch(e){handleError(e)}};imports.wbg.__widl_f_append_Headers=function(arg0,arg1,arg2,arg3,arg4){try{getObject(arg0).append(getStringFromWasm(arg1,arg2),getStringFromWasm(arg3,arg4))}catch(e){handleError(e)}};imports.wbg.__wbg_setTimeout_53c0997134972ce3=function(arg0,arg1){const ret=setTimeout(getObject(arg0),arg1);return ret};imports.wbg.__widl_f_signal_AbortController=function(arg0){const ret=getObject(arg0).signal;return addHeapObject(ret)};imports.wbg.__widl_f_fetch_with_str_and_init_Window=function(arg0,arg1,arg2,arg3){const ret=getObject(arg0).fetch(getStringFromWasm(arg1,arg2),getObject(arg3));return addHeapObject(ret)};imports.wbg.__widl_f_text_Response=function(arg0){try{const ret=getObject(arg0).text();return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_status_text_Response=function(arg0,arg1){const ret=getObject(arg1).statusText;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_status_Response=function(arg0){const ret=getObject(arg0).status;return ret};imports.wbg.__wbindgen_string_get=function(arg0,arg1){const obj=getObject(arg0);if(typeof obj!=="string")return 0;const ptr=passStringToWasm(obj);getUint32Memory()[arg1/4]=WASM_VECTOR_LEN;const ret=ptr;return ret};imports.wbg.__widl_f_create_element_Document=function(arg0,arg1,arg2){try{const ret=getObject(arg0).createElement(getStringFromWasm(arg1,arg2));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_create_element_ns_Document=function(arg0,arg1,arg2,arg3,arg4){try{const ret=getObject(arg0).createElementNS(arg1===0?undefined:getStringFromWasm(arg1,arg2),getStringFromWasm(arg3,arg4));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_create_text_node_Document=function(arg0,arg1,arg2){const ret=getObject(arg0).createTextNode(getStringFromWasm(arg1,arg2));return addHeapObject(ret)};imports.wbg.__widl_instanceof_Node=function(arg0){const ret=getObject(arg0)instanceof Node;return ret};imports.wbg.__widl_instanceof_HTMLElement=function(arg0){const ret=getObject(arg0)instanceof HTMLElement;return ret};imports.wbg.__widl_f_focus_HTMLElement=function(arg0){try{getObject(arg0).focus()}catch(e){handleError(e)}};imports.wbg.__widl_f_first_child_Node=function(arg0){const ret=getObject(arg0).firstChild;return isLikeNone(ret)?0:addHeapObject(ret)};imports.wbg.__widl_f_next_sibling_Node=function(arg0){const ret=getObject(arg0).nextSibling;return isLikeNone(ret)?0:addHeapObject(ret)};imports.wbg.__widl_f_remove_child_Node=function(arg0,arg1){try{const ret=getObject(arg0).removeChild(getObject(arg1));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_replace_child_Node=function(arg0,arg1,arg2){try{const ret=getObject(arg0).replaceChild(getObject(arg1),getObject(arg2));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_set_text_content_Node=function(arg0,arg1,arg2){getObject(arg0).textContent=arg1===0?undefined:getStringFromWasm(arg1,arg2)};imports.wbg.__wbg_resolve_04ca3cb0d333a4f0=function(arg0){const ret=Promise.resolve(getObject(arg0));return addHeapObject(ret)};imports.wbg.__widl_f_request_animation_frame_Window=function(arg0,arg1){try{const ret=getObject(arg0).requestAnimationFrame(getObject(arg1));return ret}catch(e){handleError(e)}};imports.wbg.__wbg_static_accessor_TELETERM_CONFIG_82484f76e33c0b8c=function(){const ret=TELETERM_CONFIG;return addHeapObject(ret)};imports.wbg.__wbindgen_json_serialize=function(arg0,arg1){const obj=getObject(arg1);const ret=JSON.stringify(obj===undefined?null:obj);const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_instanceof_HashChangeEvent=function(arg0){const ret=getObject(arg0)instanceof HashChangeEvent;return ret};imports.wbg.__widl_f_new_url_HashChangeEvent=function(arg0,arg1){const ret=getObject(arg1).newURL;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_instanceof_PopStateEvent=function(arg0){const ret=getObject(arg0)instanceof PopStateEvent;return ret};imports.wbg.__widl_f_state_PopStateEvent=function(arg0){const ret=getObject(arg0).state;return addHeapObject(ret)};imports.wbg.__widl_f_closest_Element=function(arg0,arg1,arg2){try{const ret=getObject(arg0).closest(getStringFromWasm(arg1,arg2));return isLikeNone(ret)?0:addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_tag_name_Element=function(arg0,arg1){const ret=getObject(arg1).tagName;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_get_attribute_Element=function(arg0,arg1,arg2,arg3){const ret=getObject(arg1).getAttribute(getStringFromWasm(arg2,arg3));const ptr0=isLikeNone(ret)?0:passStringToWasm(ret);const len0=WASM_VECTOR_LEN;const ret0=ptr0;const ret1=len0;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_prevent_default_Event=function(arg0){getObject(arg0).preventDefault()};imports.wbg.__wbindgen_json_parse=function(arg0,arg1){const ret=JSON.parse(getStringFromWasm(arg0,arg1));return addHeapObject(ret)};imports.wbg.__widl_f_history_Window=function(arg0){try{const ret=getObject(arg0).history;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_push_state_with_url_History=function(arg0,arg1,arg2,arg3,arg4,arg5){try{getObject(arg0).pushState(getObject(arg1),getStringFromWasm(arg2,arg3),arg4===0?undefined:getStringFromWasm(arg4,arg5))}catch(e){handleError(e)}};imports.wbg.__widl_f_get_attribute_names_Element=function(arg0){const ret=getObject(arg0).getAttributeNames();return addHeapObject(ret)};imports.wbg.__wbg_forEach_e651488daf2c21cc=function(arg0,arg1,arg2){const state0={a:arg1,b:arg2};const cb0=(arg0,arg1,arg2)=>{const a=state0.a;state0.a=0;try{return __wbg_elem_binding7(a,state0.b,arg0,arg1,arg2)}finally{state0.a=a}};try{getObject(arg0).forEach(cb0)}finally{state0.a=state0.b=0}};imports.wbg.__widl_f_namespace_uri_Element=function(arg0,arg1){const ret=getObject(arg1).namespaceURI;const ptr0=isLikeNone(ret)?0:passStringToWasm(ret);const len0=WASM_VECTOR_LEN;const ret0=ptr0;const ret1=len0;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_child_nodes_Node=function(arg0){const ret=getObject(arg0).childNodes;return addHeapObject(ret)};imports.wbg.__widl_f_length_NodeList=function(arg0){const ret=getObject(arg0).length;return ret};imports.wbg.__widl_f_get_NodeList=function(arg0,arg1){const ret=getObject(arg0)[arg1>>>0];return isLikeNone(ret)?0:addHeapObject(ret)};imports.wbg.__widl_f_text_content_Node=function(arg0,arg1){const ret=getObject(arg1).textContent;const ptr0=isLikeNone(ret)?0:passStringToWasm(ret);const len0=WASM_VECTOR_LEN;const ret0=ptr0;const ret1=len0;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_new_WebSocket=function(arg0,arg1){try{const ret=new WebSocket(getStringFromWasm(arg0,arg1));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_set_onopen_WebSocket=function(arg0,arg1){getObject(arg0).onopen=getObject(arg1)};imports.wbg.__wbindgen_cb_forget=function(arg0){takeObject(arg0)};imports.wbg.__widl_f_set_onclose_WebSocket=function(arg0,arg1){getObject(arg0).onclose=getObject(arg1)};imports.wbg.__widl_f_set_onmessage_WebSocket=function(arg0,arg1){getObject(arg0).onmessage=getObject(arg1)};imports.wbg.__widl_f_set_onerror_WebSocket=function(arg0,arg1){getObject(arg0).onerror=getObject(arg1)};imports.wbg.__widl_f_data_MessageEvent=function(arg0){const ret=getObject(arg0).data;return addHeapObject(ret)};imports.wbg.__widl_f_query_selector_Document=function(arg0,arg1,arg2){try{const ret=getObject(arg0).querySelector(getStringFromWasm(arg1,arg2));return isLikeNone(ret)?0:addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_get_element_by_id_Document=function(arg0,arg1,arg2){const ret=getObject(arg0).getElementById(getStringFromWasm(arg1,arg2));return isLikeNone(ret)?0:addHeapObject(ret)};imports.wbg.__wbindgen_throw=function(arg0,arg1){throw new Error(getStringFromWasm(arg0,arg1))};imports.wbg.__wbg_new_5e8d465c199e6ff3=function(arg0,arg1){const state0={a:arg0,b:arg1};const cb0=(arg0,arg1)=>{const a=state0.a;state0.a=0;try{return __wbg_elem_binding8(a,state0.b,arg0,arg1)}finally{state0.a=a}};try{const ret=new Promise(cb0);return addHeapObject(ret)}finally{state0.a=state0.b=0}};imports.wbg.__wbg_call_34f87007c5d2a397=function(arg0,arg1,arg2){try{const ret=getObject(arg0).call(getObject(arg1),getObject(arg2));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbg_then_486e2e2b1fb1bbf4=function(arg0,arg1,arg2){const ret=getObject(arg0).then(getObject(arg1),getObject(arg2));return addHeapObject(ret)};imports.wbg.__wbg_then_1fa2e92ee4bdbc93=function(arg0,arg1){const ret=getObject(arg0).then(getObject(arg1));return addHeapObject(ret)};imports.wbg.__wbg_globalThis_4fa2faeae7a7a380=function(){try{const ret=globalThis.globalThis;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbg_self_ed02073ec1d8fef4=function(){try{const ret=self.self;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbg_window_356847be61f4a80f=function(){try{const ret=window.window;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbg_global_6580a67633b0dbc1=function(){try{const ret=global.global;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbindgen_is_undefined=function(arg0){const ret=getObject(arg0)===undefined;return ret};imports.wbg.__wbg_newnoargs_0c3c518a7f7c56bf=function(arg0,arg1){const ret=new Function(getStringFromWasm(arg0,arg1));return addHeapObject(ret)};imports.wbg.__wbg_call_aa56d0132fec7569=function(arg0,arg1){try{const ret=getObject(arg0).call(getObject(arg1));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_instanceof_Window=function(arg0){const ret=getObject(arg0)instanceof Window;return ret};imports.wbg.__widl_f_debug_1_=function(arg0){console.debug(getObject(arg0))};imports.wbg.__widl_f_info_1_=function(arg0){console.info(getObject(arg0))};imports.wbg.__widl_f_log_1_=function(arg0){console.log(getObject(arg0))};imports.wbg.__widl_f_warn_1_=function(arg0){console.warn(getObject(arg0))};imports.wbg.__wbindgen_closure_wrapper723=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=arg0=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding3(a,state.b,arg0)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(41)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};imports.wbg.__wbindgen_closure_wrapper804=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=arg0=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding2(a,state.b,arg0)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(41)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};imports.wbg.__wbindgen_closure_wrapper612=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=arg0=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding1(a,state.b,arg0)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(41)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};imports.wbg.__wbindgen_closure_wrapper705=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=arg0=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding6(a,state.b,arg0)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(41)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};imports.wbg.__wbindgen_closure_wrapper502=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=()=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding4(a,state.b)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(41)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};imports.wbg.__wbindgen_closure_wrapper728=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=arg0=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding0(a,state.b,arg0)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(41)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};imports.wbg.__wbindgen_closure_wrapper731=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=arg0=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding5(a,state.b,arg0)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(41)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};if(typeof URL==="function"&&module instanceof URL||typeof module==="string"||typeof Request==="function"&&module instanceof Request){const response=fetch(module);if(typeof WebAssembly.instantiateStreaming==="function"){result=WebAssembly.instantiateStreaming(response,imports).catch(e=>{return response.then(r=>{if(r.headers.get("Content-Type")!="application/wasm"){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);return r.arrayBuffer()}else{throw e}}).then(bytes=>WebAssembly.instantiate(bytes,imports))})}else{result=response.then(r=>r.arrayBuffer()).then(bytes=>WebAssembly.instantiate(bytes,imports))}}else{result=WebAssembly.instantiate(module,imports).then(result=>{if(result instanceof WebAssembly.Instance){return{instance:result,module:module}}else{return result}})}return result.then(({instance:instance,module:module})=>{wasm=instance.exports;init.__wbindgen_wasm_module=module;wasm.__wbindgen_start();return wasm})}export default init;
+let wasm;const heap=new Array(32);heap.fill(undefined);heap.push(undefined,null,true,false);let heap_next=heap.length;function addHeapObject(obj){if(heap_next===heap.length)heap.push(heap.length+1);const idx=heap_next;heap_next=heap[idx];heap[idx]=obj;return idx}function __wbg_elem_binding0(arg0,arg1,arg2){wasm.__wbg_function_table.get(61)(arg0,arg1,addHeapObject(arg2))}function __wbg_elem_binding1(arg0,arg1,arg2){wasm.__wbg_function_table.get(61)(arg0,arg1,addHeapObject(arg2))}function __wbg_elem_binding2(arg0,arg1,arg2){wasm.__wbg_function_table.get(61)(arg0,arg1,addHeapObject(arg2))}function __wbg_elem_binding3(arg0,arg1){wasm.__wbg_function_table.get(39)(arg0,arg1)}function __wbg_elem_binding4(arg0,arg1,arg2){wasm.__wbg_function_table.get(61)(arg0,arg1,addHeapObject(arg2))}function __wbg_elem_binding5(arg0,arg1,arg2){wasm.__wbg_function_table.get(60)(arg0,arg1,arg2)}function __wbg_elem_binding6(arg0,arg1,arg2){wasm.__wbg_function_table.get(61)(arg0,arg1,addHeapObject(arg2))}function __wbg_elem_binding7(arg0,arg1,arg2,arg3,arg4){wasm.__wbg_function_table.get(24)(arg0,arg1,addHeapObject(arg2),arg3,addHeapObject(arg4))}function __wbg_elem_binding8(arg0,arg1,arg2,arg3){wasm.__wbg_function_table.get(28)(arg0,arg1,addHeapObject(arg2),addHeapObject(arg3))}export function start(){wasm.start()}function handleError(e){wasm.__wbindgen_exn_store(addHeapObject(e))}function getObject(idx){return heap[idx]}function dropObject(idx){if(idx<36)return;heap[idx]=heap_next;heap_next=idx}function takeObject(idx){const ret=getObject(idx);dropObject(idx);return ret}function notDefined(what){return()=>{throw new Error(`${what} is not defined`)}}let cachedTextDecoder=new TextDecoder("utf-8",{ignoreBOM:true,fatal:true});cachedTextDecoder.decode();let cachegetUint8Memory=null;function getUint8Memory(){if(cachegetUint8Memory===null||cachegetUint8Memory.buffer!==wasm.memory.buffer){cachegetUint8Memory=new Uint8Array(wasm.memory.buffer)}return cachegetUint8Memory}function getStringFromWasm(ptr,len){return cachedTextDecoder.decode(getUint8Memory().subarray(ptr,ptr+len))}function isLikeNone(x){return x===undefined||x===null}let WASM_VECTOR_LEN=0;let cachedTextEncoder=new TextEncoder("utf-8");const encodeString=typeof cachedTextEncoder.encodeInto==="function"?function(arg,view){return cachedTextEncoder.encodeInto(arg,view)}:function(arg,view){const buf=cachedTextEncoder.encode(arg);view.set(buf);return{read:arg.length,written:buf.length}};function passStringToWasm(arg){let len=arg.length;let ptr=wasm.__wbindgen_malloc(len);const mem=getUint8Memory();let offset=0;for(;offset<len;offset++){const code=arg.charCodeAt(offset);if(code>127)break;mem[ptr+offset]=code}if(offset!==len){if(offset!==0){arg=arg.slice(offset)}ptr=wasm.__wbindgen_realloc(ptr,len,len=offset+arg.length*3);const view=getUint8Memory().subarray(ptr+offset,ptr+len);const ret=encodeString(arg,view);offset+=ret.written}WASM_VECTOR_LEN=offset;return ptr}let cachegetInt32Memory=null;function getInt32Memory(){if(cachegetInt32Memory===null||cachegetInt32Memory.buffer!==wasm.memory.buffer){cachegetInt32Memory=new Int32Array(wasm.memory.buffer)}return cachegetInt32Memory}let cachegetUint32Memory=null;function getUint32Memory(){if(cachegetUint32Memory===null||cachegetUint32Memory.buffer!==wasm.memory.buffer){cachegetUint32Memory=new Uint32Array(wasm.memory.buffer)}return cachegetUint32Memory}function debugString(val){const type=typeof val;if(type=="number"||type=="boolean"||val==null){return`${val}`}if(type=="string"){return`"${val}"`}if(type=="symbol"){const description=val.description;if(description==null){return"Symbol"}else{return`Symbol(${description})`}}if(type=="function"){const name=val.name;if(typeof name=="string"&&name.length>0){return`Function(${name})`}else{return"Function"}}if(Array.isArray(val)){const length=val.length;let debug="[";if(length>0){debug+=debugString(val[0])}for(let i=1;i<length;i++){debug+=", "+debugString(val[i])}debug+="]";return debug}const builtInMatches=/\[object ([^\]]+)\]/.exec(toString.call(val));let className;if(builtInMatches.length>1){className=builtInMatches[1]}else{return toString.call(val)}if(className=="Object"){try{return"Object("+JSON.stringify(val)+")"}catch(_){return"Object"}}if(val instanceof Error){return`${val.name}: ${val.message}\n${val.stack}`}return className}function init(module){if(typeof module==="undefined"){module=import.meta.url.replace(/\.js$/,"_bg.wasm")}let result;const imports={};imports.wbg={};imports.wbg.__widl_f_close_WebSocket=function(arg0){try{getObject(arg0).close()}catch(e){handleError(e)}};imports.wbg.__wbindgen_object_drop_ref=function(arg0){takeObject(arg0)};imports.wbg.__wbg_clearTimeout_42a8676f07d366c5=typeof clearTimeout=="function"?clearTimeout:notDefined("clearTimeout");imports.wbg.__wbindgen_cb_drop=function(arg0){const obj=takeObject(arg0).original;if(obj.cnt--==1){obj.a=0;return true}const ret=false;return ret};imports.wbg.__widl_f_get_element_by_id_Document=function(arg0,arg1,arg2){const ret=getObject(arg0).getElementById(getStringFromWasm(arg1,arg2));return isLikeNone(ret)?0:addHeapObject(ret)};imports.wbg.__widl_instanceof_HTMLInputElement=function(arg0){const ret=getObject(arg0)instanceof HTMLInputElement;return ret};imports.wbg.__widl_f_value_HTMLInputElement=function(arg0,arg1){const ret=getObject(arg1).value;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_new_WebSocket=function(arg0,arg1){try{const ret=new WebSocket(getStringFromWasm(arg0,arg1));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_set_onopen_WebSocket=function(arg0,arg1){getObject(arg0).onopen=getObject(arg1)};imports.wbg.__wbindgen_cb_forget=function(arg0){takeObject(arg0)};imports.wbg.__widl_f_set_onclose_WebSocket=function(arg0,arg1){getObject(arg0).onclose=getObject(arg1)};imports.wbg.__widl_f_set_onmessage_WebSocket=function(arg0,arg1){getObject(arg0).onmessage=getObject(arg1)};imports.wbg.__widl_f_set_onerror_WebSocket=function(arg0,arg1){getObject(arg0).onerror=getObject(arg1)};imports.wbg.__widl_f_data_MessageEvent=function(arg0){const ret=getObject(arg0).data;return addHeapObject(ret)};imports.wbg.__wbindgen_string_get=function(arg0,arg1){const obj=getObject(arg0);if(typeof obj!=="string")return 0;const ptr=passStringToWasm(obj);getUint32Memory()[arg1/4]=WASM_VECTOR_LEN;const ret=ptr;return ret};imports.wbg.__wbg_new_59cb74e423758ede=function(){const ret=new Error;return addHeapObject(ret)};imports.wbg.__wbg_stack_558ba5917b466edd=function(arg0,arg1){const ret=getObject(arg1).stack;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__wbg_error_4bb6c2a97407129a=function(arg0,arg1){const v0=getStringFromWasm(arg0,arg1).slice();wasm.__wbindgen_free(arg0,arg1*1);console.error(v0)};imports.wbg.__wbindgen_string_new=function(arg0,arg1){const ret=getStringFromWasm(arg0,arg1);return addHeapObject(ret)};imports.wbg.__wbindgen_debug_string=function(arg0,arg1){const ret=debugString(getObject(arg1));const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_location_Window=function(arg0){const ret=getObject(arg0).location;return addHeapObject(ret)};imports.wbg.__widl_f_pathname_Location=function(arg0,arg1){try{const ret=getObject(arg1).pathname;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1}catch(e){handleError(e)}};imports.wbg.__widl_f_hash_Location=function(arg0,arg1){try{const ret=getObject(arg1).hash;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1}catch(e){handleError(e)}};imports.wbg.__widl_f_search_Location=function(arg0,arg1){try{const ret=getObject(arg1).search;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1}catch(e){handleError(e)}};imports.wbg.__widl_instanceof_Element=function(arg0){const ret=getObject(arg0)instanceof Element;return ret};imports.wbg.__widl_f_set_attribute_Element=function(arg0,arg1,arg2,arg3,arg4){try{getObject(arg0).setAttribute(getStringFromWasm(arg1,arg2),getStringFromWasm(arg3,arg4))}catch(e){handleError(e)}};imports.wbg.__widl_f_node_type_Node=function(arg0){const ret=getObject(arg0).nodeType;return ret};imports.wbg.__widl_f_remove_attribute_Element=function(arg0,arg1,arg2){try{getObject(arg0).removeAttribute(getStringFromWasm(arg1,arg2))}catch(e){handleError(e)}};imports.wbg.__widl_f_append_child_Node=function(arg0,arg1){try{const ret=getObject(arg0).appendChild(getObject(arg1));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_insert_before_Node=function(arg0,arg1,arg2){try{const ret=getObject(arg0).insertBefore(getObject(arg1),getObject(arg2));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_cancel_animation_frame_Window=function(arg0,arg1){try{getObject(arg0).cancelAnimationFrame(arg1)}catch(e){handleError(e)}};imports.wbg.__widl_f_document_Window=function(arg0){const ret=getObject(arg0).document;return isLikeNone(ret)?0:addHeapObject(ret)};imports.wbg.__widl_instanceof_HTMLTextAreaElement=function(arg0){const ret=getObject(arg0)instanceof HTMLTextAreaElement;return ret};imports.wbg.__widl_instanceof_HTMLSelectElement=function(arg0){const ret=getObject(arg0)instanceof HTMLSelectElement;return ret};imports.wbg.__widl_instanceof_HTMLProgressElement=function(arg0){const ret=getObject(arg0)instanceof HTMLProgressElement;return ret};imports.wbg.__widl_instanceof_HTMLOptionElement=function(arg0){const ret=getObject(arg0)instanceof HTMLOptionElement;return ret};imports.wbg.__widl_instanceof_HTMLButtonElement=function(arg0){const ret=getObject(arg0)instanceof HTMLButtonElement;return ret};imports.wbg.__widl_instanceof_HTMLDataElement=function(arg0){const ret=getObject(arg0)instanceof HTMLDataElement;return ret};imports.wbg.__widl_instanceof_HTMLMeterElement=function(arg0){const ret=getObject(arg0)instanceof HTMLMeterElement;return ret};imports.wbg.__widl_instanceof_HTMLLIElement=function(arg0){const ret=getObject(arg0)instanceof HTMLLIElement;return ret};imports.wbg.__widl_instanceof_HTMLOutputElement=function(arg0){const ret=getObject(arg0)instanceof HTMLOutputElement;return ret};imports.wbg.__widl_instanceof_HTMLParamElement=function(arg0){const ret=getObject(arg0)instanceof HTMLParamElement;return ret};imports.wbg.__widl_f_type_HTMLInputElement=function(arg0,arg1){const ret=getObject(arg1).type;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_set_value_HTMLInputElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLTextAreaElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLSelectElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLProgressElement=function(arg0,arg1){getObject(arg0).value=arg1};imports.wbg.__widl_f_set_value_HTMLOptionElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLButtonElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLDataElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLMeterElement=function(arg0,arg1){getObject(arg0).value=arg1};imports.wbg.__widl_f_set_value_HTMLLIElement=function(arg0,arg1){getObject(arg0).value=arg1};imports.wbg.__widl_f_set_value_HTMLOutputElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_f_set_value_HTMLParamElement=function(arg0,arg1,arg2){getObject(arg0).value=getStringFromWasm(arg1,arg2)};imports.wbg.__widl_instanceof_HTMLMenuItemElement=function(arg0){const ret=getObject(arg0)instanceof HTMLMenuItemElement;return ret};imports.wbg.__widl_f_set_checked_HTMLInputElement=function(arg0,arg1){getObject(arg0).checked=arg1!==0};imports.wbg.__widl_f_set_checked_HTMLMenuItemElement=function(arg0,arg1){getObject(arg0).checked=arg1!==0};imports.wbg.__widl_f_abort_AbortController=function(arg0){getObject(arg0).abort()};imports.wbg.__widl_f_tag_name_Element=function(arg0,arg1){const ret=getObject(arg1).tagName;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_get_attribute_names_Element=function(arg0){const ret=getObject(arg0).getAttributeNames();return addHeapObject(ret)};imports.wbg.__wbg_forEach_e651488daf2c21cc=function(arg0,arg1,arg2){const state0={a:arg1,b:arg2};const cb0=(arg0,arg1,arg2)=>{const a=state0.a;state0.a=0;try{return __wbg_elem_binding7(a,state0.b,arg0,arg1,arg2)}finally{state0.a=a}};try{getObject(arg0).forEach(cb0)}finally{state0.a=state0.b=0}};imports.wbg.__widl_f_namespace_uri_Element=function(arg0,arg1){const ret=getObject(arg1).namespaceURI;const ptr0=isLikeNone(ret)?0:passStringToWasm(ret);const len0=WASM_VECTOR_LEN;const ret0=ptr0;const ret1=len0;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_child_nodes_Node=function(arg0){const ret=getObject(arg0).childNodes;return addHeapObject(ret)};imports.wbg.__widl_f_length_NodeList=function(arg0){const ret=getObject(arg0).length;return ret};imports.wbg.__widl_f_get_NodeList=function(arg0,arg1){const ret=getObject(arg0)[arg1>>>0];return isLikeNone(ret)?0:addHeapObject(ret)};imports.wbg.__widl_f_text_content_Node=function(arg0,arg1){const ret=getObject(arg1).textContent;const ptr0=isLikeNone(ret)?0:passStringToWasm(ret);const len0=WASM_VECTOR_LEN;const ret0=ptr0;const ret1=len0;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_query_selector_Document=function(arg0,arg1,arg2){try{const ret=getObject(arg0).querySelector(getStringFromWasm(arg1,arg2));return isLikeNone(ret)?0:addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_first_child_Node=function(arg0){const ret=getObject(arg0).firstChild;return isLikeNone(ret)?0:addHeapObject(ret)};imports.wbg.__widl_f_remove_child_Node=function(arg0,arg1){try{const ret=getObject(arg0).removeChild(getObject(arg1));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_add_event_listener_with_callback_EventTarget=function(arg0,arg1,arg2,arg3){try{getObject(arg0).addEventListener(getStringFromWasm(arg1,arg2),getObject(arg3))}catch(e){handleError(e)}};imports.wbg.__widl_f_error_1_=function(arg0){console.error(getObject(arg0))};imports.wbg.__wbindgen_object_clone_ref=function(arg0){const ret=getObject(arg0);return addHeapObject(ret)};imports.wbg.__widl_f_remove_event_listener_with_callback_EventTarget=function(arg0,arg1,arg2,arg3){try{getObject(arg0).removeEventListener(getStringFromWasm(arg1,arg2),getObject(arg3))}catch(e){handleError(e)}};imports.wbg.__wbg_new_de17f04ab3be4063=function(){const ret=new Object;return addHeapObject(ret)};imports.wbg.__widl_f_new_Headers=function(){try{const ret=new Headers;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbg_set_e11a72d9733dadef=function(arg0,arg1,arg2){try{const ret=Reflect.set(getObject(arg0),getObject(arg1),getObject(arg2));return ret}catch(e){handleError(e)}};imports.wbg.__widl_f_append_Headers=function(arg0,arg1,arg2,arg3,arg4){try{getObject(arg0).append(getStringFromWasm(arg1,arg2),getStringFromWasm(arg3,arg4))}catch(e){handleError(e)}};imports.wbg.__wbg_setTimeout_53c0997134972ce3=function(arg0,arg1){const ret=setTimeout(getObject(arg0),arg1);return ret};imports.wbg.__widl_f_signal_AbortController=function(arg0){const ret=getObject(arg0).signal;return addHeapObject(ret)};imports.wbg.__widl_f_fetch_with_str_and_init_Window=function(arg0,arg1,arg2,arg3){const ret=getObject(arg0).fetch(getStringFromWasm(arg1,arg2),getObject(arg3));return addHeapObject(ret)};imports.wbg.__widl_f_text_Response=function(arg0){try{const ret=getObject(arg0).text();return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_status_text_Response=function(arg0,arg1){const ret=getObject(arg1).statusText;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_status_Response=function(arg0){const ret=getObject(arg0).status;return ret};imports.wbg.__widl_f_create_element_Document=function(arg0,arg1,arg2){try{const ret=getObject(arg0).createElement(getStringFromWasm(arg1,arg2));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_create_element_ns_Document=function(arg0,arg1,arg2,arg3,arg4){try{const ret=getObject(arg0).createElementNS(arg1===0?undefined:getStringFromWasm(arg1,arg2),getStringFromWasm(arg3,arg4));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_create_text_node_Document=function(arg0,arg1,arg2){const ret=getObject(arg0).createTextNode(getStringFromWasm(arg1,arg2));return addHeapObject(ret)};imports.wbg.__widl_instanceof_Node=function(arg0){const ret=getObject(arg0)instanceof Node;return ret};imports.wbg.__widl_instanceof_HTMLElement=function(arg0){const ret=getObject(arg0)instanceof HTMLElement;return ret};imports.wbg.__widl_f_focus_HTMLElement=function(arg0){try{getObject(arg0).focus()}catch(e){handleError(e)}};imports.wbg.__widl_f_next_sibling_Node=function(arg0){const ret=getObject(arg0).nextSibling;return isLikeNone(ret)?0:addHeapObject(ret)};imports.wbg.__widl_f_replace_child_Node=function(arg0,arg1,arg2){try{const ret=getObject(arg0).replaceChild(getObject(arg1),getObject(arg2));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_set_text_content_Node=function(arg0,arg1,arg2){getObject(arg0).textContent=arg1===0?undefined:getStringFromWasm(arg1,arg2)};imports.wbg.__wbg_resolve_04ca3cb0d333a4f0=function(arg0){const ret=Promise.resolve(getObject(arg0));return addHeapObject(ret)};imports.wbg.__widl_f_request_animation_frame_Window=function(arg0,arg1){try{const ret=getObject(arg0).requestAnimationFrame(getObject(arg1));return ret}catch(e){handleError(e)}};imports.wbg.__wbg_static_accessor_TELETERM_CONFIG_82484f76e33c0b8c=function(){const ret=TELETERM_CONFIG;return addHeapObject(ret)};imports.wbg.__wbindgen_json_serialize=function(arg0,arg1){const obj=getObject(arg1);const ret=JSON.stringify(obj===undefined?null:obj);const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_target_Event=function(arg0){const ret=getObject(arg0).target;return isLikeNone(ret)?0:addHeapObject(ret)};imports.wbg.__widl_f_closest_Element=function(arg0,arg1,arg2){try{const ret=getObject(arg0).closest(getStringFromWasm(arg1,arg2));return isLikeNone(ret)?0:addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_get_attribute_Element=function(arg0,arg1,arg2,arg3){const ret=getObject(arg1).getAttribute(getStringFromWasm(arg2,arg3));const ptr0=isLikeNone(ret)?0:passStringToWasm(ret);const len0=WASM_VECTOR_LEN;const ret0=ptr0;const ret1=len0;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_f_prevent_default_Event=function(arg0){getObject(arg0).preventDefault()};imports.wbg.__wbindgen_json_parse=function(arg0,arg1){const ret=JSON.parse(getStringFromWasm(arg0,arg1));return addHeapObject(ret)};imports.wbg.__widl_f_history_Window=function(arg0){try{const ret=getObject(arg0).history;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_f_push_state_with_url_History=function(arg0,arg1,arg2,arg3,arg4,arg5){try{getObject(arg0).pushState(getObject(arg1),getStringFromWasm(arg2,arg3),arg4===0?undefined:getStringFromWasm(arg4,arg5))}catch(e){handleError(e)}};imports.wbg.__widl_instanceof_HashChangeEvent=function(arg0){const ret=getObject(arg0)instanceof HashChangeEvent;return ret};imports.wbg.__widl_f_new_url_HashChangeEvent=function(arg0,arg1){const ret=getObject(arg1).newURL;const ret0=passStringToWasm(ret);const ret1=WASM_VECTOR_LEN;getInt32Memory()[arg0/4+0]=ret0;getInt32Memory()[arg0/4+1]=ret1};imports.wbg.__widl_instanceof_PopStateEvent=function(arg0){const ret=getObject(arg0)instanceof PopStateEvent;return ret};imports.wbg.__widl_f_state_PopStateEvent=function(arg0){const ret=getObject(arg0).state;return addHeapObject(ret)};imports.wbg.__widl_f_new_AbortController=function(){try{const ret=new AbortController;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbindgen_throw=function(arg0,arg1){throw new Error(getStringFromWasm(arg0,arg1))};imports.wbg.__wbg_new_5e8d465c199e6ff3=function(arg0,arg1){const state0={a:arg0,b:arg1};const cb0=(arg0,arg1)=>{const a=state0.a;state0.a=0;try{return __wbg_elem_binding8(a,state0.b,arg0,arg1)}finally{state0.a=a}};try{const ret=new Promise(cb0);return addHeapObject(ret)}finally{state0.a=state0.b=0}};imports.wbg.__wbg_call_34f87007c5d2a397=function(arg0,arg1,arg2){try{const ret=getObject(arg0).call(getObject(arg1),getObject(arg2));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbg_then_486e2e2b1fb1bbf4=function(arg0,arg1,arg2){const ret=getObject(arg0).then(getObject(arg1),getObject(arg2));return addHeapObject(ret)};imports.wbg.__wbg_then_1fa2e92ee4bdbc93=function(arg0,arg1){const ret=getObject(arg0).then(getObject(arg1));return addHeapObject(ret)};imports.wbg.__wbg_globalThis_4fa2faeae7a7a380=function(){try{const ret=globalThis.globalThis;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbg_self_ed02073ec1d8fef4=function(){try{const ret=self.self;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbg_window_356847be61f4a80f=function(){try{const ret=window.window;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbg_global_6580a67633b0dbc1=function(){try{const ret=global.global;return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__wbindgen_is_undefined=function(arg0){const ret=getObject(arg0)===undefined;return ret};imports.wbg.__wbg_newnoargs_0c3c518a7f7c56bf=function(arg0,arg1){const ret=new Function(getStringFromWasm(arg0,arg1));return addHeapObject(ret)};imports.wbg.__wbg_call_aa56d0132fec7569=function(arg0,arg1){try{const ret=getObject(arg0).call(getObject(arg1));return addHeapObject(ret)}catch(e){handleError(e)}};imports.wbg.__widl_instanceof_Window=function(arg0){const ret=getObject(arg0)instanceof Window;return ret};imports.wbg.__widl_f_debug_1_=function(arg0){console.debug(getObject(arg0))};imports.wbg.__widl_f_info_1_=function(arg0){console.info(getObject(arg0))};imports.wbg.__widl_f_log_1_=function(arg0){console.log(getObject(arg0))};imports.wbg.__widl_f_warn_1_=function(arg0){console.warn(getObject(arg0))};imports.wbg.__wbindgen_closure_wrapper186=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=arg0=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding1(a,state.b,arg0)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(40)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};imports.wbg.__wbindgen_closure_wrapper187=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=arg0=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding2(a,state.b,arg0)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(40)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};imports.wbg.__wbindgen_closure_wrapper799=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=arg0=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding6(a,state.b,arg0)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(40)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};imports.wbg.__wbindgen_closure_wrapper188=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=arg0=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding0(a,state.b,arg0)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(40)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};imports.wbg.__wbindgen_closure_wrapper504=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=()=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding3(a,state.b)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(40)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};imports.wbg.__wbindgen_closure_wrapper629=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=arg0=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding4(a,state.b,arg0)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(40)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};imports.wbg.__wbindgen_closure_wrapper699=function(arg0,arg1,arg2){const state={a:arg0,b:arg1,cnt:1};const real=arg0=>{state.cnt++;const a=state.a;state.a=0;try{return __wbg_elem_binding5(a,state.b,arg0)}finally{if(--state.cnt===0)wasm.__wbg_function_table.get(40)(a,state.b);else state.a=a}};real.original=state;const ret=real;return addHeapObject(ret)};if(typeof URL==="function"&&module instanceof URL||typeof module==="string"||typeof Request==="function"&&module instanceof Request){const response=fetch(module);if(typeof WebAssembly.instantiateStreaming==="function"){result=WebAssembly.instantiateStreaming(response,imports).catch(e=>{return response.then(r=>{if(r.headers.get("Content-Type")!="application/wasm"){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);return r.arrayBuffer()}else{throw e}}).then(bytes=>WebAssembly.instantiate(bytes,imports))})}else{result=response.then(r=>r.arrayBuffer()).then(bytes=>WebAssembly.instantiate(bytes,imports))}}else{result=WebAssembly.instantiate(module,imports).then(result=>{if(result instanceof WebAssembly.Instance){return{instance:result,module:module}}else{return result}})}return result.then(({instance:instance,module:module})=>{wasm=instance.exports;init.__wbindgen_wasm_module=module;wasm.__wbindgen_start();return wasm})}export default init;
diff --git a/teleterm/static/teleterm_web_bg.wasm b/teleterm/static/teleterm_web_bg.wasm
index 5f9bb32..22f2f98 100644
--- a/teleterm/static/teleterm_web_bg.wasm
+++ b/teleterm/static/teleterm_web_bg.wasm
Binary files differ